Хелпикс

Главная

Контакты

Случайная статья





Скорость обмена.. UBBR=XTAL/(16*baudrate)-1 для U2X=0 UBBR=XTAL/(8*baudrate)-1для U2X=1



Скорость обмена.


Тут все зависит от пары UBBRx

Вычисляется требуемое значение по формуле:

UBBR=XTAL/(16*baudrate)-1 для U2X=0 UBBR=XTAL/(8*baudrate)-1для U2X=1

Где:
XTAL - рабочая тактовая частота контроллера.
baudrate - требуемая скорость (я люблю 9600: ) — чем медленней тем надежней. 9600 в большинстве случаев хватает)

Ошибки передачи
К сожалению мир наш не идеален, поэтому возможны ошибки при приеме. За них отвечают флаги в регистре UCSRA
FE - ошибка кадрирования. Т. е. мы ждали стоп бит, а пришел 0.
OR - переполнение буфера. То есть данные лезут и лезут, а из UDR мы их забирать не успеваем.
PE - не совпал контроль четности.

 

Напишем программу отправки данных по UART.

 

Передадим в порт букву: U

 

device ATmega8

. include " m8def. inc"

; Internal Hardware Init ======================================

                  . equ XTAL = 8000000     

                  . equ baudrate = 9600 

                  . equ bauddivider = XTAL/(16*baudrate)-1

uart_init:     LDI R16, low(bauddivider)

                   OUT UBRRL, R16

                   LDI R16, high(bauddivider)

                   OUT UBRRH, R16

                   LDI R16, 0

                   OUT UCSRA, R16

; Прерывания запрещены, прием-передача разрешен.

                   LDI R16, (1< < RXEN)|(1< < TXEN)|(0< < RXCIE)|(0< < TXCIE)|(0< < UDRIE)

                   OUT UCSRB, R16

 

; Формат кадра - 8 бит, пишем в регистр UCSRC, за это отвечает бит селектор

                   LDI R16, (1< < URSEL)|(1< < UCSZ0)|(1< < UCSZ1)

                   OUT UCSRC, R16

 

; Процедура отправки байта

 

uart_snt:      SBIS UCSRA, UDRE   ; Пропуск если нет флага готовности

                   RJMP uart_snt     ; ждем готовности - флага UDRE

 

                   ldi R16, ‘U’; наше число

 

                   OUT UDR, R16; шлем байт

Nop

Nop

Nop

Nop

Nop

Nop

Nop

 

 

                   RET                      ; Возврат

 

 

Наберите код программы в AVR Studio и выполните ее там обращая внимание на регистры описанные выше.

 

 

 


Рисунок 1 – Выполнение программы в AVR Studio

Соберите установку в ISIS и посмотрите вывод буквы U на терминале.

 

 

Рисунок 2 – Установка работы

 

Рисунок 3 – Передача данных в терминал ( буквы U )



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.