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

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

Добавлено: Чт окт 24, 2019 08:18:56
mastech
Доброго днях. Uart, Avr, ацп.
Сообщения в терминал приходят кракозябрами.
В коде есть сообщение которое отправляется в основном цикле(бесконечно, пока не сработало ни одно условие, после завершения условия сообщение продолжает отправлятся), есть кнопочка которая обрабатывает нажатие и отправляет сообщение, есть ацп при совпадении с условием также отправляется сообшение.
Так вот, если включить и выключить контроллер подключить его к терминалу, то в терминал сыпется мусор, стоит нажать и отжать кнопочку(сообщение по нажатию кнопочки приходи нормально) или срабатывает условие по ацп, то потом сообщение из основного цикла начинает приходить как положено.
Если после инициализации уарта ,ацп и разрешения прерываний, перед основным циклом поставить задержку в 8сек!!(меньше не помогает) то все норм работает.
Куда капнуть?

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

Добавлено: Чт окт 24, 2019 09:41:02
BOB51
Несоответствие кодировки символов в (каком-то компиляторе) МК и кодовой таблицы терминала в ПК.
8)
Латиницу и цифирь должен пересылать без замечаний...
:roll:

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

Добавлено: Чт окт 24, 2019 09:46:58
mastech
Тогда почему после срабатывания одного из условий, сообщение в основном цикле отправляется нормально?

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

Добавлено: Чт окт 24, 2019 09:48:18
ARV
копать всегда в одну сторону: искать ошибку и устранять.
не видя кода, умнее ничего не посоветую :)))

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

Добавлено: Чт окт 24, 2019 11:00:12
NStorm
Какова частота CPU, от чего тактируется, и какова скорость (baudrate) UART'а?

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

Добавлено: Чт окт 24, 2019 14:06:54
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Мгц(покупал когда-то именно под уарт)?
Просто в других проектах использовал эту же библиотеку и внутренний рц генератор и все отправлялось (но там конечно были отдельные посылки).

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

Добавлено: Чт окт 24, 2019 19:05:21
NStorm
Да не, на 9600 должно нормально работать. Просто несколько раз недавно встречал, что на 115200 пытаются заставить работать с 8МГц, а там слишком большая погрешность и процент ошибок. Дело не в этом значит. Наверное дальше код действительно надо посмотреть.

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

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


sA[02][02][1A][05][13]&[18] - мусор
s000S000
s000S000 - норм данные
s000S000
s000S000
s000S000
s000S000
s000S000
s000S000
s000S000

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

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

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

Добавлено: Пт окт 25, 2019 16:50:48
Dimon456
Demiurg Программная ошибка в функции itoa().
Может с частотомером и осциллографом разберетесь или подсказать?

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

Добавлено: Пт окт 25, 2019 17:03:04
Demiurg
[uquote="Dimon456",url="/forum/viewtopic.php?p=3724736#p3724736"]Demiurg Программная ошибка в функции itoa().
Может с частотомером и осциллографом разберетесь или подсказать?[/uquote]
А голова на что? Шапку носить и кашу туда есть?

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

Добавлено: Сб окт 26, 2019 11:04:09
mastech
Причём тут itoa() в первом условии она не используется.

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

Добавлено: Сб окт 26, 2019 13:10:11
Dimon456
mastech писал(а):Причём тут itoa() в первом условии она не используется.
Логично, удалите все остальное и оставьте только первое условие (кстати в нем то же ошибка) - будет работать?

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

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


Удалил из main все (конец строки и количество итераций цикла - эти ошибки можно исключить), в основном цикле оставил только отправку строки uart_puts("test") и возврат каретки uart_putc('\r') и получаем при включении кракозябры пока не нажмешь ресет.
Может так и должно быть?

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

Добавлено: Пн окт 28, 2019 14:29:26
Demiurg
Сделайте так: минимум обвязки на МК. Кварц, преобразователь ТТЛ-UART. Тестовая программа минимальна. Только отправка 1 - символа, скажем, каждые 100-500 мс. Пропишите внаглую код символа, шестнадцатеричным кодом. Скажем, пусть это будет буква "А".

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

Добавлено: Пн окт 28, 2019 15:46:33
Dimon456
mastech, покажите свой makefile, а лучше полностью проект в архив и сюда.

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

Добавлено: Пн окт 28, 2019 17:42:07
NStorm
Что за терминал, что за преобразователь?

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

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

Может в этом дело?

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

Добавлено: Пн окт 28, 2019 21:52:00
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]

тоже к этому склоняюсь

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

Добавлено: Пн окт 28, 2019 21:58:23
Eddy_Em
[uquote="viiv",url="/forum/viewtopic.php?p=3726581#p3726581"]В непрерывном потоке асинхронных символов, терминал может "зацепиться" не за старт-бит, а за другой перепад уровня.[/uquote]
В этом случае поток действительно должен быть непрерывным - чтобы пауз даже в пару байт не было...
Но такие косяки, даже если поднять скорость нельзя, легко исправить, анализируя состояние DTR!