Шаблон и пример работы с UART для attiny2313 AVR
Для отладки устройств на микроконтроллерах всегда необходимо знать как происходит выполнение программы прошивки.
Я сам часто использую встроенный модуль UART в микроконтроллерах AVR для получения информации что же происходит внутри микроконтроллера.
Данный пример программы работы с UART приводится для микроконтроллера attiny2313. Хочу сразу оговориться, что код программы для attiny2313 и atmega8 не совместимы. То есть если вы прошьете код от attiny2313 в микроконтроллер atmega8 он просто не будет работать. Регистры микроконтроллера не совпадают с atmega8.
#include <avr/io.h> void USART_Init( unsigned int baudrate ); unsigned char USART_Receive( void ); void USART_Transmit( unsigned char data ); int main( void ) //Главная функция { USART_Init( 47 ); //Скорость соединения 19200 бит/с for(;;) //Вечный цикл { USART_Transmit( USART_Receive() ); //Отправка принятого символа назад } } void USART_Init( unsigned int baudrate ) //Функция инициализации USART { UBRRH = (unsigned char) (baudrate>>8); UBRRL = (unsigned char) baudrate; UCSRA = (1<<U2X); //Удвоение скорости UCSRB = ( ( 1 << RXEN ) | ( 1 << TXEN ) ); //Разрешение на прием и н апередачу через USART UCSRC = (1<<USBS) | (3<<UCSZ0); } unsigned char USART_Receive( void ) //Функция приема данных { while ( !(UCSRA & (1<<RXC)) ); //Ожидание приема символа return UDR; //Возврат символа } void USART_Transmit( unsigned char data ) //Функция отправки данных { while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема UDR = data; //Начало передачи данных }
В коде несколько программ:
- программа инициализации,
- программа отправки данных,
- программа приема данных.
»