This is an old revision of the document!


Timeri kasutamine.

Vilkuv LED.

Programmi kood:

/* Labor 2 näide
Harjutus töötab laborikaardiga Basic v3
 
LED-i vilgutamine kasutades taimerit
Raivo Sell 2008
 
LED = 0 (põleb)  		LED = 1 (kustunud)
PORDI suuna konfigureerimine: 1-väljund	0-sisend */
 
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
static int i; //globaalne muutuja
int SAGEDUS = 10;  //defineeritakse vilkumise sagedus (taimeri ületäituvuse kordaja)
 
 
//defineeritakse biti inverteerimine pordis x
#define INV(x) ^=(1<<x)	
//defineeritakse vigutatav LED konstandina
#define LED 4
// Katkestus - funkitsioon käivitub sii, kui taimeri buffer saab täis
 
ISR (TIMER1_OVF_vect){	
	i++; // i suurendamine 1 võrra iga funktsiooni käivituse korral
	if (i>SAGEDUS){ // Port inverteeritakse, kui i>SAGEDUS
	    PORTC INV(LED); //Inverteeritakse port
		i=0; //kordaja nullitakse
	}
}
 
int main (void) {
	// Taimeri juhtregistrid
	TCCR1A = 0x00; // Taimer normaal reziimis
	TCCR1B = _BV(CS10); //clk/1 (No prescaling)
 
    DDRC  = 0x38;  // DDRC  0bXX111000
    PORTC = 0x3F;  // PORTC 0bXX111111
 
    TIMSK = _BV (TOIE1); // Lubatakse ületäitumise katkestus
    sei (); // Lubatakse globaalkatkestus
 
    while(1); //Lõputu tsükkel
// Mingeid tegevusi programm ei täida. LED-i vilgutatakse läbi katkestuse
}
en/examples/digi/timer.1236248248.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