2 Timer gleichzeitig

Gast #4242915
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 11 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.