Übertragungsprobleme Atmega8

Gast #871337
Lesenswert?
• ▲
▼
Hallo zusammen,
ich habe mit meinem Atmega8 Übertragungsprobleme mit USART, und zwar 
werden die obersten 2 Byte immer auf 1 gesetzt.

hier meine Routine zum senden:
1
USART_Transmit:
2
  sbis      UCSRA,UDRE
3
  rjmp      USART_Transmit
4
  out        UDR,temp
5
  ret
Initialisierung
1
.equ         F_CPU = 8000000        ; Systemtakt in Hz
2
.equ         BAUD  = 38400           ; Baudrate
3
 
4
; Berechnungen
5
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
6
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate

Das ganze passiert im Input Capture Interrupt

hier die Interruptroutine:
1
ICP:
2
  in        Tempi,SREG
3
  clr        temp          
4
  out        TCNT1H,temp        
5
  out        TCNT1L,temp          
6
  in        Amplitudenzeit2Low,ICR1L  
7
  in        Amplitudenzeit2High,ICR1H
8
  
9

10
  ldi        temp,0b00010101
11
  rcall      USART_Transmit  
12
  out        SREG,Tempi  
13
  reti

Übertragen wird 11010101, ich habe schon etliche andere Zahlen probiert, 
immer das selbe...
Gast #871355
Lesenswert?
• ▲
▼
sorry...
1
 ldi       temp, HIGH(UBRR_VAL)
2
 out      UBRRH, temp
3
   ldi       temp, LOW(UBRR_VAL)
4
   out       UBRRL, temp
5
 
6
    ; Frame-Format: 8 Bit
7
  ldi       temp, (1<<URSEL)|(1<<UCSZ0)
8
   out       UCSRC, temp
9
 
10
   sbi       UCSRB,TXEN                    ; TX aktivieren

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren