#include #include #include "config.h" #include "led.h" static volatile uint8_t led_btnes; static struct LED_DIGS display; void led_init(void) { // Set outputs ANODES_DIR |= DIG0_ANODE | DIG1_ANODE | DIG2_ANODE; LED_DIR |= 0x3F; // 0b00111111 // Clear LEDs ANODES_PORT = DIG0_ANODE | DIG1_ANODE | DIG2_ANODE; LED_PORT |= 0x3F; // 0b00111111 TCCR0 |= (1<= pwm_counter ? ~DIG0_ANODE : 0xFF; break; case 2: LED_PORT = ~display.dig1; ANODES_PORT = led_btnes >= pwm_counter ? ~DIG1_ANODE : 0xFF; break; case 4: LED_PORT = ~display.dig2; ANODES_PORT = led_btnes >= pwm_counter ? ~DIG2_ANODE : 0xFF; break; } // 31.25 kHz / 250 = 125 Hz if(!counter) { curr_anode <<= 1; if(curr_anode > 4) curr_anode = 1; counter = 250; } --counter; ++pwm_counter; }