mikrocontroller.net

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


Autor: Joachim H. (husky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... ;-)

...

Autor: Joachim H. (husky)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Hannes schon schrieb:

"sbic" oder "sbis"?

Unbedingt checken!

Autor: Joachim H. (husky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe die Abfrage richtiggestellt,

das Programm funktioniert jetzt.

Danke für Eure hilfe!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.