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
Gast
#2303316
Du hast vergessen die Anfangsschritte der Schrittmotoren mit 1 zu initialisieren. Dadurch kommt deine Taktfolge in den ISRs aus dem Tritt.
Oh das stimmt /-: Ich werde es gleich mal übernehmen und schauen ob es dann funktioniert (-: Danke für deine Mühe den Code umzuschreiben.
Nun funktioniert alles prima, tausend Dank für die Hilfe!
und hier noch was ...
1 | |
2 | |
3 | |
4 | |
5 | |
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 | |
2 | |
3 | |
... wie schön das man sich auch beim AVR einen Akkumulator definieren kann - erinnert mich irgendwie in Z80 Zeiten. Sascha
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.