Forum: Mikrocontroller und Digitale Elektronik Übertragungsprobleme Atmega8


von Franzi (Gast)


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...

von Franzi (Gast)


Lesenswert?

was könnte das sein?
wenn ihr noch mehr infos benötigt sagt bescheid...

von Franzi (Gast)


Lesenswert?

Das ganze passiert nicht nur innerhalb des INTs sondern auch wenn ich es 
in eine Endlosschleife schreibe...

von Johannes M. (johnny-m)


Lesenswert?

Wo ist die UART-Initialisierung? Hört sich nach einer falschen Character 
Size an.

von Franzi (Gast)


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

von Johannes M. (johnny-m)


Lesenswert?

>  ldi       temp, (1<<URSEL)|(1<<UCSZ0)
Aha, wie vermutet! Da fehlt UCSZ1! Du überträgst nur 6 Bit pro Frame.

von Franzi (Gast)


Lesenswert?

danke für den tip,
probier ich gleich mal aus...

von Franzi (Gast)


Lesenswert?

danke, das war's
das mit dem ucsz1 ist mir irgendwie aus meinem Programm abhanden 
gekommen,
in einer älteren Version war nämlich noch alles ok.

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.