Ich versuche für den atmega32 den timer0 als pwm zu brauchen und
gleichzeitig den timer2 als timestepper zu brauchen.
timer1: pwm signal
timer2: wenn 1 millisekunde vorbei ist->ISR von timer 2 soll ausgeführt
werden
Wenn ich die timer separat ausführe funktioniert alles, aber beide
zusammen geht was schief. Wie muss ich den Interrupt konfigurieren?
main()
{
//pwm:
TCCR0 = (1<<CS00)|(1<<WGM01)|(1<<WGM00)|(1<<COM01);
OCR0 = 0;
//timer als clock für timestepping
TCCR2 =(1<<WGM21) |(1<<CS21)|(1<<CS20);
OCR2=250;
//Compare Interrupt aktivieren
TIMSK|=(1<<OCIE2);
//Globale Interrupts aktivieren
sei();
ISR (TIMER2_COMP_vect){
//mache irgendwas
}
while(1){}
}
Besten dank für die Hilfe!
flavio
Flavio G. schrieb: > main() > { > //pwm: > TCCR0 = (1<<CS00)|(1<<WGM01)|(1<<WGM00)|(1<<COM01); > OCR0 = 0; > > //timer als clock für timestepping > TCCR2 =(1<<WGM21) |(1<<CS21)|(1<<CS20); > OCR2=250; > //Compare Interrupt aktivieren > TIMSK|=(1<<OCIE2); > //Globale Interrupts aktivieren > sei(); > > ISR (TIMER2_COMP_vect){ > //mache irgendwas > > } > while(1){} > } > In C kann man nicht Funktionen ineinander schachteln. Ich weiß, der gcc hat eine Erweiterung, die das möglich macht. Man sollte es aber trotzdem nicht tun
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
Ansonsten ist da erst mal nichts auffällig, was die Funktion verhindern könnte.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.