From 5fe28a0205daee932f3adb3b5ef2705f4411141c Mon Sep 17 00:00:00 2001 From: Aaron Mueller Date: Sun, 22 Jun 2014 21:06:06 +0200 Subject: [PATCH] Some small performance improvements from Thomas Kopp. --- firmware/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/firmware/main.c b/firmware/main.c index d96f667..7a076ef 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -38,7 +38,7 @@ void init() PORTD = 0b01000000; // Setup Timer-Interrupt "TIMER1" compare match interrupt - TIMSK |= (1 << OCIE1A); + TIMSK = (1 << OCIE1A); // Refreshrate is 100Hz of the whole LEDCube. // The ISR comes up at 300Hz. @@ -48,7 +48,7 @@ void init() OCR1AL = 0b01110001; // Set prescale to 64 and clear the counter on compare match. - TCCR1B |= (1 << CS11) | (1 << CS10) | (1 << WGM12); + TCCR1B = (1 << CS11) | (1 << CS10) | (1 << WGM12); sei(); // Enable interrupts global } @@ -57,8 +57,7 @@ void init() */ ISR (TIMER1_COMPA_vect) { - - if ( !(--delay) ) // decrease the counter and check if we are done with waiting + if (!(--delay)) // decrease the counter and check if we are done with waiting { if (frmnum == MAX_EEPROM_FRAMES) { @@ -82,6 +81,7 @@ ISR (TIMER1_COMPA_vect) } // !!!Don't touch the 6th bit (9th LED wire)!!! + // PORTD = __, 9, C, B, A, D+, D-, __ PORTD &= 0b11000111; // delete bit 3 to 6 (bit 3 to 5 = layer 0 to 2 uint8_t tmp = level * 9; // calculate the position in the frame @@ -90,7 +90,7 @@ ISR (TIMER1_COMPA_vect) // 0 = led is on, 1 = led is off PORTB = ~((frame >> tmp) & 0xff); - if ( (((frame >> tmp) >> 8) & 0x01) ) + if ((((frame >> tmp) >> 8) & 0x01)) PORTD &= ~(1 << 6); // turn the 9th LED on else PORTD |= (1 << 6); // turn the 9th LED off