Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC

1 47 99

Господа, если речь идет о частоте вращения, желательно уточнить характеристики входного сигнала (по крайней мере соотношение длительностей импульса/паузы и возможность дребезга). Они могут повлиять на алгоритм. И еще - для таких измерений правильнее мерить не один, а десятка два периодов, потому что иначе показания будут скакать. В конце концов, частотомеры аж целую секунду частоту измеряют - ваш-то девайс чем хуже

 

Zandy: предлагаю picmaniacу окончательно сформулировать задание
А чё, самим слабо? Я и так уже три штуки сформулировал!
положительного полупериода (это проще) или всего периода (немного сложнее)
Всего периода, чтоб скважность импульсов на входе не влияла на результат.

Вообще-то входные импульсы удобно подать на вход, от которого возможно прерывание при изменении уровня. В принципе, можно и компаратор внутренний задействовать. Один из внутренних таймеров инкрементировать постоянно от тактового генератора. А в прерываниях проверять значения в регистре (или регистрах, если 16-разрядный) таймера.

А вообще-то мы начинаем делить шкуру неубитого медведя. Техзадания пока нет. И начать лучше именно с его формулировки. Только я торопиться не буду, попробуйте сами его составить.

Уфф, книгу по графам еле скачал с 3-й попытки только что. 2 раза сервер меня отключал почему-то.

 

picmaniac: А чё, самим слабо?
Подождем Splav56 - его идея. Может он под какое-нибудь практическое применение хочет "замутить".
Я вот слышал, что хороша книжка Яценкова. Зашел в пару магазинов - нет. Давно была - вся распродана. Может кто в электронном виде где видел?
Хочется какую-то монографию. А то материалов вроде много, но все расбросаны по разным книгам статьям, сайтам и т. д. Какого-то систематизированного подхода душа требует.

 

У меня она только в бумажном виде есть. Купил в Москве, когда в командировку ездил 3 года назад. Только вот точно не помню в каком именно магазине... 200 руб стоила.
Книга неплохая, но это в основном справочник по устройству и особенностям МК и по работе с MPLAB. Как справочник хороша, как учебник - ИМХО не подходит. Пользы мне от этой книги было немного.
Есть ещё книга Шпака по МК PIC и AVR. Она у меня есть в электронном виде, скачал откуда-то. Там о программировании на Си.
Самые лучшие учебники для начинающих (ИМХО опять же) - это цикл статей ASD, статья М.Гладштейна в "Радио", ikarab.narod.ru, ну и наш Ликбез. Есть ещё статеечка "Что такое PIC". И обязательно читать распечатанный на бумаге даташит на МК, строго обязательно! И не по диагонали, а не спеша и вдумчиво. По одной главе в день вполне можно осилить. По удельному весу полезной информации даташит не имеет себе равных.

Кстати, чем плоха книга Урусова, Сташина, Мологонцевой? Ссылку я выше давал. Вспоминаю, как мне дали посмотреть эту книгу лет пять назад "спецы" из нашего Политеха. Они с MCS-51 тогда как раз работали. Вот я и пытался обратиться к ним за помощью. "Как", - спрашиваю - "научиться контроллеры самому программировать?" Бесполезно - пальцы веером. Так вот, смотрел я на книгу эту тогда как на древнеегипетскую картинку с иероглифами. Теперь, конечно, смешно. Оказалось всё не так уж сложно Сам разобрался.

 

Zandy: Splav56, вы опять в строю, или как?

А я и не выбывал из него. Просто чукча иногда читатель, иногда - писАтель. Это как ШАМАН кости раскинет.

picmaniac: А чё, самим слабо?

Да нет, не слабо. Просто хочется не торопясь обсудить и написАть коллективно, оговаривая все нюансы.

picmaniac: Вообще-то входные импульсы удобно подать на вход, от которого возможно прерывание при изменении уровня.

Если использовать прерывания, то да. Предлагаю в качестве такого порта использовать PORTB.4 Это позволит при необходимости нарастить количество входных каналов до 4-х. <PORTB.4:PORTB.7>. Так будет более универсально.

picmaniac: И начать лучше именно с его формулировки.

Начало (скелет) я уже сформулировал, осталось внести уточнения, которые устраивали бы всех.

Итак: ТЕХЗАДАНИЕ № 4. (Болванка)

1. Устройство предназначено для контроля частоты вращения объекта и отклонения этой частоты от номинального значения с выводом результатов контроля на визуальный индикатор (светодиод, лампа накаливания).
2. Количество каналов контроля - до 4-х.
3. Номинальная частота вращения - 25 Гц (снижена для небольшого усложнения).
4. При номинальной частоте вращения +/- 5% индикатор постоянно светится.
5. Отклик на изменение частоты:
- в пределах от +/-5% до +/- 10% -индикатор мигает с частотой 1 Гц.
- в пределах от +/- 10% и ниже - индикатор гаснет.
6. Входной сигнал: импульсная последовательность, снимаемая с индуктивного датчика (для небольшого усложнения схемотехники формирователя) амплитудой 50 вольт и скважностью 0,1 - 0,2.
ВременнАя стабильность входной последовательности +/- 0.1% (0,5 Гц)
7. Программу составить с использованием аппаратного прерывания по изменению уровня на входе контроллера.
8. Предусмотреть один канал управления для отключения внешних устройств при снижении контролируемого параметра на величину, большую +/- 10%.

 

Замечания по предложенному техзаданию:
1. Это техзадание НОМЕР ЧЕТЫРЕ! Ага - поправили.
2. При номинальном режиме лучше пусть индикатор изредка вспыхивает. Это будет свидетельством того, что режим в норме, устройство работает нормально, и МК не "завис".
3. При малом отклонении контролируемого параметра от нормы - вспышки должны стать чаще и промежуток между ними поменьше. Это привлечёт внимание.
4. При недопустимом отклонении контролируемого параметра от нормы - вспышки должны стать частыми и с минимальным промежутком. Это ещё лучше привлечёт внимание. А на погасший индикатор наоборот внимания не обратят сразу.
5. Через какое время должен происходить отклик устройства на выход измеряемого параметра за установленные рамки? Иными словами - быстродействие.
6. Не описаны действия устройства после возвращения контролируемого параметра в установленные рамки. Требуется ли вмешательство пользователя?
7. Пункт 7 в техзадании лишний. Как именно составить программу - решается не на этом этапе.
8. Требуется ли вообще вмешательство пользователя в работу устройства?
9. На 4 контролируемых параметра - 1 выход?

Вот пока всё. Будет над чем поразмыслить.

 

Splav56: 6. Входной сигнал: импульсная последовательность, снимаемая с индуктивного датчика (для небольшого усложнения схемотехники формирователя) амплитудой 50 вольт и скважностью 0,1 - 0,2.
Предлагаю аппаратный формирователь не затрагивать. Пусть будет лог. уровень. Мы же все-таки в этой ветке программировать собрались. Если встроенный компаратор использовать - другое дело.
Splav56: ВременнАя стабильность входной последовательности +/- 0.1% (0,5 Гц) Чего-то я не понял. А что мы измерять собираемся?
Предлагаю в качестве выхода на с/д использовать RB1. С/д подключаем к питанию. На RB2 - канал управления. Лог. 0, если <10% и 1, если >10%
А такой ситуации, как отсутствие сигнала на входе не предполагается вообще?

Splav56: 2. Количество каналов контроля - до 4-х.
Я так понял, что данная опция - не в этой жизни?

 

Простите, что вмешиваюсь, но вот что нашёл - http://kulakov.ru/rassylka.htm
Может кому пригодится...

 

Если уж говорить про лучшую визуализацию, то самое лучшее - разноцветные светодиоды, расположенные "в столбик". А часто или редко мигает - весьма субъективные вещи. Но picmaniac, он же хитрый. Усложнить задачку хочет.

Левон: Может кому пригодится...
Спасибо Левон. Я это уже читал. Там все весьма скромненько. Ну только для самого-самого начала старта.

 

Zandy: Усложнить задачку хочет
Я об эргономике забочусь!

Левон: Простите, что вмешиваюсь Простить не можем, т.к. вмешиваетесь слишком редко Появляйтесь почаще.