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

 
 
> Соединить 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:57
Сообщение #2


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

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



Цитата
Кстати не во всех чипах есть режим SPI, (напримре в Atmega128 нет sad.gif ).

Это я знаю, сам с новыми еще не работал smile.gif, но у автора мега168, а там это режим есть.

..как быстро отвечает автор, не успел сообщение запостить а он уже отвечает... я, кстати пост тот поправил, перечитайте..


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


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

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



Цитата(GDI @ Mar 4 2008, 12:57) *
Это я знаю, сам с новыми еще не работал smile.gif, но у автора мега168, а там это режим есть.


Кстати этот режим тоже любопытнаю штука smile.gif Буду его тоже пробовать позже smile.gif

Цитата(GDI @ Mar 4 2008, 12:57) *
..как быстро отвечает автор, не успел сообщение запостить а он уже отвечает... я, кстати пост тот поправил, перечитайте..


Ну так что лучше работать или на форуме сидеть???? smile.gif

Константу менял - передавал
1 - мигало 2 раза
2 - мигало 12 раз
3 - мигало 14 раз.

Действительно попробую в цикле. И unsigned charinput заменю на unsigned char charinput Ж). Может чего и выйдет.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 4 2008, 10:47
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Filov @ Mar 4 2008, 12:04) *
Константу менял - передавал
1 - мигало 2 раза
2 - мигало 12 раз
3 - мигало 14 раз.

А теперь давайте посмотрим что такое 2, 12 и 14.

2 - 0x02 == 00000010 вместо 000000001
12 - 0x0C == 00001100 вместо 000000010
14 - 0x0E == 00001110 вместо 000000011

У вас установлены разные бодрейты.
Отличие в скорости на глаз в 1.5..2 раза.

Совет - напишите и залейте одну и ту же программу в оба МК. Если так и будет сбоить - значит настройки осциллятора разные. Прошейте одинаково fuses.

Еще - совсем не важно вычислять бодрейт когда МК работают от одного источника тактирования, нужно чтобы число записываемое в UBRR было одинаковым для обоих МК, а скорость можно ставить максимально допустимую.
Go to the top of the page
 
+Quote Post
Filov
сообщение Mar 5 2008, 09:39
Сообщение #5


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

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



Цитата(defunct @ Mar 4 2008, 13:47) *
А теперь давайте посмотрим что такое 2, 12 и 14.

2 - 0x02 == 00000010 вместо 000000001
12 - 0x0C == 00001100 вместо 000000010
14 - 0x0E == 00001110 вместо 000000011

У вас установлены разные бодрейты.
Отличие в скорости на глаз в 1.5..2 раза.

Совет - напишите и залейте одну и ту же программу в оба МК. Если так и будет сбоить - значит настройки осциллятора разные. Прошейте одинаково fuses.


Спасибо большое! У Вас глаз-алмаз! Вытащил проводочек ко которому идут клоки с первого МК - не работет - все ОК. Из второго - продолжает мигать! Соостветсвенно не были правильно установлены fuses и вместо внешних 12.5MHz чип работал на 8MHz. Отличие в скорости в 1.5 раза.

Вообщем извлек еще раз урок - что не стоит быть излишне самоуверенным, а проверять, проверять и еще раз проверять. Но зато хоть разобрался как USART работает.


Цитата(defunct @ Mar 4 2008, 13:47) *
Еще - совсем не важно вычислять бодрейт когда МК работают от одного источника тактирования, нужно чтобы число записываемое в UBRR было одинаковым для обоих МК, а скорость можно ставить максимально допустимую.


Т.е. можно ставить регистры UBRR0(H,L) в 1 ?


Цитата(mdmitry @ Mar 4 2008, 13:48) *
Atmega1281,2561 UART в режиме MASTER SPI, а не Slave. Будьте внимательны


Это я вроде понял, только мне непонятна одна вешь - на что влияет бодрейт когда я использую USART как SPI? Допустим хочу соедениться по SPI с чипом который имеет частоту тактования X. Какой бодрейт мне стоит указать?


-------------

Господа, спасибо за Ваши ответы. Они прям открыли мне глаза на USART!
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 5 2008, 16:30
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Filov @ Mar 5 2008, 11:39) *
Т.е. можно ставить регистры UBRR0(H,L) в 1 ?

Да, плюс установить бит удвоенной скорости (U2X в UCSRA).
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   Ну, во первых, посмотрите осциллографом, что у вас...   Mar 4 2008, 09:49
|- - Filov   Цитата(GDI @ Mar 4 2008, 12:49) Ну, во пе...   Mar 4 2008, 09:53
|- - mdmitry   Цитата(Filov @ Mar 5 2008, 12:39) Это я в...   Mar 5 2008, 15:55
- - mdmitry   Цитата(Filov @ Mar 4 2008, 13:04) Кстати ...   Mar 4 2008, 10:48


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:23
Рейтинг@Mail.ru


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