реклама на сайте
подробности

 
 
> Соединить 2 atmega168 по USART, тактуются от одного источника
Filov
сообщение Mar 3 2008, 08:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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 раз sad.gif

После того как 2 мега мигнула светодиодами она должна вернуть первой константу.
Но такое ощущение что в буфере приема первой меги находится больше чем одно число. Т.к. она принимает контсанту еще до того как вторая закончила мигать светодиодами. Причем число не совпадает с той константой, что должна передать 2 мега.

Подскажите, пожалуйста, что делать, чтобы заработало?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GDI
сообщение Mar 4 2008, 09:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Ну, во первых, посмотрите осциллографом, что у вас и как передается, на какой реально скорости и т.п.
Я бы сделал постоянную передачу символа в цикле, а на приеме просто бы зажигал светодиод если число совпало с ожидаемым, тогда и осцилом можно проверить, да и меняя константу можно выяснить, это действительно 14 принимается или это просто какое то левое начальное значение переменной.

Ну и замечания по коду, не всегда существенные, но все же.. smile.gif
unsigned charinput - это какой тип данных будет? по-умолчанию? int? а передаете из функции вы что - char. Обьявление переменных внутри цикла - это плохой тон для контроллеров, лучше везде использовать тип char если это подходит, т.к. контроллер 8и разрядный и для него именно char является нативным типом, а не int как обычно принято у 16/32 разрядных процов, а судя по коду именно с ними вы раньше имели дело. Функция main возвращает void обычно, потому что в МК некуда выходить если у вас просто программа а не ОСь стоит.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Filov
сообщение Mar 4 2008, 09:53
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170



Цитата(GDI @ Mar 4 2008, 12:49) *
Ну, во первых, посмотрите осциллографом, что у вас и как передается, на какой реально скорости и т.п.,


Нашел вот какой-то старый. попробую использовать...

Цитата(GDI @ Mar 4 2008, 12:49) *
unsigned charinput - это какой тип данных будет? по-умолчанию? int? а передаете из функции вы что - char.


Тьфу опростоволосился похоже. sad.gif

Цитата(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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01963 секунд с 7
ELECTRONIX ©2004-2016