Attiny2313 USART Problem

Gast #2479546
Lesenswert?

Moin,
Mein USART mit dem tiny2313 funktioniert nicht! Es kommen zwar Signale 
ins terminal, jedoch die falschen. Arbeite gewöhnlich mit dem Atmega8, 
daher befürchte ich ein Bit falsch gesetzt zu haben oder soetwas. Code 
unten. Ich habe keinen externen Quarz angeschlossen. Ist dies ein muss?


.include "tn2313def.inc"

.def A         = r16

.equ F_CPU = 8000000                            ; 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

.org 0x0000
rjmp Start

;---------------------------------------------------

Start:          ldi      r16, HIGH(UBRR_VAL)
         out      UBRRH, r16
       ldi      r16, LOW(UBRR_VAL)
          out      UBRRL, r16

         ldi      r16, (1<<UCSZ1)|(1<<UCSZ0)
         out      UCSRC, r16
           sbi      UCSRB,RXEN
    sbi      UCSRB,TXEN

           ldi    A, LOW(RAMEND)
           out    SPL,A

;-------------------------------------

Main:      ldi     A,'A'
                rcall   senden
                rjmp    Main

;-------------------------------------

Get_RX:    sbis    UCSRA,RXC
    rjmp   Get_RX
          in      A,UDR
    ret


senden:    sbis    UCSRA,UDRE
        rjmp    senden
        out     UDR,A
    ret

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