Hallo,
ich steuere einen Schrittmotor über einen L297 und 2x L6203 an. Über
einen Timerinterrupt (Timer0 eines ATmega2561) toggle ich den CLK-Pin
des L297. Bei einem Prescaler von 64 funktioniert dies noch problemlos.
Bei einem Prescaler von 8 auch, sofern ich nur bei jedem 8. Timeraufruf
das Signal toggle (--> theoretisch wieder ein Prescaler von 8x8=64).
Wenn ich allerdings den Prescaler auf 1 setze und das Signal nur jeden
64. Aufruf toggle ruckelt der Schrittmotor und lauft nicht mehr ruhig.
Außerdem steigt auch der Stromverbrauch von ca 0.65A auf 2.5A.
Kann sich jemand von euch das Phänomen erklären?
danke, cyberfoxx
PS:
so sieht die Interruppt-Routine aus:
1 | ISR(TIMER0_OVF_vect)
|
2 | {
|
3 | cnt_t0++;
|
4 | if(cnt_t0>=64)
|
5 | {
|
6 | if(PORTC%2) PORTC&=0xFE; //auf PC0 befindet sich der CLK-Pin des L297
|
7 | else PORTC|=0x01;
|
8 | }
|
9 | }
|