This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:examples:digi:timer [2009/03/24 10:22] – raivo.sell | en:examples:digi:timer [2010/02/04 12:28] (current) – removed mikk.leini | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Timer ====== | ||
| - | Blinking LED | ||
| - | |||
| - | |||
| - | <code c> | ||
| - | /* | ||
| - | Labor 2 example | ||
| - | |||
| - | Blincking LED using timer | ||
| - | Raivo Sell 2008 | ||
| - | |||
| - | LED = 0 (ON) LED = 1 (OFF) | ||
| - | PORT direction: 1-output 0-input | ||
| - | */ | ||
| - | |||
| - | #include < | ||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | static int i; //globale variable | ||
| - | int SAGEDUS = 10; // blincking frequency | ||
| - | |||
| - | #define INV(x) ^=(1<< | ||
| - | #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> | ||
| - | 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 | ||
| - | } | ||
| - | </ | ||