Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:examples:digi:timer [2009/04/01 13:33] raivo.sellen:examples:digi:timer [2010/02/04 12:28] (current) – removed mikk.leini
Line 1: Line 1:
-====== Timer ====== 
-Timers are frequently used when programming controllers. They can be used in many 
-different ways, such as counting time within code or giving an interrupt when the 
-timer has counted up or down to a certain value. For example, the time between two 
-pulses from outside could be detected, or the timers could be used as counters, 
-counting pulses coming from a sensor. One common way of using a timer is as a realtime 
-clock. The task of the timer would then be to give an interrupt at a specific 
-interval. Every time an interrupt occurs, as part of the interrupt routine you could, for 
-example, sample the sensors. This way, you will always be sure of having the same 
-time between two samples from the same sensor. 
  
-===== Blinking LED example ===== 
- 
- 
-<code c> 
-/*  
-Labor 2 example 
- 
-Blinking 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;  // blinking frequency 
- 
-#define INV(x) ^=(1<<x) //inversting bit in PORT x 
-#define LED 4 // Blinking 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 
-} 
-</code> 
en/examples/digi/timer.1238592831.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0