суббота, 6 апреля 2013 г.

Программирование USART0 в C

Самый простой способ обмена данными с ПК - это использование интерфейса USART. Конечно не во всех компьютерах, а уж тем более в ноутбуках сохранился COM-port, но существует множество недорогих преобразователей USB-COM, USB-USART.
Для использования интерфейса USART0 рекомендую ознакомиться со следующим постом:
Простенькая программа будет принимать символ ASCII с ПК и отправлять следующий по порядку символ из ASCII. Скорость обмена данными 9600 бод/с. Тактовая частота 8 МГц Соответственно в регистр UBRR0 необходимо записать 51.
Рисунок 1 - Схема подключения
Пример программы:


#include <avr/io.h> //подключение стандартной библиотеки ввода/вывода

int main(void)
{
//SETUP
//USART
UCSR0A=0x00; //скорость обмена 1x, микропроцессорный обмен выключен
UCSR0B=0x18; //разрешение приема и передачи
UCSR0C=0x06; //асинхронный режим, контроль четности отключен, 1 стоп бит, 8 бит данных
UBRR0=51; //скорость передачи 9600 бод/с при тактовой частоте 8 МГц

while(1) //цикл программы
{
while((UCSR0A & 0x80) != 0x80); //ждем флага завершения приема
char A = UDR0; //извлекаем принятый символ из буфера приема
UDR0 = A+1; //записываем следующий символ в бучер передачи
while((UCSR0A & 0x20) != 0x20); //ждем опустошения буфера передачи
}
}

После загрузки программы в микроконтроллер, подключаем его к ПК по средствам эмуляторов COM-порта или преобразователя уровня, запускаем RS232 Terminal, PuTTY или любую другую программу для работы с COM-портом и проверяем работоспособность.