-         

Ergebnis 1 bis 5 von 5

Thema: Problem mit Uart beim Mega8

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.10.2005
    Beiträge
    8

    Problem mit Uart beim Mega8

    Anzeige

    Hallo, habe Probleme mit dem Uart.
    Es kommt nur Schrott raus! Siehe Screenshot aus dem Bray-Terminal. Ok, Ich habe einen Mega8 mit nem 8MHz Oszillator. Verwende einen Max232N von Texas Instruments. Die Schaltung entspricht fast dem AVR-Tutorial von www.mikrocontroller.net. Lediglich der Kondensator an Pin 2 muss laut TI Datenblatt von V+ auf GND gelegt werden. Als Testprogramm habe ich den Assamblercode von besagtem Tutorial genommen. Es soll das Wort TEST! in Endlosschleife ausgeben (am PC). Wie gesagt rauskommen tut nur Schrott. Und das Windows Hyper Terminal streikt komplett. Die Baudraten habe ich auch schonmal durchprobiert. (9600-1200) Ich habe jetzt schon alles zum zweiten mal geprüft. Hier der Code:
    Code:
    .include "m8def.inc"
    
    .def temp = r16
    .equ CLOCK = 8000000
    .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
    Danke schonmal für mögliche Anregungen!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken bray.jpg  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    wenn Das Programm vom Tut ist, sollte es ja soweit passen,
    läuft denn der AVR auch mit 8MHz, also sind die Fuses darauf eingestellt ?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.10.2005
    Beiträge
    8
    Läuft mit 8 MHz hab die selben Fuses schon in Timer Progs verwendet. Irgendwo habe ich mal gelesen das es sinnvoll sei eine ungerade Taktfrequenz für den UART zu benutzen. Stimmt das und warum?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Man bekommt damit kleinere Fehler, wenn man Standard-Baudraten wie 38400 nimmt. Siehe auch http://people.freenet.de/gjl/helferl...t-rechner.html
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    Welcher Fehler bei einer vorgegebenen Taktrate und Baudrate entsteht, findet sich im jeweiligen Datenblatt des AVR.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •