2 Timer gleichzeitig

Gast #4242915
Lesenswert?
• ▲
▼
Hallo,

ich versuche mit einem ATmega16 einen Schrittmotor zu betreiben.
Dazu verwende ich Timer0 und Timer1. Mit Timer 1 erzeuge ich die 
Step-Freqenz und mit dem Timer 0 die Beschleunigungs/Bremskurve. Wenn 
ich dies so teste bekomme ich eine Frequenz die immer wieder stockt, 
aber wenn ich die nicht den Timer0 für die Rampen benutze und diesen 
Teil in Main schreibe funktioniert es. Liegt es daran dass sich die 
beiden Timer Interrupts überschneiden und so die Lücken im Timer1 
entstehen und wenn ja wie kann ich das fixen ?

Danke im Vorraus :)
Angehängte Dateien:
Gast #4243654
Lesenswert?
• ▲
▼
Der Beitrag "Schrittmotoransteuerung mit A4982 und ATmega328" ist gut 
aber er ist für den ATmega328 geschrieben und der Code kann nur 1 
Schrittmotor gleichzeitig und ich bräuchte 2.
Gibt es nicht eine Library für Schrittmotoren oder gibt es eine 
Möglichkeit die 2 Timer gleichzeitig laufen zu lassen ?
Gast #4243757
Lesenswert?
• ▲
▼
Christoph K. schrieb:
> Der Beitrag "Schrittmotoransteuerung mit A4982 und ATmega328" ist gut
> aber er ist für den ATmega328 geschrieben und der Code kann nur 1
> Schrittmotor gleichzeitig und ich bräuchte 2.

Zwischen Timer1 vom ATmega328 oder vom ATmega16 besteht kein 
signifikanter Unterschied. Die gezeigte Routine arbeitet mit dem 
OCR1A-Register. Verwendet man zusätzlich das OCR1B-Register läßt sich 
damit ein 2. Schrittmotor ansteuern.

Wenn man es braucht, muß man es nur machen.
Ich brauche es nicht ;-)
Gast #4244752
Lesenswert?
• ▲
▼
Für mich ist das eine ISR und dort steht für den Fall, dass status=3 
ist, ein delay_ms(500) drin.

1
////////////////////////////////////////////////////////////////////////// Timer/Counter0 Overflow
2
ISR (TIMER0_OVF_vect){    
3
  
4
  switch (status){
5
    case 1 : status=1;a_fast();break;
6
    case 2 : b_fast();break;
7
    case 3 : status=1;PORTD ^= (1 << PD4);delay_ms(500);a_timer=0;b_timer=99;break;
8
  }
9
  
10
}

War das nicht auch timer0, der ab und zu "stockt"?

Aber ich bin kein Experte ..

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.