Forum: Mikrocontroller und Digitale Elektronik Pin Abfrage sbic mit Sprungbefehl rcall


von Joachim H. (husky)


Angehängte Dateien:

Lesenswert?

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

von Hannes Lux (Gast)


Lesenswert?

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... ;-)

...

von Joachim H. (husky)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

Wie Hannes schon schrieb:

"sbic" oder "sbis"?

Unbedingt checken!

von Joachim H. (husky)


Lesenswert?

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
Noch kein Account? Hier anmelden.