пишу инициализацию усарта для Mega48PA
Код
.equ SYSCLK = 20000000;System Clock [Hz]
.equ BaudSpeed0=1200 ;speed of UART
.equ bauddivider = (SYSCLK/(16*BaudSpeed0))-1
;************************************************************************
; USART0_Init
;
lds R16,PRR
andi R16,255-(1<<PRUSART0);USART0 wake up
sts PRR,R16
ldi R16,0b00000000 ;RXCn, TXCn, UDREn, FEn, DORn, UPEn, U2Xn, MPCMn
sts UCSR0A,R16
ldi R16,0b00011000 ;RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZn2,RXB8,TXB8
sts UCSR0B,R16
ldi R16,0b00000110 ;-, UMSELn, UPMn1, UPMn0, USBSn, UCSZn1, UCSZn0, UCPOLn
sts UCSR0C,R16
ldi R16,High(bauddivider)
sts UBRR0H,R16
ldi R16,Low(bauddivider)
sts UBRR0L,R16 ;BaudRate Gen.
.equ BaudSpeed0=1200 ;speed of UART
.equ bauddivider = (SYSCLK/(16*BaudSpeed0))-1
;************************************************************************
; USART0_Init
;
lds R16,PRR
andi R16,255-(1<<PRUSART0);USART0 wake up
sts PRR,R16
ldi R16,0b00000000 ;RXCn, TXCn, UDREn, FEn, DORn, UPEn, U2Xn, MPCMn
sts UCSR0A,R16
ldi R16,0b00011000 ;RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZn2,RXB8,TXB8
sts UCSR0B,R16
ldi R16,0b00000110 ;-, UMSELn, UPMn1, UPMn0, USBSn, UCSZn1, UCSZn0, UCPOLn
sts UCSR0C,R16
ldi R16,High(bauddivider)
sts UBRR0H,R16
ldi R16,Low(bauddivider)
sts UBRR0L,R16 ;BaudRate Gen.
при симуляции в протеусе получаю:
Код
(AVR USART 0)Baud rate = 54212 b/s
частота 20МГц выставлена и для контроллера и для кварца.
Решил написать инициализацию усарта для 128 меги на С под ИАРом. Скорость установилась как и ожидалось - 1200
Ткните где я не прав