www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Register verwenden


Autor: Andre-Atmega168 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte 2 Register r18 und r19 zu einem 16 Bit Wert speichern.

Und dann über UDRO an den PC übergeben
 
st Z,r18
st Z+,r19

put Temp:
lds r16, UCSR0A
sbrs r16, 5
ret
STS UDR0,Z

ret


Die Zeile mit sts "UDRO,Z" hat laut assember:"Invalid register"

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Zeile mit sts "UDRO,Z" hat laut assember:"Invalid register"
Was vielleicht mal zum lesen in der Beschreibung der Assembler-Befehle 
führen sollte.

Im übrigen können immer nur 8 Bit in das Datenregister übertragen 
werden. Das macht aber nichts, denn Du kannst ja zweimal 8 Bit 
übertragen.
Du musst aber noch beachten, das du erst bis zur Übertragung des ersten 
Bytes warten musst, bis Du das zweite in UDR0 schreiben kannst.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Z ist kein Register. Es ist eine Bezeichnung für ein Doppel -Register 
in Zusammenhang mit Zeigeroperationen, und der Inhalt von Z passt auch 
nicht ins UDR0 hinein. sts kann nur ein Byte auf einmal verwursten. Wenn 
überhaupt, dann ZL und/oder ZH.

Autor: Andre-Atmega168 (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

bekomme jetzt 2 Byte vom Temp-Sensor, die ich über USART in Labview 
übergebe. Allerdings weiss ich noch nicht wie ich diese in Labview 
wieder zusammenkriege. Das UDRO wird ja immer wieder neu beschrieben. 
einmal mit dem ersten byte dann mit dem zweiten, usw.
 gibt es keine möglichkeit. die 16 bit dirket zu übertragen.

Autor: Daniel F. (df311)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andre-Atmega168 (Gast) wrote:
> hi,
>
> bekomme jetzt 2 Byte vom Temp-Sensor, die ich über USART in Labview
> übergebe. Allerdings weiss ich noch nicht wie ich diese in Labview
> wieder zusammenkriege. Das UDRO wird ja immer wieder neu beschrieben.
> einmal mit dem ersten byte dann mit dem zweiten, usw.
>  gibt es keine möglichkeit. die 16 bit dirket zu übertragen.

doch, die möglichkeit gibt es, wenn du ein sw-uart für 16 bit bastelst, 
das ganze nicht über die rx/tx leitungen, sondern über ein 
handshake-paar der rs232 überträgst und dafür am pc einen eigenen 
treiber schreibst.

datenübertragung über rs232 ist nun mal auf 5-9 datenbits ausgelegt und 
alle hw-uarts halten sich daran.

zum zusammenfügen musst du nur die zwei bytes einzeln übertragen und die 
empfangenen bytes wieder zusammenfügen. wie das in labview funktioniert 
weiß ich nicht, aber das müsste recht einfach möglich sein - sonst muss 
noch ein kleines c-programm dazwischen.

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.