From 8079072422d60a0d69a2be96ff8c98dd7de907b4 Mon Sep 17 00:00:00 2001 From: Max Braungardt Date: Wed, 4 Apr 2018 19:37:26 +0200 Subject: [PATCH] Updated pendulum.c, timer.h/.c to use timer.h/.c --- sketches/pendulum/pendulum.c | 44 +++++++++--------------------------- sketches/pendulum/timer.c | 4 ++-- sketches/pendulum/timer.h | 4 ++-- 3 files changed, 15 insertions(+), 37 deletions(-) diff --git a/sketches/pendulum/pendulum.c b/sketches/pendulum/pendulum.c index 66de750..2641115 100644 --- a/sketches/pendulum/pendulum.c +++ b/sketches/pendulum/pendulum.c @@ -7,6 +7,7 @@ #include #include +#include "timer.h" #include "color_hsv.h" #define HUE_MAX 610 #define HUE_MIN 350 @@ -39,7 +40,7 @@ uint8_t volatile triggered = 0; // On External Interrupt: ISR(INT1_vect) { - uint32_t now = time + TCNT1; + uint32_t now = timer_now32(); // time + TCNT1; //~ triggered = (triggered + 1) % 4; if(now > cooldown) { triggered = true; @@ -58,7 +59,8 @@ ISR(INT1_vect) { //~ TCNT1 = 0; // Reset Timer/Counter1 TCNT0 = 0; // Reset Timer/Counter0 time = 0; - oldTime = 0; + oldTime = 0; + timer_reset(); } //~ triggered = 0; min = HUE_MID; @@ -67,9 +69,10 @@ ISR(INT1_vect) { } //~ // On Timer Overflow Interrupt: -ISR(TIMER1_OVF_vect) { - time += 0x00010000; -} +//~ ISR(TIMER1_OVF_vect) { + //~ // time += 0x00010000; + //~ timer_overflow(); +//~ } int main(void) { @@ -90,33 +93,8 @@ int main(void) { DDRC = 0x3f; // Digital Direction PORTC[5:0] = output PORTC = 0x00; - // Timer concatenation - // Timer 2 (8 Bit, 50 ns) - //~ DDRB |= 0x08; // Digital Direction PORTB3 = output (PIN17 OC2A) - //~ PORTB |= 0x08; // POTRB3 = HIGH - //~ TCNT2 = 0x00; // Timer/Counter2 value register clear - //~ OCR2A = 0xff; // Timer/Counter2 output compare register A - //~ TIMSK2 |= 0x02; // Timer/Counter2 Interrupt Mask Register - //~ // Enable compare A match interrupt - //~ TCCR2A |= 0x40; // Timer/Counter2 Control Register A - //~ // Toggle OC2A on compare match - //~ TCCR2B |= 0x01; // Timer/Counter2 Control Register B - //~ // Prescale Factor 1 - //~ // Timer 1 (16 Bit, 25.55 µs) - //~ DDRB |= 0x02; // Digital Direction PORTB1 = output (PIN15 OC1A) - //~ PORTB |= 0x02; // POTRB1 = HIGH - //~ TCNT1 = 0x0000; // Timer/Counter1 value register clear - //~ OCR1A = 0xffff; // Timer/Counter1 output compare register A - //~ TIMSK1 |= 0x02; // Timer/Counter1 Interrupt Mask Register - //~ // Enable compare register A match interrupt - //~ TCCR1A |= 0x40; // Timer/Counter1 Control Register A - //~ // Toggle OC1A on compare match - //~ TCCR1B |= 0x07; // Timer/Counter1 Control Register B - //~ // External Clock Source on T1 (PIN11) on rising edge - //~ // Timer 0 (8 Bit, 3,34891515 s) - //~ TCNT0 = 0x00; // Timer/Counter0 value register clear - //~ TCCR0B |= 0x07; // Timer/Counter0 Control Register B - //~ // External clock source on T0 (PIN6, PD4) on rising edge + timer_init(); + timer_reset(); // Init color hsv_t colorsHSV[LEDS]; @@ -150,7 +128,7 @@ int main(void) { //~ uint64_t time1 = TCNT1; //~ uint64_t time0 = TCNT0; //~ uint64_t now = time2 | (time1 << 9) | (time0 << 26); - uint32_t now = time + TCNT1; + uint32_t now = timer_now32(); // time + TCNT1; //~ if(now > delay) { //~ PORTC |= 0x08; // PORTC3 = HIGH //~ } diff --git a/sketches/pendulum/timer.c b/sketches/pendulum/timer.c index cb9e611..3564b69 100644 --- a/sketches/pendulum/timer.c +++ b/sketches/pendulum/timer.c @@ -31,8 +31,8 @@ void timer_reset(void) highBits64 = 0; } -// ISR(TIMER1_OVF_vect) -void timer_overflow(void) +ISR(TIMER1_OVF_vect) +//~ void timer_overflow(void) { highBits32 += 0x01000000; highBits64 += 0x0000000001000000; diff --git a/sketches/pendulum/timer.h b/sketches/pendulum/timer.h index 44a7816..6883187 100644 --- a/sketches/pendulum/timer.h +++ b/sketches/pendulum/timer.h @@ -7,9 +7,9 @@ void timer_init(void); void timer_reset(void); -void timer_overflow(void); +// void timer_overflow(void); -// ISR(TIMER1_OVF_vect); +ISR(TIMER1_OVF_vect); uint32_t timer_now32(void); uint64_t timer_now64(void);