Geimel
23.09.2007, 15:03
Hallo,
ich habe mal eine Frage zum Timer1 des Atmega 8. Und zwar habe ich ein Programm geschrieben, das bei Overflow des Timers Ports kurzzeitung anschaltet. Nun möchte ich aber nicht einen Überlauf des Timers bei 65536, sondern einem Variablen Wert. Kann man solch einen Wert einstellen, wenn ja wie? Bin aus dem Datenblatt nicht so richtig schlau geworden.
Hier mein Testcode der soweit funktioniert:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
ISR(TIMER1_OVF_vect){PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD7);_delay_ms(100);PORTD&=~((1<<PD6)|(1<<PD5)|(1<<PD7));}
int main(void)
{ DDRD|=(1<<PD6)|(1<<PD5)|(1<<PD7);
TCCR1B|= (1<<CS10) | (1<<CS11); //Prescaling für 16 bit timer
TIMSK |= (1<<TOIE1); /*Overflowinterrupt aktivieren*/
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD7);
sei();
while(1){
}
return 0;}
Vielen Dank
Geimel
ich habe mal eine Frage zum Timer1 des Atmega 8. Und zwar habe ich ein Programm geschrieben, das bei Overflow des Timers Ports kurzzeitung anschaltet. Nun möchte ich aber nicht einen Überlauf des Timers bei 65536, sondern einem Variablen Wert. Kann man solch einen Wert einstellen, wenn ja wie? Bin aus dem Datenblatt nicht so richtig schlau geworden.
Hier mein Testcode der soweit funktioniert:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
ISR(TIMER1_OVF_vect){PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD7);_delay_ms(100);PORTD&=~((1<<PD6)|(1<<PD5)|(1<<PD7));}
int main(void)
{ DDRD|=(1<<PD6)|(1<<PD5)|(1<<PD7);
TCCR1B|= (1<<CS10) | (1<<CS11); //Prescaling für 16 bit timer
TIMSK |= (1<<TOIE1); /*Overflowinterrupt aktivieren*/
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD7);
sei();
while(1){
}
return 0;}
Vielen Dank
Geimel