UART Tutorial ATmega8 Simulator Fehler?

Gast #134515
Lesenswert?
• ▲
▼
Hallo Leser,

vorab erstmal allen Frohes Fest. Ich beschäftige mich erst seit kurzem
mit Mikrocontrollern und habe mir gedacht erstmal das Tutorial hier auf
der Page durchzuarbeiten und etwas damit zu experimentieren. Ich bin nun
beim UART Artikel angekommen und da ich noch keinen ATmega8 gekauft habe
teste ich alles im Simulator von AVR Studio. Der erste Fehler ist
allerdings schon das mir der Simulator nur den ATmega128 anbietet alle
anderen uC sind ausgegraut weis da jemand Rat? Habe auf einem
Zweitsystem auch AVR Studio installiert dort kann ich alle uC
problemlos auswählen.
Nun zum Programm was ich natürlich mit dem ATmega8 ausgewählt auf
meinem Zweitsystem simuliere

.include "m8def.inc"

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

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

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

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(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

Eigentlich genau den Source aus dem Tutorial. Das T und das e sendet
der Simulator einwandfrei allerdings setzt er nach dem Senden des e
nicht das UDRE Register auf Enable (UDR ist aber leer) und läuft dann
entlos in der serout Schleife. Ist dies evtl. ein Fehler des
Simulators?


Beste Grüße
Reinhard
Gast #134516
Lesenswert?
• ▲
▼
Das Problem habe ich auch bei SPI (und bei UART glaub auch). Das ist was
richtig gutes.. jedes mal das Flag zu setzten.

Also auch wenn ich bei SPI auf Takt/2 schalte, gehts nicht...

Irgendwas übersehen?

dave
Gast #134517
Lesenswert?
• ▲
▼
Hallo,
Menuepkt. Hilfe unter "Release Notes and Known Isusses" dann ´
wieder "Known Isusses" auwählen. Unter dem Topic Generic, diesen
XML Parser musste ich unter Win2000 installieren, dann ging es auch
mit anderen Controllern.
Grüße
Quark

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.