Forum: Mikrocontroller und Digitale Elektronik Tutorial / UART


von Erik (Gast)


Lesenswert?

Hallo zusammen,
ich arbeite mich durch das Tutorial durch...
und bin beim Abschnitt UART hängen geblieben.
Die erste Programm-Übung (Text via AVR and Hyperterminal schicken) geht
problemlos.
Bei die zweiten Übung: uart-receive.asm (Zeichen vom Hyperterminal an
den AVR schicken bleibe ich hängen...
Ich benutze allefürsich den 2313 anstatt des uart-mega8 wie
vorgegeben.
Vielleicht kann mir mal jemand mit der Nase auf meinen Fehler
stossen..!?
habe folgendes gemacht:
.include "...2323..."
.def temp = r16
;stackpointer
    ldi temp, low(ramend)
    out spl, temp
;port D = ausgang
    ldi temp, 0xff
    out ddrd, temp
;baudrate
    ldi temp, 10000000/(9600*16) - 1
    out ubrr, temp
;usrt empfang aktivieren
   sbi ucr, txen
;receiveloop
loop:
     sbis ucr, rxc
     rjmp loop
     in temp, udr
     out portd, temp
     rjmp loop

und nichts tut sich! wo habe ich einen Fehler gemacht? was habe ich
vergessen?
- vom hyperterminal wird nichts angenommen,
- nur die led PD1 leuchtet ständig

Wäre für jeden hinweis dankbar!!!!
Erik.

von Tobi (Gast)


Lesenswert?

da ist der fehler
   sbi ucr, txen

du aktivierst das senden, nicht empfangen, senden ist auf pd1, deswegen
leutet das.

im tutorial wird rxen verwendet nicht txen :)

von Erik (Gast)


Lesenswert?

oohjeh-ojeh!!! das tut weh!!
 lesen/schreiben sollte man können...
nichtdestotrotz: habe jetzt "sbi ucr, rxen" eingesetzt,
jetzt leuchtet zwar die LED-0
aber das Ergebnis ist dasselbe: nix tut sich!!

von Tobi (Gast)


Lesenswert?

was ist bei dir led0 und wie hast du den rest verkabelt?

von Erik (Gast)


Lesenswert?

Problem erkannt! muss nur noch herausfinden warum!???
melde mich später wieder. Danke für Deine Mühe!

von Erik (Gast)


Lesenswert?

Dachte, Problem wäre meine Schnittstelle.
Darum habe ich die Schaltung (Tutorial/Uart) auf eine Lochrasterplatine
separat nachgebaut (ohne Lötfehler!)
und ohne weitere Zusätze, also gemäss Bild.
allefürsich mit einem 2313 anstatt Mega8.
Programm, wie 28.08 + korrektur 29.08 (TXEN/RXEN).
Egal welche Buchstabe ich über das Hyperterminal eingebe,
an Pins PD2 bis PD6 tut sich nicht.
Pegel bleibt auf low, gemessen gegen Masse.

Text von AVR and Hyperterminal schicken geht.

Ist evtl im Programm noch weiteres zu berücksichtigen
wegen der Änderung Mega8-2313 ??
Im original listing steht auch noch "Frame-Format...usw".
Assemblierung liefert hier "undefined variable".

Irgend eine Idee? oder Anregung/Empfehlung?
Ich steh auf'm Schlauch...
Erik

von Tobi (Gast)


Lesenswert?

da brauchst du beim 2313 nur das

        ; Frame-Format: 8 Bit
        ldi temp, (3<<UCSZ0)
        out UCSRC, temp

keine ahnung ob das daran liegen könnte weil ich icht weiss was da
standardmässig drin ist aber einen versuch ist es wert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.