| ||
|
|||||||||
Cайт и форум для электриков HARDW.net |
Как сделать автосигнализацию с бесконтактными ключами на PIC16C505 с использованием компилятора HI-TECH C 7.85Программирование микроконтроллеров семейства PIC12CXXX вызывает известные трудности в связи с ограничеными ресурсами и неудобствами вызываемыми структурой памяти. Компиляторы с языков более высокого уровня могут представить некоторый выход из ситуации. Как оказалось компилятор HI-TECH C представляет собой очень даже неплохой выход. Здесь приведен вариант автомобильной сигнализации: реализация небольшого мелкосерийного проекта. Главная цель: минимальная цена; вторая повышение эффективности противоугонных свойств введением дополнительных секретов. Управление сигнализацией производиться с помощью одного транспондера и двух приемных антен. Транспондеры для управления выбраны ввиду их высокой надежности (по сравнению с технологией контактных идентификаторов TouchMemory) и неприхотливости в обслуживании (по сравнению с радио-брелками). Подробнее о примененной технологии см. проект "Как сделать простую систему бесконтактной идентификации". Для отключения сигнализации и снятия блокировки необходимо последовательно поднести транспондер к обеим антеннам. Идентификация транспондера первой антенной отключает сигнал тревоги, идентификация второй антенной снимает блокировку. При отключенной тревоге, но не снятой блокировке, двигатель можно завести на короткое время, которое уменьшается с каждой новой попыткой запуска двигателя. Процесс напоминает деградацию системы зажигания и заканчивается включением сигнала тревоги и переходом в режим охраны. Такой режим расчитан на сценарий насильственного угона и дает водителю больший простор для действий. Секретом служит расположение приемных антенн и сценарий активизации блокировок, в рассчете на злоумышленников незнакомых с системой (некая вариация функции AntiHiJack). Введена также возможность обнаружения сканирования кодов транспондеров. Принципиальная схема
Особенности компилятораНесмотря на желание использовать все возможности синтаксиса C, следует все время держать в памяти схемы трансляции C конструкций в asm код и представлять во что это может превратиться. Например, при использовании максимальной оптимизации предоставляемой компилятором конструкция Оптимизатору HI-TECH компилятора довольно часто приходиться помогать, когда речь заходит о предельной компактности кода. Например, в блоке цепочки присвоений переменным значений может оказаться, что переменные находяться в различных банках памяти. Компилятор в таком случае начинает дополнительно вставлять команды переключения банков bcf 4,x и bsf 4,x . При этом от того, в какой последовательности инициализируются переменные зависит число дополнительных команд. Для минимизации числа команд я использую такую последовательность: переменные из банка 0, 1, 3, 2. Проблемы компиляцииКомпиляция оказалась проблемой нетривиальной, что и можно было ожидать учитывая присутствие ассемблерного модуля и непростых ограничениях при использовании страниц программной памяти. Увидев в документации обнадеживающую фразу о том, что использовать команды линкера программисту никогда не понадобиться я попытался не вникая в подробности в лоб скомпилировать С и asm модули. Естественно, произошла ошибка размещения моего ассемблерного модуля. Беда в том, что в модуле используются переходы с использованием модификации регистра PCL, а такой код может распологаться только в областях с маской x0xxxxxxxx . Попытки манипулирования опциями в описании областей psect в ассемблерном файле ни к чему не привели, а только обнаружили отказ компилятора в обработке опций LIMIT и WITH. Стало очевидно, что на такую интеграцию ассемблера и C разработчики, явно, не раcсчитывали. Пришлось скачать всю документацию, какая была на сайте HI_TECH и методом ненаучного тыка пробовать создавать командный файл для линкера. Попыток с 50-и линкер перестал выдавать сообщение об ошибках. Поскольку компилятор размещает программный модуль только в одной странице памяти, то для оптимального использования памяти программа была разбита на множество мелких модулей. КомпиляцияКомпиляция производится запуском командного файла Koyot.bat содержащего строку:
где koyot.cmd - файл содержащий управляющие опции компилятора:
Для ассемблерной секции receipt явно указан адрес размещения 210h в связи с тем, что программный модуль настроен на исполнение во второй странице программной памяти. Смещение в 10h от начала страницы определяется с учетом размещения в начале страницы служебной таблицы для адресов возврата из подпрограмм генерируемой компилятором.. Состав проектаИсходные тексты (zip 11 Kb)Проект состоит из следующих файлов:
Готовые изделияВ настоящее время фирма SKARTAS (тел. +370-2-436054 Вильнюс, Станислав Картонович ) может предложить серию недорогих автомобильных охранных устройств пригодных для любых автомобилей. Описания устройств приведены ниже.
Как сделать автосигнализацию с бесконтактными ключами на PIC16C505 с использованием компилятора HI-TECH C 7.85 Просмотров сегодня: 5652, всего: 5652 |
|
|||||||||
| |||||||||
|