http://forum.getchip.net/

Шаблоны для Билдера
http://forum.getchip.net/viewtopic.php?f=18&t=743
Страница 2 из 6

Автор:  lega67 [ 16 июл 2016, 22:00 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Привет всем! Очень вовремя появился шаблон на мегу328. Огромное вам спасибо! Как раз под ардуину-нано начал проектик, и обнаружил проблему. Даже две, но по порядку.
Первая.При передаче строки в уарт из основного цикла пропадает 3-й символ. Если несколько строк подряд, то остальные передаются правильно без пропусков. От скорости передачи не зависит. Если отвечать сразу в прерывании приёма то строка ответа передаётся правильно. Но хотелось бы обрабатывать принятую строку в основном цикле, так как будут и таймера и внешние прерывания более важные, чем передача по уарту.
Вторая серьёзней. При передаче цифрового десятичного значения теряются 0. Например передаём 100 терминал принимает 10, 1005 - 15, 1020 - 120, 10200 - 120. 10 передаётся правильно.
На основе шаблона нарисовал тестовую програмку, часть от своей задачи. Тестирую с программой Terminal1_9_b. Формат команды <числовое_значение><символ_команды>. Например: 1023, ; 3A ; ?ae

Вложения:
errUART.zip [32.52 КБ]
Скачиваний: 525

Автор:  GetChiper [ 17 июл 2016, 17:34 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Довольно много мелких ошибок в программе
Например:
- модуль Print не подключен к модулю UART (как вообще он что-то печатал - для меня загадка о_О)
*модуль Print универсальный и может работать с любым устройством ввода вывода, поэтому изначально он не привязан ни к чему. Примеры привязки к разным модулям уже прописаны - нужно только раскомментировать соответствующие подпрограммы связи.
- в основном цикле (основная программа Programm) используется ret (переход по нему непредсказуем)
- как-то странно заканчивается цикл расшифровки строки.
- _Print_String("A long string of text for transmission over serial port") - строка текста длинней чем величина буфера заданного по умолчанию (32 символа)

По пропаданию нулей и третьему символу передачи строки - подтверждаю - есть такое.

Причем если нули пропадают чисто из за моей ошибки в коде, то с третьим символом очень интересная история - пришлось поломать голову.

Проблемы решены. Обновил архивы шаблонов.
Ниже немного подправленная программа (обкатал на железе - все работает).

Спасибо за тестирование :)!

Вложения:
errUART-fixed.zip [33.95 КБ]
Скачиваний: 555

Автор:  lega67 [ 18 июл 2016, 20:36 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Премного благодарностей! А как без ошибок-то :oops: век живи век учись :geek:
Вроде раскомментированы вызова инициализации и печати для UART-а были, а как иначе...
_ PrintString(text) выводит в уарт без использования буфера, из флешь, вроде так... а-а-а через буфер...
Programm - взял что ближе было, основной цикл в main... флаговый автомат типа...
Буду дальше писать программку. Обожаю АБ!

PS: посмотрите процедуру _UART_PUSH_r16 в модуле UART. В Z указатель на входной буфер, а дальше проверка выхода за пределы с выходным буфером.

Автор:  GetChiper [ 18 июл 2016, 23:39 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

По _UART_PUSH_r16 - все правильно.
Есть указатель точки заполнения буфера и указатель точки извлечения из буфера. А буфер один и тот-же.

Автор:  lega67 [ 19 июл 2016, 17:59 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Спасибо, разобрался ;)

Автор:  Shaman [ 14 дек 2016, 19:44 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Добрый день!
Назрели несколько вопросов по модулю шим. Что значит фоновый режим.
И что можем паралельно опрашивать в обработчике таймера. Отразится ли это на формировании шим сигнала.Может кто расскажет.

Автор:  GetChiper [ 14 дек 2016, 20:16 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Под фоновым режимом понимается то, что сигнал ШИМ формируется независимо от основной программы. И для основной программы сам процесс формирования незаметен.

В обработчике таймера можно делать все что угодно. Единственно, необходимо эти действия делать максимально короткими для того чтобы не искажался ШИМ сигнал.
До пары сотен команд можно выполнять без каких либо заметных искажения.

Автор:  Shaman [ 14 дек 2016, 21:54 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Спасибо!
В обработку таймера,хотел поставить сегментный индикатор. Что бы показывал задание шим.
Тогда значит можно.

Автор:  Shaman [ 20 дек 2016, 20:13 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

Добрый день!
Разбираюсь с модулем PWM, где в начале написано-Скважность сигнала (уровень шим) задаётся значениями в переменной PWM_Levels[N] (где N- номер линии) -можно изменять в любом месте программы.В общим такой переменной не нашол, прописана PWM_Level- в коментариях значится как -таблица уровней ШИМ.Может там, где-то опечатка или я проглидел.
И вот ещё непонятка, для одного какнала ШИМ сколько добовлять, формирование уровней шим PWM_DO (number)

Автор:  GetChiper [ 20 дек 2016, 21:16 ]
Заголовок сообщения:  Re: Шаблоны для Билдера

PWM_Levels - это массив значений для ШИМ. Значений там ровно столько, сколько Вы задали в константах ШИМ-выходов.

значения записываются следующим образом

r16 --> PWM_Levels[1]
или так
125 --> PWM_Levels[1]

1 - это номер ШИМ выхода

еще можно пользоваться готовыми макросами - еще понятней будет
125 --> PWM_Levels[1] = _PWM_Set (1, 125)

а еще в константах можно определить имена для каждой линии и станет совсем понятно
_PWM_Set (1, 125) = _PWM_Set (RED_RED, 125)


величина значения для ШИМ - байт
то есть от 0 до 255

Страница 2 из 6 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/