Fehlfunktion am Uart

Gast #33854
Lesenswert?
• ▲
▼
Hab den code jetzt verändert aber es funktioniert immer noch nicht! 
Sofort nach der ersten Übertragung(O) werden zwei pins
low und bleiben es auch! Kann mir mal bitte jemand nen code schreiben 
wie ich eine Zahl über den uart empfange und sie dann an portB ausgebe?

//mein code:
.include "8515def.inc"
  .def temp = r16
  .EQU Data = 0x0060

        ldi temp,$FF
     out DDRB,temp
  ldi temp ,RAMEND
  out SPL, temp
  sbi UCR ,RXEN
  sbi UCR, TXEN
  ldi temp, 23
  out UBRR, temp
  out PortB , r20
void:

    sbis USR, RXC
  rjmp void
  in r19,UDR
  out PortB, r19
  rjmp void
Gast #33855
Lesenswert?
• ▲
▼
Hi!
Das einzige was nicht stimmt ist das der Stack aus
H und L-Byte besteht, nur den brauchst du momentan garnicht.
Was in R20 drinnsteht ist irgendwie ungeklärt, aber eigentlich auch 
nicht wichtig.
Frage: Quarz = 3,68..MHz und 9600 Baud? Wenn ja, ok.
ääääm an PortB ist Mosi, Miso, SCK drann. Stören die eventuell?

MFG Uwe
Gast #33857
Lesenswert?
• ▲
▼
Hi Tobi!
Stack:

ldi  temp,High(Ramend)
out  SPH,temp
ldi  temp,low(Ramend)
out  SPL,temp  ;Stackadresse festlegen

Mosi/Miso:

teste doch mal mit etwas Progr. ob sich das komplette Port ansprechen 
lässt.

PAP:
-Port auf Ausgang
-an Port $FF ausgeben
-Pause damit was zu sehen ist
-an Port $00 ausgeben
-und noch eine Pause damit was zu sehen ist
-zurück zur $FF-Ausgabe

Stimmen Quarz und Baud? Das ist viel wichtiger.

MFG Uwe

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