Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема UART на С микроконтроллер AVR ATmega16
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
badik
Осваиваю ATmega16, с помощью STK500.
Программирую USART. Взял пример из книги "Программирование микроконтроллеров Atmel на языке С", В.С. Прокопенко, 2012. Книга с диском.
USART работает, но передает "тарабарщину". Что-то с инициализацией (я так думаю)?
Много пытался задавать различные значения скорости:
USART_Init( 0x05 );// 9600
demiurg_spb
Цитата(badik @ May 29 2013, 09:48) *
Много пытался задавать различные значения скорости:
USART_Init( 0x05 );// 9600

Зачем много пытаться, надо посмотреть даташит: Table 68. Examples of UBRR Settings for Commonly Used Oscillator Frequencies
из чего следует что 0x05 - неверный ответ для 1МГц и 9600.
Берите в руки осциллограф и в путь!
ARV
судя по исходнику, речь про WinAVR. а в этом случае все значительно проще: в комплект WinAVR входит util/setbaud.h, который решает проблему с настройками на раз-два.

начинающему дополнительно можно воспользоваться моими наработками: http://www.simple-devices.ru/articles/7-so...navr-console-io
badik
Да речь про WinAVR.
Подключил util/setbaud.h
Задал:
#define F_CPU 1000000UL
#define BAUD 9600

Устанавил скорость
void USART_Init( unsigned int UBRR_baud )
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
...
Теперь что UBRR не знаю. STK500 fuse cтоит 1МГц.
Передаю байты на PC Программa Terminal. На 9600 не работает. Стал в Terminal менять скорость. Заработала на 4800?
demiurg_spb
Цитата(badik @ May 29 2013, 14:51) *
Теперь что UBRR не знаю.
Да ладноsm.gif
Посмотрите *.lss и *.lst или *.i файлы. Поиском в них пройдитесь по ubrr...
Invisible_Kid
Не знаю, нужна ли еще инфа ОПу, но сам недавно столкнулся с необходимостью работы с UART, только у 32й меги.
Вот скриншоты из даташита, можно взять просто эту функцию и как аргумент для нее использовать число из таблицы.
Эксперементировать удобнее первое время в Proteus ISIS, правда, терминал в этой программе почему-то не работал, когда в настройках было указано 2 стоповых бита (мега сконфигурирована именно так, USBS = 1), заработал только с одним sm.gif

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.