Forum: Mikrocontroller und Digitale Elektronik AVR Assembler ATmega8 Schrittmotorenansteuerung


von Jabu D. (jabu)


Angehängte Dateien:

Lesenswert?

Hallo!
Ich bin im Rahmen eines Schulprojektes gerade dabei einen kleinen 
mobilen Roboter mit 2 Schrittmotoren und dem Leistungstreiber L298 sowie 
einem ATmega8 zu entwickeln. Zuerst habe ich einen Schrittmotor über ein 
normales Programm mit Warteschlangen und 4 Ausgabewechsel am Portd 
betrieben. Hat funktioniert. Jetzt möchte ich 2 Motoren (rechts und 
links) so betreiben, dass der eine Motor schnell und der andere langsam 
dreht, so dass eine kurve gefahren würde. Das habe ich mit 2 Intrerrupts 
gemacht, jeder Moter 1 Interrupt. Vorher wird festgelegt, welche 
Schrittfrequenz die Motoren jeweils haben sollen. Es funktioniert jedoch 
nichts und ich verzweifle. Ich bin sicher der Fehler ist für jemanden 
der forgeschritten ist leicht findbar. Bitte dringend um Hilfe! Datei im 
Anhang.

Danke im Voraus, Jabu

von Helfer (Gast)


Angehängte Dateien:

Lesenswert?

Du hast vergessen die Anfangsschritte der Schrittmotoren mit 1 zu 
initialisieren. Dadurch kommt deine Taktfolge in den ISRs aus dem Tritt.

von Jabu D. (jabu)


Lesenswert?

Oh das stimmt /-: Ich werde es gleich mal übernehmen und schauen ob es 
dann funktioniert (-: Danke für deine Mühe den Code umzuschreiben.

von Jabu D. (jabu)


Lesenswert?

Nun funktioniert alles prima, tausend Dank für die Hilfe!

von Sascha W. (sascha-w)


Lesenswert?

und hier noch was ...
1
Motor1:          dec Steptime1                ;Stepfrequenz einhalten
2
      brne StillDelay1 
3
      push A
4
      push B
5
      in A,SREG

das sichern des Statusregisters gehört immer an den Anfang der 
Int-Routine!
(siehe auch Code von Helfer)
Macht bei dir zwar in dem Fall nicht's, weil du innerhalb der Schleife 
im Hauptprogramm überhaupt nicht's machst.

__________________________________________________
1
.def A         = r16
2
...
3
      in A,SREG
... wie schön das man sich auch beim AVR einen Akkumulator definieren 
kann - erinnert mich irgendwie in Z80 Zeiten.


Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.