Timer0 pwm und Timer2 als clock

OP #1695108
Lesenswert?
• ▲
▼
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
#1695116
Lesenswert?
• ▲
▼
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
ISR (TIMER2_COMP_vect)
2
{
3
}
4

5
main()
6
{
7
  //pwm:
8
  TCCR0 = (1<<CS00)|(1<<WGM01)|(1<<WGM00)|(1<<COM01);
9
  OCR0 = 0;
10
  
11
  //timer als clock für timestepping
12
  TCCR2 =(1<<WGM21) |(1<<CS21)|(1<<CS20);
13
  OCR2=250;
14
  //Compare Interrupt aktivieren
15
  TIMSK|=(1<<OCIE2);
16

17
  //Globale Interrupts aktivieren
18
  sei();
19

20
  while(1)
21
  {
22
  }
23
}

Ansonsten ist da erst mal nichts auffällig, was die Funktion verhindern 
könnte.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.