Сообщение в терминал приходит кракозябрами

Обсуждаем контроллеры компании Atmel.
Ответить
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

Доброго днях. Uart, Avr, ацп.
Сообщения в терминал приходят кракозябрами.
В коде есть сообщение которое отправляется в основном цикле(бесконечно, пока не сработало ни одно условие, после завершения условия сообщение продолжает отправлятся), есть кнопочка которая обрабатывает нажатие и отправляет сообщение, есть ацп при совпадении с условием также отправляется сообшение.
Так вот, если включить и выключить контроллер подключить его к терминалу, то в терминал сыпется мусор, стоит нажать и отжать кнопочку(сообщение по нажатию кнопочки приходи нормально) или срабатывает условие по ацп, то потом сообщение из основного цикла начинает приходить как положено.
Если после инициализации уарта ,ацп и разрешения прерываний, перед основным циклом поставить задержку в 8сек!!(меньше не помогает) то все норм работает.
Куда капнуть?
Последний раз редактировалось mastech Чт окт 24, 2019 09:49:03, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15598
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Несоответствие кодировки символов в (каком-то компиляторе) МК и кодовой таблицы терминала в ПК.
8)
Латиницу и цифирь должен пересылать без замечаний...
:roll:
Реклама
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

Тогда почему после срабатывания одного из условий, сообщение в основном цикле отправляется нормально?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

копать всегда в одну сторону: искать ошибку и устранять.
не видя кода, умнее ничего не посоветую :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Какова частота CPU, от чего тактируется, и какова скорость (baudrate) UART'а?
Реклама
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

[uquote="NStorm",url="/forum/viewtopic.php?p=3723880#p3723880"]Какова частота CPU, от чего тактируется, и какова скорость (baudrate) UART'а?[/uquote]

Частота 8МГц от внутренний RC и 9600 скорость.

Добавлено after 6 minutes 20 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3723828#p3723828"]не видя кода, умнее ничего не посоветую :)))[/uquote]
Код только вечером смогу скинуть. Там собственно нет ничего такого. Библиотека Uarta, настройка Ацп и пара условий в майне.
Автор библиотечки уарта http://homepage.hispeed.ch/peterfleury/index.html

Добавлено after 1 hour 58 minutes 6 seconds:
[uquote="NStorm",url="/forum/viewtopic.php?p=3723880#p3723880"]Какова частота CPU, от чего тактируется, и какова скорость (baudrate) UART'а?[/uquote]
Думаете имеет смысл ставить кварц на 7.3728Мгц(покупал когда-то именно под уарт)?
Просто в других проектах использовал эту же библиотеку и внутренний рц генератор и все отправлялось (но там конечно были отдельные посылки).
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Да не, на 9600 должно нормально работать. Просто несколько раз недавно встречал, что на 115200 пытаются заставить работать с 8МГц, а там слишком большая погрешность и процент ошибок. Дело не в этом значит. Наверное дальше код действительно надо посмотреть.
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

Поставил кварц на 7,372Мгц работать стало стабильнее, в самом начале немного мусора, но потом само выравнивается.
В коде есть пара функций дисплея дублируют данные на экран 16х2,(замедляют немного) так вот если их убрать то валится мусор пока неизменятся значения в АЦП.
Пробовал скорости 9600, 19200, 57600.
Код во вложении.


sA[02][02][1A][05][13]&[18] - мусор
s000S000
s000S000 - норм данные
s000S000
s000S000
s000S000
s000S000
s000S000
s000S000
s000S000
Вложения
Новый текстовый документ.txt
(3.68 КБ) 237 скачиваний
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Когда работаешь с цифровыми микросхемами, интерфейсами, в первую очередь нужно понимать как все это работает на физическом и программном уровнях. А также нужно иметь под рукой нужные инструменты. Частотомер и осциллограф. Хотя бы осциллограф. В таких случаях очень важны планирование и методичность. Проекты пилить и делать кусочками. Отлаживать каждый кусочек. И только после того, когда отлажены все кусочки, также методично собирать их в кучу.
Первое что меня смущает, 8 секундная задержка.
Проверяем монтаж схемы. Затем проверяем работу кварцевого генератора. Снята ли галочка 8 div.
Пины RX TX. Активный уровень - низкий. Это означает, что когда нет приема передачи, на пинах должен быть высокий уровень. Убедиться, что пины настроены соответственно, на вход-выход. Подтягивающие резисторы на плюс питания. От 4,7 кОм до 10 кОм.
Когда убедились, что кварц стабильно работает (а могут быть случаи, что кварцы неисправны), нужной ли емкости конденсаторы, не дефектны ли (лично у меня были случаи перегрева паяльником, микротрещины). То есть, нужно еще иметь и прибор который позволяет измерять конденсаторы маленькой емкости. После этого делаем тестовый проект или урезаем проект, делаем только передачу тестовых посылок. Затем прием посылок.
То есть, нужно не только иметь нужные инструменты под руками, но и создавать нужные программные инструменты (понимается: для МК). Тестовые программы, тестовые закладки.
Освоить симулятор AVR-Studio. Здесь много поклонников Proteus, лично я им не пользуюсь. Как и аппаратными отладчиками. Не буду спорить, что при их наличии время экономится, но я всегда исхожу из того, что хорошо знаю архитектуру МК, как работают нужные мне интерфейсы, и четко представляю, как работает программа.
И только после этого копать дальше.
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Demiurg Программная ошибка в функции itoa().
Может с частотомером и осциллографом разберетесь или подсказать?
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3724736#p3724736"]Demiurg Программная ошибка в функции itoa().
Может с частотомером и осциллографом разберетесь или подсказать?[/uquote]
А голова на что? Шапку носить и кашу туда есть?
Контактная информация:
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

Причём тут itoa() в первом условии она не используется.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

mastech писал(а):Причём тут itoa() в первом условии она не используется.
Логично, удалите все остальное и оставьте только первое условие (кстати в нем то же ошибка) - будет работать?
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3725172#p3725172"]Логично, удалите все остальное и оставьте только первое условие (кстати в нем то же ошибка) - будет работать?[/uquote]


Удалил из main все (конец строки и количество итераций цикла - эти ошибки можно исключить), в основном цикле оставил только отправку строки uart_puts("test") и возврат каретки uart_putc('\r') и получаем при включении кракозябры пока не нажмешь ресет.
Может так и должно быть?
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Сделайте так: минимум обвязки на МК. Кварц, преобразователь ТТЛ-UART. Тестовая программа минимальна. Только отправка 1 - символа, скажем, каждые 100-500 мс. Пропишите внаглую код символа, шестнадцатеричным кодом. Скажем, пусть это будет буква "А".
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

mastech, покажите свой makefile, а лучше полностью проект в архив и сюда.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Что за терминал, что за преобразователь?
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Сообщение viiv »

[uquote="mastech",url="/forum/viewtopic.php?p=3726435#p3726435"]Удалил из main все (конец строки и количество итераций цикла - эти ошибки можно исключить), в основном цикле оставил только отправку строки uart_puts("test") и возврат каретки uart_putc('\r') и получаем при включении кракозябры пока не нажмешь ресет.
Может так и должно быть?[/uquote]
В непрерывном потоке асинхронных символов, терминал может "зацепиться" не за старт-бит, а за другой перепад уровня. Т.е. терминал может неправильно определить границу символов.

Может в этом дело?
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

[uquote="NStorm",url="/forum/viewtopic.php?p=3726533#p3726533"]Что за терминал, что за преобразователь?[/uquote]
Плата pinboard2 преобразователь там ft2232d
Терминалы Terminal b1.9 by br@y и Termite 3.4.

Добавлено after 2 minutes 3 seconds:
[uquote="viiv",url="/forum/viewtopic.php?p=3726581#p3726581"]В непрерывном потоке асинхронных символов, терминал может "зацепиться" не за старт-бит, а за другой перепад уровня. Т.е. терминал может неправильно определить границу символов.

Может в этом дело?[/uquote]

тоже к этому склоняюсь
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="viiv",url="/forum/viewtopic.php?p=3726581#p3726581"]В непрерывном потоке асинхронных символов, терминал может "зацепиться" не за старт-бит, а за другой перепад уровня.[/uquote]
В этом случае поток действительно должен быть непрерывным - чтобы пауз даже в пару байт не было...
Но такие косяки, даже если поднять скорость нельзя, легко исправить, анализируя состояние DTR!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Ответить

Вернуться в «AVR»