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