This is an old revision of the document!
Blinking LED
/* Labor 2 example Blincking LED using timer Raivo Sell 2008 LED = 0 (ON) LED = 1 (OFF) PORT direction: 1-output 0-input */ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> static int i; //globale variable int SAGEDUS = 10; // blincking frequency #define INV(x) ^=(1<<x) //inversting bit in PORT x #define LED 4 // Blincking LED (in this example LED2 (yellow) // Interrupt function - starts on timer buffer overrun ISR (TIMER1_OVF_vect){ i++; // increments every time when function is executed if (i>SAGEDUS){ // LED port is inverted when i reaches constant SAGEDUS PORTC INV(LED); // Inverting LED i=0; // repeater is set to zero } } int main (void) { // Timer control regiters TCCR1A = 0x00; TCCR1B = _BV(CS10); //clk/1 (No prescaling) DDRC = 0x38; // DDRC 0bXX111000 PORTC = 0x3F; // PORTC 0bXX111111 TIMSK = _BV (TOIE1); // Overrun interrupt is enabled sei (); // Global interrupts are enabled while(1); // endless loop // No action here, LED is inverted through the interrupt function }