www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichen aus SRAM senden


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo..
Ich habe ein Problem beim Senden von Zeichen über die Serielle
Schnittstelle. Im SRAM abgelegte Daten sollen geladen und gesendet
werden. Leider empfängt das Hyperterminal nicht die Zeichen die ich im
sram gespeichert habe..
Hier mal mein Beispiel Code.


ldi reg,LOW(RAMEND)
out SPL,reg
ldi reg,HIGH(RAMEND)
out SPH,reg
ldi reg,0xFF
out DDRD,reg
out DDRB,reg


;UART konfigurieren
ldi reg,11
out ubrr,reg      ;
GEÄNDERT WERDEN)
ldi reg, (1<<RXCIE)  | (1<<TXEN) | (1<<RXEN)
out ucr,reg


clr XH          ;4x das "A" im SRAM ablegen
ldi XL,0x20
ldi reg,'A'
mov r0,reg
st x+,r0
st x+,r0
st x+,r0
st x+,r0
rcall ext




;************* S E N D E - R O U T I N E N **************
serout:

sbis usr,udre   ;warten bis Puffer leer ist
rjmp serout
out udr,signs     ;Zeichen senden
ret






ext:
clr xh
ldi xl,0x20
ld r0,X+
mov signs,r0
rcall serout
ld r0,X+
mov signs,r0
rcall serout
ld r0,X+
mov signs,r0
rcall serout
ld r0,X+
mov signs,r0
rcall serout

loop:
rjmp loop


Was ist hier falsch?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
los lasst mich nicht dumm sterben

Autor: pripri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was für zeichen empfängt hyperterminäl?
gleiche baudrate?
gleiche stopbits?
quarz oder rc-ossi?
und, und, und...

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was geschieht, wenn Du in Deinem Code nicht die zu sendenden Daten aus
dem RAM holst, sondern einfach einen konstanten Wert verwendest? Kannst
Du dann Daten empfangen?

also in :ext anstelle von
  ld r0,X+

dies hier verwenden:
  ldi r0,'A'

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja also die schnittstelle ist richtig konfiguriert, wenn ich text-
strings usw. sende klappt auch alles bestens. muss man irgendwas
beachten wenn man die zeichen auf dem sram ablegt und später dann
wieder senden will?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert das auch, wenn Du Dein Programm exakt so änderst, wie von
mir beschrieben?

Also:

ext:
clr xh
ldi xl,0x20
ldi r0,'A'
mov signs,r0
rcall serout
ldi r0,'A'
mov signs,r0
rcall serout
ldi r0,'A'
mov signs,r0
rcall serout
ldi r0,'A'
mov signs,r0
rcall serout

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja wenn ich die zeichen mit ldi in ein register lade und dann sende ist
alles bestens...ich war dabei ein programm zu schreiben welches mein
siemens handy ausliest. die ausgelesenen daten habe ich dann im sram
gespeichert. als ich sie aber wieder ausgeben wollte und ich gemerkt
habe das da nur käse rauskommt bin ich ins grübeln gekommen...nun
versuche ich es erstmal ganz primitiv wie im oben dargestellten code
aber trotzdem klappt es nicht.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Ist denn bei Deinem Controller das SRAM bei Adresse 0x20 bereits
beschreibbar? War da nicht was, daß die ersten 0x60 Bytes oder so von
irgendwelchen Peripherie- oder sonstigen Register belegt sind?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@t rufus..
ldi r0 ist doch nicht zulässig!

ldi nur bei registern con 16-31

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Ist denn bei Deinem Controller das SRAM bei Adresse 0x20 bereits
beschreibbar? War da nicht was, daß die ersten 0x60 Bytes oder so von
irgendwelchen Peripherie- oder sonstigen Register belegt sind?



ich glaub da klickts bei mir...das könnte die lösung sein!!

Autor: Marc Gauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"ldi XL,0x20"

Hi, bin zwar erst noch Anfänger, kann also auch sein dass ich total
daneben liege aber du tutst doch die Adresse 0x20 in den X-Pointer
laden, aber sind nicht alle Sram-Addressen bis 0x60 für I/o-Ports
Register usw Reserviert?

Mfg Marc Gauger

Autor: Marc Gauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok war zu spät aber hat wohl doch gestimmt.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werde sofort nachschauen...danke schonmal

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.