Programowanie mikrokontrolerów
mikrokontrolery24.pl
Uruchomienie timera
Poniższy program przedstawia sposób uruchomienia timera0 mikrokontrolera Atmega8. Jest to podstawowy timer / counter z obsługą przerwania od przepełnienia się timera / countera. Poniższy program jest przetestowany na "żywym" układzie. Drugi program przedstawia sposób uruchomienia Timera na mikrokontrolerze Atmega328p z timerami wyposażonymi w funkcje PWM które zostały w pełni przetestowane na "żywo" w mikrokontrolerze.
//program timera0 dla Atmega8 podtawowy
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit)))
ISR(TIMER0_OVF_vect)
{
PORTD = PORTD ^ 1;
}
int main(void)
{
DDRD=0xff; // ustalenie kierunku portu (wyjście)
PORTD=0xff; // wystawienie wartości FFh na port
// konfiguracja timera0 8-bitowego
TIMSK=0x01; // maskowanie przerwań
TCCR0=0x05; // wybór źródła taktowania, prescaler.
sei();
while(1)
{
}
}
CDN
//program timera0 z przerwaniem overflow (przepełnienie) na Atmega328p
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit)))
ISR(TIMER0_OVF_vect)
{
PORTD = PORTD ^ 1;
}
int main(void)
{
DDRD=0xff; // ustalenie kierunku portu (wyjście)
PORTD=0xff; // wystawienie wartości FFh na port czyli 10101010b
// konfiguracja timera0 8-bitowego
TIMSK0=0x01; // maskowanie przerwań
TCCR0A=0x00; // wybór źródła taktowania, prescaler.
TCCR0B=0x05;
sei(); //odblokowanie przerwania głównego
while(1)
{
}
}
CDN
wtorek 09-lip-24 19:45:50 CEST
09-lip-2024 19:45:50 CEST
by Pioter
Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć, treści oraz jej fragmentów bez zgody autora jest zabronione.
© mikroprocesory.info.pl@gmail.com 2013.
© mikroprocesory.info.pl@gmail.com 2013.