Мелкие вопросы по МК и ПЛИС.
У меня? Нет не у меня. Надо смотреть дальше какой там включается весь код в вопросе, как я понял.
- Реклама
Синхронный UART распознается не кодом а схемотехнически - помимо RX и TX есть еще вывод синхронизации(и вход на прием). Вот если он есть в схеме, тогда можно говорить об синхроне, иначе без этого сигнала он вообще работать не будет.
А как же тогда Мк узнАет какой там он есть? Может глупые вопросы - пока не доводилось заниматься передачей данных. Вот и задаю - хочу разобраться в вопросе.
Я думал что в программе должны настраиваться все режимы.
Я думал что в программе должны настраиваться все режимы.
МК никак не узнает - как ему скажешь так и будет работать. Если ему скажешь работать в синхронном режиме, а сигналы подключить забудешь - работать ничерта не будет. Обычно синхронный режим используют когда частоты передатчика и приемника никак не связаны между собой и могут сильно отличаться даже в процессе передачи.
- Сообщения: 41
- Зарегистрирован: Пн мар 15, 2010 16:58:35
Ребята, прошу помощи.
http://radiokot.ru/forum/viewtopic.php?f=58&t=92550
http://radiokot.ru/forum/viewtopic.php?f=58&t=92550
- Реклама
UART у меня асинхронный, но похоже что UCPOL это то что нужно, сейчас гляну в ДШ и попробую его выставить.
А нет, это не то, он только для синхронного режима.
А нет, это не то, он только для синхронного режима.
Извиняюсь тут я ошибся это таблица для usart в режиме spi
PS Alexeyslav,Что-то ваши слова противоречат друг другу
Вот же в шите написано

Еще там написано, что по умолчанию подразумевается асинхронный режим. Ну и конечно вы правы - там еще написано, что инициализация ножек перекрывается инициализацией USART и ножка XCKn используется как синхронизация.
PS Alexeyslav,Что-то ваши слова противоречат друг другу
Alexeyslav писал(а):Синхронный UART распознается не кодом а схемотехнически - помимо RX и TX есть еще вывод синхронизации
Как же ему сказать если не кодом?Alexeyslav писал(а):МК никак не узнает - как ему скажешь так и будет работать. Если ему скажешь работать в синхронном режиме
Вот же в шите написано

Еще там написано, что по умолчанию подразумевается асинхронный режим. Ну и конечно вы правы - там еще написано, что инициализация ножек перекрывается инициализацией USART и ножка XCKn используется как синхронизация.
Последний раз редактировалось vitalik_1984 Сб авг 03, 2013 07:17:39, всего редактировалось 1 раз.
То, что у Вас происходит,обычно бывает, когда спутан активный уровень канала у приемника или передатчика.ANALOG писал(а):UART у меня асинхронный, но похоже что UCPOL это то что нужно, сейчас гляну в ДШ и попробую его выставить.
А нет, это не то, он только для синхронного режима.
Тогда постоянно взводится ошибка и происходит неконтролируемое определение конца байта.
В результате данные на приеме вроде бы стабильны, но являются абракадаброй.
И еще.
Проверьте, не установлен ли 9-битный режим на одной из сторон...
Простой осциллограф в этом случае значительно сократил бы время поиска ошибки.
Да уж не простой. А с функцией записи фрагмента. На простом хрен что успеешь рассмотреть
Мечтаю себе тоже купить, да жаба давит.
Простого тоже хватит, если запустить на постоянную передачу одинаковых фрагментов.
Осциллографа к сожалению нет никакого.
Только что проверил флаги ошибок - ни один не вылазит
Только что проверил флаги ошибок - ни один не вылазит
Совсем ничего теперь не понимаю...
Записал в меге (передатчике) в UBRR 13 вместо 12-ти которые выходят по формуле (XTAL/(8*BAUDRATE)-1) - все работает как надо.
Выходит что проблема в несовпадении скоростей
. Оба контроллера тактируются от 1 МГц внутренних генераторов, неужели у них такая большая погрешность? 
Записал в меге (передатчике) в UBRR 13 вместо 12-ти которые выходят по формуле (XTAL/(8*BAUDRATE)-1) - все работает как надо.
Выходит что проблема в несовпадении скоростей
Скорее всего проблема в некорректной работе программного обеспечения.
Имеют место три независимых процесса:
текущаяобработка дисплея
прием/передача (обмен) по каналу связи и
компоновка следующего кадра отображения.
Все процессы асинхронны.
Если не просчитаны "перехваты" инициативы процессами неизбежны искажения и/или потеря целостности данных.
А каким способом осуществлять обмен... Важнее иметь грамотное разделение с последующей подстановкой буфера сегментного кода отображения и буфера сегментного кода приемника данных.

Имеют место три независимых процесса:
текущаяобработка дисплея
прием/передача (обмен) по каналу связи и
компоновка следующего кадра отображения.
Все процессы асинхронны.
Если не просчитаны "перехваты" инициативы процессами неизбежны искажения и/или потеря целостности данных.
А каким способом осуществлять обмен... Важнее иметь грамотное разделение с последующей подстановкой буфера сегментного кода отображения и буфера сегментного кода приемника данных.
От внутренних RC-генераторов? Так они и не калиброваны даже... на заводе поставили калибровку на глаз при определенном напряжении и температуре и все. В других условиях будет отличаться, и очень сильно... до 10% кажется может запросто. Так что тебе по всей видимости придется использовать синхронный режим, или просто сконфигурируй выход опорной частоты у одного контроллера, и запитай этой частотой другой контроллер если они в одном блоке.
Если выбрать синхронный режим при одностороннем обмене то точность генераторов особой роли не играет.
Я для подобных игрушек использую побитовую синхронизацию и программный протокол. Тихоходный и на 8 проводков (4 пары) при двустороннем обмене. Но... ни проблем с кварцеванием и/или большой разницей между быстродействием ведущего и ведомого (вплоть до длительной полной остановки одного из контроллеров) , ни проблем с математикой (типа CRC и прочего).
Я для подобных игрушек использую побитовую синхронизацию и программный протокол. Тихоходный и на 8 проводков (4 пары) при двустороннем обмене. Но... ни проблем с кварцеванием и/или большой разницей между быстродействием ведущего и ведомого (вплоть до длительной полной остановки одного из контроллеров) , ни проблем с математикой (типа CRC и прочего).
С побитной синхронизацией это ты придумал SPI...
Тогда еще про SPI понятия не существовало (как и про IBM PC)
А вот ВЕКТОР06Ц + КР1816ВЕ51 и УМК уже водились...

А вот ВЕКТОР06Ц + КР1816ВЕ51 и УМК уже водились...
В общем, всем спасибо, проблема решена. Причина - несовпадение частот тактирования МК 
SPI - Это ЧЕТЫРЕ сигнальных провода.Alexeyslav писал(а):С побитной синхронизацией это ты придумал SPI...
USART в синхронном режиме - ДВА.
Хоть и похожие на осциллограммах, но РАЗНЫЕ физические протоколы.


