|
|
|
|
1. До этого в данной программе просто не дойдёт. Окончание выдержки произойдёт раньше. Это резерв на тот случай, если вдруг потребуется максимальную выдержку увеличить до 100 минут и более. Но вообще-то всё правильно сделано. После нуля минут (и нуля десятков минут - аналогично) как раз и должна идти девятка. А -1 существует очень недолго, и на индикаторе отобразиться не успевает. 2. И тут всё верно. Дело в том, что на индикаторе остаток минут отображается с округлением в бОльшую сторону. Допустим, задали выдержку 1 минута и запустили отсчёт. Пошёл счёт секунд от 60 до 00. На индикаторе мигает "01". В момент, когда эти 60 секунд прошли, как раз и будет 1 минута 00 секунд. Всё, нулевую-то минуту считать не нужно. И так для любой выдержки. 3. gCQ.6 и gCQ.7 - это биты 8-разрядного регистра, который у нас скрывается под именем переменной gCQ - счётчика квантов по 4 мс (global Counter Quants). Так у меня организовано мигание со скважностью 4. Текущий разряд индикатора будет зажигаться: или в режиме установки выдержки (когда GO = 0) - получим непрерывное свечение, или в режиме счёта (когда GO = 1), но при условии, что два старших бита счётчика квантов gCQ равны 0. (а это длится как раз 1/4 секунды). Вот и мигание. 4. Ничто не мешает погасить индикатор в основной программе, вне обработчика прерываний. |
|
|
Начинаю помаленьку писать код на С. Небольшими частями, с промежуточной отладкой. Заодно в процессе буду корректировать граф. Отчёт со скриншотами, они упакованы вот в этот архив: http://www.pic16.nm.ru/likbezc/picc_screenshots.rar Для написания пробного кода создал специально обученную папку с именем "otladka". Запустил CCS PICC и создал заготовку при помощи PIC Wizard (скриншот 01). Связь через RS-232 не потребуется, поэтому я её отключил (скриншот 02). Для организации прерываний с периодом 4000 мкс удобно применить таймер TMR2 (скриншот 03). Он сразу настраивается так, что потом ничего в коде подгонять не требуется. Прерывания от него предусматриваем (скриншот 04). Получается заготовка (скриншот 05). Тут же можно откомпилировать полученный код и убедиться, что всё в порядке (скриншот 06). Для нормальной работы в связке с Протеусом желательно переключить "Debug File" на тип "Expanded .COD" (скриншот 07). После этого я закрыл компилятор CCS и запустил MPLAB. Работать в MPLAB мне больше нравится. Создал новый проект в MPLAB, используя Project Wizard (скриншот 08). Следует правильно указать путь к установленному компилятору (скриншот 09). Далее как обычно указал имя проекта и папку, в которой он будет размещаться (скриншот 10). Затем добавил файл с исходным кодом otladka.c (скриншот 11). На этом шаге добавлять файлы 16F628A.h и otladka.h, оказывается, не обязательно - они будут автоматически добавлены при компиляции (скриншот 12). А вот далее уже кому как понравится. Я захотел избавиться от лишнего на мой взгляд файла otladka.h, поэтому перенёс его содержимое в основной файл otladka.c (скриншоты 13-14), а затем удалил не требующийся больше файл otladka.h (скриншот 15). В MPLAB тоже полезно переключить "Debug File" на формат "Expanded .COD" для нормальной работы с Протеусом (скриншоты 16-18). На первом этапе я решил написать и отладить код для организации динамической индикации, а также для "пробуждения" PIC при нажатии на любую кнопку. Вот что у меня получилось: http://www.pic16.nm.ru/likbezc/otladka01.zip После запуска PIC уходит в режим "сон", нажатие на любую кнопку вызывает "пробуждение", при этом на индикаторе отображаются две заранее заданные цифры. Вот пока и всё. |
|
|
Предложение - а что, если поступить п другому. Таймер 1 тактировать внешним кварцем на 32768 Гц. Тогда кварц для МК не нужен и частоту делить легче. |
|
|
Да можно бы и так, но есть засада: некуда кварц подключать (все ноги заняты). Да и зачем так делать в этом устройстве? Все равно в режиме "сон" потребляемый ток очень мал, а в рабочих режимах бОльшую часть энергии потреблять будет индикатор. Если бы девайс был с ЖКИ - тогда имело бы смысл снижать потребление энергии самим МК, снижая для этого тактовую частоту. |
|
|
picmaniac: Да можно бы и так, но есть засада: некуда кварц подключать (все ноги заняты). Для изучения советую брать большие МК - типа pic18f4550 USB - тогда ученику будет достаточно изучить один МК прктически на любую свою задачу и ног будет хватать - не придется мудрить. Ну или pic18f452 на худой конец.
|
|
|
Ресурсов PIC16F628(A) достаточно с запасом для изготовления задуманного таймера. Не будем здесь стрелять из пушки по воробьям. Решаем-то ведь конкретную задачу. |
|
|
а под новую задачу ученику нужно будет новый МК изучать ? может универсальный использовать. вроде пока особых переделок не потребуется. |
|
|
- |
|
|
Мы сейчас делаем РЕАЛЬНУЮ конструкцию. Зачем преднамерено удорожать ее стоимость? А PIC16F628(A) и есть универсальный и не дорогой. |
|
|
http://trt.ru |
|
|
|
|