|
Соединить 2 atmega168 по USART, тактуются от одного источника |
|
|
|
Mar 3 2008, 08:40
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Здравствуйте! Пытаюсь обеспечить передачу данными по USART между двумя мегами 168. Обе тактются от одного внешнего источника частотой 12.5МHz. BAUD=500 на обоих мегах. Использую polled версия работы s USART из App.Note от производителя. Соединяю так: Код Rx -- Tx Tx -- Rx XCK -- XCK Передаю число первой мегой - вторая Atmega должна принять и соответсвующее количество раз мигнуть светодиодом. Передаю 1 - мигает 2 раза Передаю 2 - мигант 12 раз Передаю 3 - мигает 14 раз  После того как 2 мега мигнула светодиодами она должна вернуть первой константу. Но такое ощущение что в буфере приема первой меги находится больше чем одно число. Т.к. она принимает контсанту еще до того как вторая закончила мигать светодиодами. Причем число не совпадает с той константой, что должна передать 2 мега. Подскажите, пожалуйста, что делать, чтобы заработало?
|
|
|
|
|
 |
Ответов
|
Mar 4 2008, 09:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Ну, во первых, посмотрите осциллографом, что у вас и как передается, на какой реально скорости и т.п. Я бы сделал постоянную передачу символа в цикле, а на приеме просто бы зажигал светодиод если число совпало с ожидаемым, тогда и осцилом можно проверить, да и меняя константу можно выяснить, это действительно 14 принимается или это просто какое то левое начальное значение переменной. Ну и замечания по коду, не всегда существенные, но все же..  unsigned charinput - это какой тип данных будет? по-умолчанию? int? а передаете из функции вы что - char. Обьявление переменных внутри цикла - это плохой тон для контроллеров, лучше везде использовать тип char если это подходит, т.к. контроллер 8и разрядный и для него именно char является нативным типом, а не int как обычно принято у 16/32 разрядных процов, а судя по коду именно с ними вы раньше имели дело. Функция main возвращает void обычно, потому что в МК некуда выходить если у вас просто программа а не ОСь стоит.
--------------------
|
|
|
|
|
Mar 4 2008, 09:53
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(GDI @ Mar 4 2008, 12:49)  Ну, во первых, посмотрите осциллографом, что у вас и как передается, на какой реально скорости и т.п., Нашел вот какой-то старый. попробую использовать... Цитата(GDI @ Mar 4 2008, 12:49)  unsigned charinput - это какой тип данных будет? по-умолчанию? int? а передаете из функции вы что - char. Тьфу опростоволосился похоже.  Цитата(GDI @ Mar 4 2008, 12:49)  Обьявление переменных внутри цикла - это плохой тон для контроллеров, лучше везде использовать тип char если это подходит, т.к. контроллер 8и разрядный и для него именно char является нативным типом, а не int как обычно принято у 16/32 разрядных процов, а судя по коду именно с ними вы раньше имели дело. Да, некрасиво, понимаю. Но обычно когда начинает хоть как-то работать переношу объявление переменных в нужное место. А так - замучаешься - ведь не все сразу получается... Цитата(GDI @ Mar 4 2008, 12:49)  Функция main возвращает void обычно, потому что в МК некуда выходить если у вас просто программа а не ОСь стоит. Ясно.
Сообщение отредактировал Filov - Mar 4 2008, 09:54
|
|
|
|
Сообщений в этой теме
Filov Соединить 2 atmega168 по USART Mar 3 2008, 08:40 GDI А зачем сигнал XCK - вы в синхронном режиме чтоли ... Mar 3 2008, 10:17 Filov Цитата(GDI @ Mar 3 2008, 13:17) А зачем с... Mar 3 2008, 10:57 blackbit оп-с.. а земли (GND) вы им действительно не соедин... Mar 3 2008, 10:32 GDI ЦитатаЯ так понял после прочтения документации, чт... Mar 3 2008, 12:40 Filov Цитата(GDI @ Mar 3 2008, 15:40) Тактирова... Mar 3 2008, 13:17  Stanislav_S Цитата(Filov @ Mar 3 2008, 18:17) Я как н... Mar 3 2008, 13:29   Filov Цитата(Stanislav_S @ Mar 3 2008, 16:29) С... Mar 3 2008, 14:10    =GM= Цитата(Filov @ Mar 3 2008, 14:10) Да надо... Mar 3 2008, 15:04     mdmitry Цитата(=GM= @ Mar 3 2008, 18:04) 3) Не мо... Mar 3 2008, 15:18     KRS Цитата(=GM= @ Mar 3 2008, 18:04) потому ч... Mar 3 2008, 15:26      =GM= Цитата(KRS @ Mar 3 2008, 15:26) Это почем... Mar 3 2008, 16:27       KRS Цитата(=GM= @ Mar 3 2008, 19:27) 1) У мас... Mar 3 2008, 16:42 Aesthete Animus 2Filov
Скажите, а чем вызвано желание использовать... Mar 3 2008, 13:03 GDI ЦитатаТолько инициалюзацию USART я так понимаю над... Mar 3 2008, 14:24 GDI Имхо, в синхронном режиме USART очень похож на SPI... Mar 4 2008, 07:22 KRS Цитата(GDI @ Mar 4 2008, 10:22) Имхо, в с... Mar 4 2008, 09:50 Filov Вообщем действительно USART работал у меня в асинх... Mar 4 2008, 09:27 GDI ЦитатаКстати не во всех чипах есть режим SPI, (нап... Mar 4 2008, 09:57 Filov Цитата(GDI @ Mar 4 2008, 12:57) Это я зна... Mar 4 2008, 10:04  defunct Цитата(Filov @ Mar 4 2008, 12:04) Констан... Mar 4 2008, 10:47   Filov Цитата(defunct @ Mar 4 2008, 13:47) А теп... Mar 5 2008, 09:39    mdmitry Цитата(Filov @ Mar 5 2008, 12:39) Это я в... Mar 5 2008, 15:55    defunct Цитата(Filov @ Mar 5 2008, 11:39) Т.е. мо... Mar 5 2008, 16:30  mdmitry Цитата(Filov @ Mar 4 2008, 13:04) Кстати ... Mar 4 2008, 10:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|