-         

Ergebnis 1 bis 2 von 2

Thema: Problem mit dem Uart

  1. #1

    Problem mit dem Uart

    Anzeige

    Hallo Leute,

    ich habe mich seit kurzem mal an das UART meines Atmega8 gewagt. Allerdings habe ich das Problem das ich in meinem Terminalprogramm ( Hterm) nur manchmal das vom Chip gesendete 'Test!\n\r' empfange. Wenn ich die Verbindung bei Hterm allerdings öfters neu verbinde kommt das Test irgendwann. Kann mir jemand sagen wo mein Fehler liegt?
    Ich möchte damit wenns läuft Messwerte übertragen und es hat ja keinen Sinn wenn die nur manchmal richtig übertragen werden.

    Hier ist der von mir verwendete Code:

    Code:
    .include "m8def.inc"
     
    .def temp    = r16                             
    .def zeichen = r17                            
                                                  
     
    .equ F_CPU = 4000000                        ; Systemtakt in Hz
    .equ BAUD  = 9600                             ; Baudrate
     
    ; Berechnungen
    .equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
    .equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
    .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille
     
    .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
      .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
    .endif
     
        ; Stackpointer initialisieren
     
        ldi     temp, LOW(RAMEND)
        out     SPL, temp
        ldi     temp, HIGH(RAMEND)
        out     SPH, temp
     
        ; Baudrate einstellen
     
        ldi     temp, HIGH(UBRR_VAL)
        out     UBRRH, temp
        ldi     temp, LOW(UBRR_VAL)
        out     UBRRL, temp
    
     
        ldi     temp, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)|(0<<UCSZ2)|(0<<UMSEL)|(0<<UPM0)|(0<<UPM1)|(0<<USBS)
        out     UCSRC, temp
     
        sbi     UCSRB,TXEN                
     
    loop:
        ldi     zeichen, 'T'
        rcall   senden                  
        ldi     zeichen, 'e'
        rcall   senden                    
        ldi     zeichen, 's'
        rcall   senden                     
        ldi     zeichen, 't'
        rcall   senden
        ldi     zeichen, '!'
        rcall   senden
        ldi     zeichen, 10
        rcall   senden
        ldi     zeichen, 13
        rcall   senden
        rjmp    loop
     
    senden:
        sbis    UCSRA,UDRE                 
                                           
        rjmp    senden
        out     UDR, zeichen
        ret
    Danke

    Michael

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    19.07.2007
    Beiträge
    26
    Hallo Desert-Storm
    Es kann sein, dass du bei Com-Terminal eine falsche Einstellung gemacht hast (Stichwort: Flusssteuerung). Ich hatte damit früher auch des öfteren Ärger.
    Deswegen verwende ich seither für solche Sachen Com Terminal (http://home.wtal.de/Mischka/VB/COM/), das ist viel benutzerfreundlicher. Würde es an deiner Stelle mal damit probieren.
    Beim schnellen Durchlesen kann ich in deinem Code übrigens keinen Fehler finden, das heißt aber nicht, das da keiner ist!
    Gruß wolli_bolli

Berechtigungen

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