badik 0 29 мая, 2013 Опубликовано 29 мая, 2013 · Жалоба Осваиваю ATmega16, с помощью STK500. Программирую USART. Взял пример из книги "Программирование микроконтроллеров Atmel на языке С", В.С. Прокопенко, 2012. Книга с диском. USART работает, но передает "тарабарщину". Что-то с инициализацией (я так думаю)? Много пытался задавать различные значения скорости: USART_Init( 0x05 );// 9600 TestUARTATmega16_.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 29 мая, 2013 Опубликовано 29 мая, 2013 · Жалоба Много пытался задавать различные значения скорости: USART_Init( 0x05 );// 9600 Зачем много пытаться, надо посмотреть даташит: Table 68. Examples of UBRR Settings for Commonly Used Oscillator Frequencies из чего следует что 0x05 - неверный ответ для 1МГц и 9600. Берите в руки осциллограф и в путь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 29 мая, 2013 Опубликовано 29 мая, 2013 · Жалоба судя по исходнику, речь про WinAVR. а в этом случае все значительно проще: в комплект WinAVR входит util/setbaud.h, который решает проблему с настройками на раз-два. начинающему дополнительно можно воспользоваться моими наработками: http://www.simple-devices.ru/articles/7-so...navr-console-io Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
badik 0 29 мая, 2013 Опубликовано 29 мая, 2013 · Жалоба Да речь про 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 0 29 мая, 2013 Опубликовано 29 мая, 2013 · Жалоба Теперь что UBRR не знаю.Да ладно:) Посмотрите *.lss и *.lst или *.i файлы. Поиском в них пройдитесь по ubrr... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Invisible_Kid 0 20 июля, 2013 Опубликовано 20 июля, 2013 · Жалоба Не знаю, нужна ли еще инфа ОПу, но сам недавно столкнулся с необходимостью работы с UART, только у 32й меги. Вот скриншоты из даташита, можно взять просто эту функцию и как аргумент для нее использовать число из таблицы. Эксперементировать удобнее первое время в Proteus ISIS, правда, терминал в этой программе почему-то не работал, когда в настройках было указано 2 стоповых бита (мега сконфигурирована именно так, USBS = 1), заработал только с одним :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться