www.mikrocontroller.net

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


Autor: Gunklmunkl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gunklmunkl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
IMMER den richtigen Prozessor im Debugger einstellen und IMMER das
richtige Datenblatt lesen ;-)

Autor: Gunklmunkl (Gast)
Datum:

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

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.