Zeichen aus SRAM senden

Gast #153746
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?
Gast #153749
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'
Gast #153750
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?
Gast #153751
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
Gast #153752
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.
Gast #153753
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?
Gast #153755
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!!
Gast #153756
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren