Beides. Die Drehgeschwindigkeit ist ja eine Funktion von Halbschritt / Vollschritt und dem Takt. Ich kombiniere beides zu unterschiedlichen Geschwindigkeiten. Mein Eindruck: Halbschritt funktioniert besser.
Ich hatte einige Kombinationen aus obigen zwei Größen (recht langsam), wo der Zähler ganz vergißt, hochzuzählen und sich der Motor infolgedessen permanent dreht.
So zähle ich (GROSSGESCHRIEBENE Wörter sind define Aliase der Ports etc.):
Code:
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
M1DIRECTION=m1_direction; // Drehrichtung
// Einen Schritt gehen
M1STEP=0;
delay_us(1);
M1STEP=1;
delay_us(1);
// Schritt jetzt zählen
if (m1_direction == ENGINE_RIGHT)
M1_stepcounter=M1_stepcounter+1;
if (m1_direction == ENGINE_LEFT)
M1_stepcounter=M1_stepcounter-1;
}
Lesezeichen