From abafc415305c86079861809a8326dfc7d0571f7c Mon Sep 17 00:00:00 2001 From: Max Braungardt Date: Mon, 26 Mar 2018 21:21:09 +0200 Subject: [PATCH] Updated input. Changed LED driver. --- sketches/input/input.c | 74 +++++++++++++++++++++++++++++------ sketches/input/input_orig.cc | 50 +++++++++++++++++++++++ sketches/input/input_orig.o | Bin 0 -> 7488 bytes 3 files changed, 111 insertions(+), 13 deletions(-) create mode 100644 sketches/input/input_orig.cc create mode 100755 sketches/input/input_orig.o diff --git a/sketches/input/input.c b/sketches/input/input.c index c367563..160dad0 100644 --- a/sketches/input/input.c +++ b/sketches/input/input.c @@ -8,11 +8,45 @@ //~ #include #include -uint8_t volatile status = 0; +#define HUE_MAX 610 +#define HUE_MIN 350 +#define STEPS 8 +//~ const uint32_t colorSteps = (HUE_MAX - HUE_MIN) / STEPS; +const uint32_t colorSteps = 5; -ISR(INT1_vect){ +uint8_t volatile status = 0; +uint32_t volatile time = 0; +uint32_t volatile T_half = 0; +uint32_t volatile oldColor = 0; +uint32_t volatile oldTime = 0; + +//~ ISR(INT0_vect) { + //~ status = 1; + //~ T_half = time + TCNT1; + //~ TCNT1 = 0; // Reset Timer/Counter1 + //~ time = 0; + //~ PORTC += 1; + //~ PORTC ^= 0x04; + +//~ } + +ISR(INT1_vect) { status = 1; - //~ PCORT0 = 1; + T_half = time + TCNT1; + TCNT1 = 0; // Reset Timer/Counter1 + time = 0; + oldColor = 0; + oldTime = 0; + PORTC ^= 1; + PORTC &= 0x01; + //~ PORTC ^= 0x04; + +} + +ISR(TIMER1_OVF_vect) { + time += 0x00010000; + //~ PORTC += 1; + //~ PORTC ^= 0x04; } int main(){ @@ -20,11 +54,16 @@ int main(){ //~ PORTD |= (1 << PORTD2); // turn On the Pull-up // PD2 is now an input with pull-up enabled + + EIMSK |= 0x02; // External Interrupt Mask Register + // Enable INT1 (PIN5) for interrupt + EICRA |= 0x0c; // External Interrupt Control Register + // INT1 on rising edge - EICRA |= 0x0F; // External Interrupt Control Register - // INT0 on rising edge - EIMSK |= 0x03; // External Interrupt Mask Register - // Enable INT0 for interrupt + TIMSK1 |= 0x01; // Timer/Counter1 Interrupt Mask Register + // Enable overflow interrupt + TCCR1B |= 0x01; // Timer/Counter1 Control Register B + // Prescale Factor 1 SREG |= 0x80; // Status Register // Enable global interrupts @@ -35,16 +74,25 @@ int main(){ //~ PCMSK2 = 0xff; // Pin Change Mask Register 2 //~ // Enabled PCINT[23;16] (Single Pins) - DDRC = 0xff; + DDRC = 0x3f; + PORTC = 0x00; - while(1){ - if(status){ - PORTC ^= 0x01; - status = 0; + while(1) { + uint32_t T_step = T_half / colorSteps; + //~ uint32_t colorStep = (time + TCNT1) / T_step; + + //~ if (colorStep > oldColor) { + //~ // TODO next color + //~ PORTC += 0x02; + //~ oldColor = colorStep; + //~ } + + if(time + TCNT1 > oldTime + T_step){ + oldTime += T_step; + PORTC += 0x02; } - PORTC ^= 0x02; } return 0; } diff --git a/sketches/input/input_orig.cc b/sketches/input/input_orig.cc new file mode 100644 index 0000000..c367563 --- /dev/null +++ b/sketches/input/input_orig.cc @@ -0,0 +1,50 @@ +#include +#include +#include +#define F_CPU 20000000UL +#include +#include +//~ #define BAUD 9600 +//~ #include +#include + +uint8_t volatile status = 0; + +ISR(INT1_vect){ + status = 1; + //~ PCORT0 = 1; +} + +int main(){ + + //~ PORTD |= (1 << PORTD2); // turn On the Pull-up + // PD2 is now an input with pull-up enabled + + + EICRA |= 0x0F; // External Interrupt Control Register + // INT0 on rising edge + EIMSK |= 0x03; // External Interrupt Mask Register + // Enable INT0 for interrupt + + SREG |= 0x80; // Status Register + // Enable global interrupts + + //~ PCICR |= 0x04; // Pin Change Interrupt Control Register + //~ // Enabled PCINT[23;16] -> Pin 13,12,11,6,5,4,3,2 + //~ PCIFR |= 0x04; // Pin Change Interrupt Flag Register + + //~ PCMSK2 = 0xff; // Pin Change Mask Register 2 + //~ // Enabled PCINT[23;16] (Single Pins) + DDRC = 0xff; + + + + while(1){ + if(status){ + PORTC ^= 0x01; + status = 0; + } + PORTC ^= 0x02; + } + return 0; +} diff --git a/sketches/input/input_orig.o b/sketches/input/input_orig.o new file mode 100755 index 0000000000000000000000000000000000000000..f68d55813fc45ed8df4b0f19c3ebcadae4d79428 GIT binary patch literal 7488 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 literal 0 HcmV?d00001