Страница 1 из 1

USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 10:07
Valentin44
Столкнулся с необъяснимой проблемой :)

Есть ПИК "А" - будем считать его эталоном :) Работает с портом на 9600.
Есть ПИК "Б" - Работает на 16 МГц от кварца, с портом работает на 9600.
Есть ПИК "С" - Работает от внутреннего генератора на 8 МГц, и только слушает порт на 9600.
ПИК А и Б между собой обмениваются данными, ПИК Б посылает команды ПИКу С. Все отлично.

Теперь пришлось ПИК Б перевести на 8 МГц, на внутренний генератор. Изменил настройки ПИКа на новую скорость... И начались чудеса.

Проц Б с процем А обмениваются туго, много потерянных пакетов. Иногда успешный пакет ждать приходится по 5 секунд! А проц С вообще перестал слышать проц Б.

В протеусе все работает отлично.
Теперь, в протеусе, создаю проэкт только с процем С. И через ком порт подключаю реальный проц "Б". В симуляторе все работает. Команды с реального проца Б прекрасно ловит проц С в протеусе.

Почему в живую проц С не слышит проц Б, и почему стало хуже обмен с процем А?
В программе отключил все лишние прерывания, пробовал отключать приемник у проца Б, и только слать команды процу С. Ничего :(

С настройками скорости портов все верно.
Одно что прходит на ум, может ли погрешность встроенных генераторов быть насколько большой, что синхронно не работают порты?

Re: USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 10:25
jhm
Ищи проблему в программе, или может быть неправильно задал параметры порта для другой частоты.
Быстрее всего снять осциллограммы сигналов и сравнить скорости.

Re: USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 11:27
Valentin44
Значит сделал так: впаиваю на 8 МГц кварц. И не меняя прошивки, переключаю МК на работу от кварца. И работает порт! Переключаю на внутренний RC задающий генератор - и все. Тихо :(

В программе перепроверил 100 раз. Да же с нуля создал проэкт, для простой посылки байтов в порт. И их другой МК не видит. А в Протеусе все отлично! Т.е. Подключаю этот блок к протеусу, в нем включаю виртуальный терминал и вижу то что мне надо.

Поиск в яндексе, дал пару результатов - где не рекомендуют использовать порт при работе с внутренним генератором.
Короче прийдется использовать кварц :) Ну заработало и славно!

Re: USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 13:30
jhm
9600 - не скорость
ты уверен что пик стартует именно на 8мгц а не на энергосберегающем 31кгц или на какой-то другой частоте?

Re: USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 14:42
Valentin44
Уверен.
В программе много задержек указанных в секундах - они отрабатываются верно. И шина ISP работает верно, а она то же зависит от тактовой.
Подозреваю, что один ПИК имел погрешность в одну, а второй в другую сторону :) Как результат суммарная погрешность внутренних генераторов и сбой передачи.

Re: USART и тактовые частоты.

СообщениеДобавлено: 07 сен 2011, 15:59
jhm
что за шина ISP?