mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rol ????


Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich stehe auf der Leitung und bitte um Hilfe. Hier ein Stück
Programmlisting

sec
rol tmpLow
rol tmpChk    ;MSB aus tmpLow müßte LSB in tmpChk werden,
               funktioniert aber nicht ???????

Ich setze das carry und shifte es ins tmpLow-Register (r4).
Funktioniert auch wie erwartet. Das MSB aus tmpLow müßte doch nach der
ersten rol Aktion ins carry geschrieben werden.
Also müßte doch das neu Carry dann ins tmpChk geshiftet werden.
Funktioniert aber nicht.

Kann mich da mal bitte jemand aufklären,
danke bluemole

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, das Programm läuft auf dem AT90S2313....

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenne ich von einem Programm, wurde in nem anderen Forum
durchdiskutiert, war richtig, lief aber nicht:
Bei jedem Tastendruck soll die nächste LED leuchten, tat sie aber
nicht. Grund: rol macht Mist...

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wo exakt ist das Problem ? Das MSB von tmpLow wird doch ins Carry
geschoben. Wenn du willst, daß eine 1 ins Carry wandert, mußt du auch
dafür sorgen, daß vor "rol tmpLow" auch eine 1 im MSB steht. Oder
habe ich da was falsch verstanden ? Nach dem "rol" wird das Carry
übrigens gelöscht, wenn nicht erneut eine 1 ins Carry geschoben wurde.

Thorsten

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du überprüft, daß das nicht funktioniert? Ich halte es für
äußerst unwahrscheinlich, daß da ein Hardware-Bug existiert.
Ich hatte auch schon oftmals die seltsamsten Effekte - irgendwann hat
sich immer alles aufgeklärt.
Wird evtl. ein Interrupt aufgerufen, in dem das SREG nicht gesichert
wurde, oder wird evtl. tmpChk noch irgendwo verwendet und verändert?

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich vermute du möchtest den 16 Bit Wert in tmpChk:tmpLow rotieren.
Dann musst du aber auch den Überlauf in rol tmpChk in das LSB von
tmpLow einrechnen. Aus

sec
rol tmpLow
rol tmpChk

wird dann

clc
rol tmpLow
rol tmpChk
adc tmpLow, ZeroReg == 0

oder

clc
rol tmpLow
rol tmpChk
brcc @@1
inc tmpLow
@@1:

Im Falle deiner Methode würde man 16 mal den Wert in tmpChk:tmpLow um 1
Bit rotieren und succesive mit 1 auffüllen. Nach 16 Verschiebungen
würde dann immer fortwährend in tmpChk:tmpLow der gleiche Wert stehen,
nämlich 0b1111111111111111. Im Falle das deine LEDs von Vcc nach Pin
geschaltet sind würden somit die 16 LEDs immer dunkel bleiben.

Gruß Hagen

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne. Ich möchte keinen Round about...

Ich bastle gerade an meinem Funkmodul herum. Ich schiebe einfach die
empfangenen Daten ins in die Register. Wobei tmpChk die Check Bits
sind. In der Simulation funktioniert es ja wunderschön, aber die
Realität läßt mich noch ein wenig im Stich....

Vielleicht sollte ich die Spur von Thorsten noch mal aufnehmen und
überpüfen ob die Test Bits tatsächlich als 1 interpretiert werden und
nicht als 0....
Überprüfen tue ich es mit einer LCD- Ausgabe.

bluemole

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arbeitest Du mit den AM-Modulen und Manchester-Kodierung? Da gibt es
eine Möglichkeit, die serielle Schnittstelle zu mißbrauchen -
verringert den Softwareaufwand enorm.

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.