This is an old revision of the document!


Timer

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
}
en/examples/digi/timer.1237890165.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