Forum: Mikrocontroller und Digitale Elektronik UART Tutorial ATmega8 Simulator Fehler?


von Reinhard (Gast)


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

von dave (Gast)


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

von Quark (Gast)


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

von ...HanneS... (Gast)


Lesenswert?

Der Fehler liegt nicht am AVR-Studio sondern bei Micro$oft...
Man muss MS-DataAccess updaten, erhältlich auf der M$-Webseite...

http://www.mikrocontroller.net/forum/forum.php?query=%2Bmicrosoft+%2Bsimulator&forums%5B%5D=1&number=99&action=sendsearch

Frohen Rest vom Fest...
...HanneS...

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.