Hallo , ich versuche mit dem Timer 1 ein Servo zu steuern. OCR1A ist auf die 20ms periode eingestellt und schaltet den Port wieder ein und stellt das Zählregister auf Null. OCR1B ist veränderbar und soll den Wert 1ms bis 2ms je nach Drehlage haben. Jetzt zu meinem Problem. In der mainloop möchte ich nur die Pin´s abfragen und dann mit rcall ein Unterprogramm aufrufen in dem der Wert von OCR1B abgeändert wird. mainloop: sbic Pinb,0 rcall mitte sbic Pinb,1 rcall up sbic Pinb,2 rcall down rjmp mainloop ---------------------------------------------- wenn ich das Programm so schreibe fährt das Servo in die Position ohne sbic mainloop: rcall up rjmp mainloop Habe das Programm im Anhang auf den Chip aufgespielt und es funktioniert nur teilweise. Wenn ich die Befehle sbic ausklammere und nur einen rcall zulasse fährt das Servo in die Stellung die mit dem Unterprogramm erreicht werden soll. Lass ich aber die mainschleife wie ich sie im Programm geschrieben habe , kommt mein Servo ein zuckel und fährt nicht in die Stellung. Eigentlich sollte wenn keine Taste gedrückt ist in der Schleife nichts passieren es werden alle rcall übersprungen. Hat jemand eine Ahnung was das ist ? Habe den Stack inialisiert damit der nach dem Unterprogramm auch wieder an die gleiche stelle gesprungen werden kann. Habe im AVR Studio das Programm simuliert , dort scheint alles zu gehen. Über einen Tipp würde ich mit freuen. Joachim
Was hast Du an PB0, PB1 und PB2 angeschlossen? Falls es Taster sind (das suggerieren mir die aktivierten PullUps), sind sie gegen GND geschaltet? Falls ja, dann sind sie L-aktiv, dann müsstest Du sie mit SBIS abfragen. Falls es um Taster geht, solltest Du Dich demnächst mal mit Entprellung beschäftigen. Falls nicht, dann nehme ich alles zurück und behaupte das Gegenteil... ;-) ...
Hannes, wie Du schon richtig vorausgesetzt hast sind es Taster. Danke für Deinen Link und Tipp. Werde mir das Thema Tastenentprellung genauer anschauen. gruß Joachim
Wie Hannes schon schrieb: "sbic" oder "sbis"? Unbedingt checken!
Habe die Abfrage richtiggestellt, das Programm funktioniert jetzt. Danke für Eure hilfe!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.