Forum: Mikrocontroller und Digitale Elektronik tn2313 und uart. oder: Ich werd verrückt


von Gunklmunkl (Gast)


Lesenswert?

Servus,

seit zwei tagen versuch ich meinem 2313 das beizubringen. Was ich
ausschließen kann sind die Fusebits und damit eine falsche Frequenz.
Das Teil hat am pd2 4mhz.
Im Moment macht er nämlich gar nix. Txd hängt auf high, und macht
keinen Anschein das sich etwas ändert.
was mir aufgefallen ist UBRRH und UCSRC haben die gleich io Adresse.
getestet auf stk500. echo zum pc geht. liegt also definitiv am tiny.
ich hoff das mir jemand helfen kann, ich bin in jedem fall sehr dankbar
:S

Hier der code. Weitestgehend aus dem tutorial übernommen...

.include "tn2313def.inc"

.def temp = r16
.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1


        ; Stackpointer initialisieren
        ldi temp, RAMEND
        out SPL, temp



        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

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

        sbi UCSRB,TXEN                    ; TX aktivieren

loop:   ldi temp, 'T'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'e'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 's'
        rcall serout                      ; ...
        ldi temp, 't'
        rcall serout
        ldi temp, '!'
        rcall serout
        ldi temp, 10
        rcall serout
        ldi temp, 13
        rcall serout
        rjmp loop

serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das
nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm

von johnny.m (Gast)


Lesenswert?

1.: Ich sehe im Datenblatt keinen Hinweis darauf, dass UCSRC und UBRRH
die selbe I/O-Adresse haben!

2.: Wieso setzt Du das UMSEL-Bit in UCSRC? Das bedeutet doch eigentlich
'synchrone Betriebsart', oder nicht?

von Gunklmunkl (Gast)


Lesenswert?

juhu fehler gefunden. umsel bit gehört natürlich auf null. da sollte
eigentlich ursel stehen. Aber das brauch ich für den tiny2313 nicht
weil dort UCSRC und UBRRH nicht die gleiche adresse haben(laut
unterlage). alles im allen ziemlich verwirrend, weil der debuger
dennoch meint die haben die gleiche adresse.

von TravelRec. (Gast)


Lesenswert?

IMMER den richtigen Prozessor im Debugger einstellen und IMMER das
richtige Datenblatt lesen ;-)

von Gunklmunkl (Gast)


Lesenswert?

jap hab ich gemacht. da scheint entweder das datasheet falsch zu sein,
oders studio hat nen bug. Ich schließe mich mal aus ;)

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.