Witam, mam problem z poprawnością działania USART'u w ATtiny 2313, mikrokontroler jest podłączony do komputera poprzez MAX'a 232, z kondensatorami 2,2uF. Układ wysyła do komputera dane ale nie są one poprawne - po prostu krzaki. Próbowałem z różnymi konfiguracjami jednak za każdym razem to samo. ATtiny działa na zewnętrznym kwarcu 12Mhz. Podłączałem wyjscie portu COM z komputera przez maxa do jego wejścia i wówczas transmisja działała, zatem zakładam, że max nie stwarza problemu. Fuse bits wszystkie na 1 (wg ISP Prog). Dołączam program w Asemblerze:
Za pomoc z góry dziękuję i pozdrawiam....
.INCLUDE "tn2313def.inc"
.DSEG
.CSEG
.ORG 0x0000
rjmp Reset
.ORG 0x0013
Reset:
ldi r16, low(RAMEND)
out spl, R16
ldi r16, 0b00000010
out ddrd, r16
ldi r16, 0b00000011
out portd, r16
ldi r16, 77
out UBRRL, r16
ldi r17, 0b00000000
out UBRRH, r17
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB, r16
ldi r16, (3<<UCSZ0)
out UCSRC, r16
sei
ldi r16, 30
Petla_glowna:
USART_transmit:
sbis UCSRA, UDRE
rjmp USART_transmit
out UDR, r16
inc r16
ldi r18, 255
rcall czekaj
rjmp Petla_glowna
Czekaj:
push r29
mov r31, r18
P:
ldi r30, 10
P0:
ldi r29, 200
P1:
nop
dec r29
brne P1
dec r30
brne P0
dec r31
brne P
pop r29
ret
Za pomoc z góry dziękuję i pozdrawiam....