Программирование контроллеров

Vасилич
ubd:

Хотя сколько я занимасю PICами так до сих пор и не понял, зачем этот бит WDT, т.к. все мои программы работают одинаково что с ним что без него.

Ну это до поры - до времени.
Пока не пойдут серьёзные проекты в промышленном масштабе.
Не дай бог произойдет сбой от помехи (а он обязательно произойдет) и поменяется значение какого нибудь регистра или кучи регистров. Программа может подвиснуть. Вот тут сторож и перезапустит контроллер.
Иначе кранты.
Для авиамоделей тем более актуально.

ubd

Вот тут сторож и перезапустит контроллер.

Буду иметь в виду.
По умолчанию WDT всегда стоит, я его и не убираю.

Ну прога то работает?

msv

Возможно просто не замечаешь, что проц периодически ресетится…
Но это чревато, если не используешь, надо отключить.
В принципе WD актуален для контроллеров в производстве, работающие непрерывно и круглосуточно многие месяцы и годы… Там действительно есть вероятность сбоя от шайтана… Для наших минутных дел, достаточно более-менее чисто написать код.

Vасилич
msv:

Возможно просто не замечаешь, что проц периодически ресетится…

Конечно не замечает!
В силу специфики приборов, я в своих программах WDT сбрасываю в прерывании каждые 5 млс. И ещё восстанавливаю значения жизненно важных регистров.

ubd

Если бы он ресился то прога начинала работать за ново, это бы было явно заметно, но ведь этого не проиходит. А что может реситься и не сначала запускаться прога? Как бы реситься незаметно внешне?

Vасилич
ubd:

Если бы он ресился то прога начинала работать за ново, это бы было явно заметно, но ведь этого не проиходит. А что может реситься и не сначала запускаться прога? Как бы реситься незаметно внешне?

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

Vitec

Всё, я разобрался, дело действительно было в настройке порта MCLR. Как только поменял - всё заработало. И я понял, почему не замечал этого. У меня в коде сначала стоит проверка состояния 4 вывода - как раз GP3/MCLR, если на нём 0, то загорается красный и дальнейшие проверки не проходят. Если там 1, то происходит сброс контроллера. Внешняя индикация от этого не меняется, так как до включения других огней дело никак не доходит.
Таким образом, с этой задачей разобрались. Всем за это спасибо, особенно ubd.

Следующим гвоздём нашей программы по освоению контроллеров будут импульсные устройства. Как можно осуществить управление таким индикатором, как АЛС318? Наверное нужно прописывать сами символы (вроде знакогенератора)? Как учитывать время считывания, чтобы получалось одинаковое время горения сегментов индикатора при динамической индикации? Как можно сделать бегущие символы на индикаторе?

ubd

Как можно осуществить управление таким индикатором, как АЛС318?

Там в одной из книг, которые я тебе высылал, всё разжёванно по этой теме. Всё волшебство делает орператор LOOKUP. Почитай о нём как он работает.

А что за устройство хочешь делать? Есть много готовых проектов, с применением 7ми сегментных индикаторов: термометр, амперметр/вольтметр.

Как можно сделать бегущие символы на индикаторе?

Это уже дело техники, как разберёшься, как формировать динамическую индикацию, так и бегущие символы сделать можно.

Vitec

А что за устройство хочешь делать?

Пока что просто изучить контроллер. Рылся в своих радиодеталях, нашёл индикатор АЛС318. Захотел научить контроллер управлять им. Скоро найду 16-кнопочную клавиатуру, захочу с её помощью управлять контроллером.
А вообще хочу в ближайшее время сделать для работы устройство, напоминающее о пробе тормозов. Ещё хочу сделать регулятор хода двигателя, только в нём будут не такие управляющие сигналы, как в ваших регуляторах.
Также есть задумка сделать макет участка железной дороги и всеми устройствами будут управлять контроллеры. Сейчас я сделал устройство для управления проходным светофором, а ещё будут входные, выходные светофоры (у них одинаковая логика, но разные источники управляющих сигналов), маневровые светофоры, устройства маршрутного управления стрелками… Короче, много чего.

ubd

Ещё хочу сделать регулятор хода двигателя, только в нём будут не такие управляющие сигналы, как в ваших регуляторах.

С управляющими сигналами, понятно, можно сделать любые. Но если будешь делать, то у меня есть схемы выходных каскадов, для реверсивных регуляторов хода, на токи от 10 до 35А, можно использовать их.

Vitec

…схемы выходных каскадов, для реверсивных регуляторов хода, на токи от 10 до 35А

Интересуюсь. На первое время мне ружно всего на пару ампер. На 35 - это немножко попозже.

ubd

rcopen.com/forum/f8/topic174497/41

Вот здесь пост № 46, схема выходного каскада с примером подключения к процу. Та схема, с теми транзисторами, ампер 12-15. Если транзисторы поставить по слабее то ток меньше будет. Можно в SO-8 корпусе (IRF7413 в паре c IRF7416), ампер 6-7 потянет.

Vitec

Ну, я посмотрел ту схему. Я почему-то привык, что если проводники нарисованы накрест и там не точки, то они электрически изолированы, а если точка есть - то электрически соединены. Это учтено на предлагаемой схеме? Просто там в архиве ещё схема, где этого точно не учтено. Я таким схемам не доверяю. А что значит буква Е рядом с номиналом резистора (например, 10Е)? Насколько я знаю, что номинал в Омах обозначается цифрой без букв.
Драйвер для полевого транзистора нужен когда его нагрузка близка к максимальной или вообще всегда?

nigyl

Хотелось бы снова возобновить свой вопрос… задавал я его пару месяцев назад…
можно ли на базе АЦП с цифровыми портами сделать свой программатор? ну или хотя бы просто прошить один контроллер, который будет в программаторе?

ubd

Ну, я посмотрел ту схему. Я почему-то привык, что если проводники нарисованы накрест и там не точки, то они электрически изолированы, а если точка есть - то электрически соединены. Это учтено на предлагаемой схеме?

Та схема которая в хорошем качестве, это моя схема, там всё точно 100 пудов. И где перекрест проводников без точки, это просто перекрест без контакта, а с точкой это соединение.
Схема которая в плохом качестве, это исходная схема, и она то же правильная, её куча народу собрала, всё работает. Если у тебя нагрузки не большие 2-3А, то можешь выходной каскад взять из этой схемы которая в плохом качестве. Если токи 7-8А и выше, то только с драйверами.

Номинал в омах могут обозначать как буквой Е, так и просто цифрой. Просто цифройЮ это пошло с соведских времён, тогда такой был стандарт, в журналах “радио” омы ни как не обозначали, просто цифра. Импортное обозначение, которое встречается сейчас очень часто - буква Е.

можно ли на базе АЦП с цифровыми портами сделать свой программатор? ну или хотя бы просто прошить один контроллер, который будет в программаторе?

Как понять свой программатор? Тебе трудно собрать уже по готовой схеме? Схемы рабочие и легко повторяемые. И зачем в программаторе использовать АЦП? Они там не нужны, там чисто цифровой сигналл - 1 или 0.

Если тебе нужно просто прошить один контроллер, то проще собрать программатор по готовой схеме, по другому ни как. В любом случае к компу подсоединять.

msv

можно ли на базе АЦП с цифровыми портами сделать свой программатор? ну или хотя бы просто прошить один контроллер, который будет в программаторе?

Вопрос достоин быть в номинации “самый красивый вопрос ветки”? Голосуйте…

nigyl
ubd:

Как понять свой программатор? Тебе трудно собрать уже по готовой схеме? Схемы рабочие и легко повторяемые. И зачем в программаторе использовать АЦП? Они там не нужны, там чисто цифровой сигналл - 1 или 0.

.

перечитайте мой вопрос…я специально пометил…что на моем модуле есть цифровые порты… а если вы не в курсе, это и есть 1 и 0…
вот я и спрашиваю…можноли прошить контроллер посылая 1 и 0 не с программатора а со своего модуля АЦП-ЦАП…

EagleB3
nigyl:

а если вы не в курсе, это и есть 1 и 0…
вот я и спрашиваю…можно ли прошить контроллер посылая 1 и 0 не с программатора

А вот вы нам и расскажите, можно или нет. Для этого Вам, правда, придется углубленно почитать раздел “программирование по SPI” даташита того контроллера, который Вы собираетесь программировать. И, возможно, написать свою собственную программу для управления Вашим модулем - должен же ему кто-то скомандовать скока нулей и единиц посылать, куда, когда…

nigyl

на счет программок для модуля проблем нет…
а вот проблемка такая…
каким образом на контроллеры подается прошивка? с какой то частотой? и т.д…
грубо говаря…расскажите мне последовательность импульсов на какойнить контроллер… К примеру ATmega16…или любой другой атмел

mikki
nigyl:

вот я и спрашиваю…можноли прошить контроллер посылая 1 и 0 не с программатора а со своего модуля АЦП-ЦАП…

У тог пика что у Вас отсутствует возможность доступа с своей флеш памяти из программы. Поэтому максимум что Вы сможете - подключить колодку для внутрисхемного программирования.
Если хотите менять программу на лету или менять большие массивы данных, хранимых в памяти программ - используйте PIC16F7хх или старше.
Погуглите бутлоадер для PIC - очень удобная штука))).

EagleB3
nigyl:

К примеру ATmega16…или любой другой атмел

Все расписано в даташите, в разделе “Программирование по SPI”. Возьмите Евстифеева, (Микроконтроллеры AVR семейства Mega. Руководство пользователя. Евстифеев А. В.), которая представляет собой по сути перевод даташита. И читаете. Раздел 14.2, стр.518.