mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADMUX direkt an RS232 ausgeben


Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich folgendes verwende:

    ldi   temp1, 0x40
    rcall transmit

gibt es mir ein @ aus, wenn ich jedoch

    ldi   temp1, ADMUX
    rcall transmit

verwende so gibt der mir nichts gescheits wieder.
ADMUX enthaellt 0x40


bekomme ich das irgendwie hin das der mir ein @ sendet wenn ADMUX 0x40 
ist?

Autor: mg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ersetzte "ldi" mal durch "mov" dann müsste es funktionieren

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das gefällt ihm nicht :)

Fehler ==>     mov  temp1, ADMUX       ; Wert
[analog.asm,85] 018: Registerwert undefiniert!

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi   temp1, 0x40
rcall transmit

logisch geht das nicht, weil:
LDI ist load immediate.
Du lädst hier eine Konstante (hier 0x40) in temp1.
und gibst die aus.

ldi   temp1, ADMUX
rcall transmit

Hier dasselbe. Du lädst eine Konstante, gespeichert unter dem Namen 
ADMUX ins temp1. Also hier die Adresse von ADMUX (siehe irgendeine 
h-datei.)
Du musst aber den inhalt von ADMUX auslesen, also:

LDS temp1, ADMUX
oder
IN temp1, ADMUX

(eines von beiden geht nur, welches da müsste ich in der h-datei 
nachsehen)

Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LDS lädt vom SRAM, das passt also auch nicht.

IN ist nur für die I/O-Ports. Die Register für für Freigabe und Sperrung 
der Interrups, Stackpointer und Statusregister zählen zu den I/O- Ports, 
damit solltest du also Erfolg haben.

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Sirko Pöhlmann (poehli):
>> LDS lädt vom SRAM, das passt also auch nicht

ld und st (und somit auch lds, ldd, sts, std) können auf alle 
Daten-adressen zugreifen: Register, I/O interner und ggf. externer RAM !

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ld und st (und somit auch lds, ldd, sts, std) können auf _alle_
> Daten-adressen zugreifen

Genau. Die I/O-Register liegen schließlich im SRAM. Für den Zugriff auf 
die unteren 64 I/O-Register gibts eben alternativ die (schnelleren) 
Befehle "in" und "out". Bei vielen AVRs gibt es weniger als 64 
I/O-Register, weshalb man bei denen alle I/O-Register mit "in" und "out" 
ansprechen kann, während bei einigen größeren AVRs einige der 
I/O-Register im extended I/O Space liegen und nur über "lds" und "sts" 
ansprechbar sind.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, der Zugriff über "in" und "out" verwendet die "Nummer" des 
betreffenden I/O-Registers (die Adresse im I/O Space), während "lds" und 
"sts" mit der absoluten RAM-Adresse gefüttert werden wollen. Deshalb 
funktioniert der Zugriff über "ldi" und "sts" auch nicht mit den in der 
Headerdatei definierten Makros. Da muss zur Adresse noch 0x20 addiert 
werden. Deshalb hat Matthias nicht ganz unrecht...

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt lesen bildet. Die Codebeispiele geben Aufschluß über die 
nötigen Programmierbefehle für die entsprechenden Register. Das ging an 
Dich, Paul.

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.