Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
Карта сайта | Пишите нам | В избранное | eng     

Внимание! У нас изменились номера телефонов. Звоните:
(495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91;
+7(909) 638-88-00 и +7(903) 530-10-01 (Билайн).
       о фирме        электроника     обратная связь

Микроэлектронные проекты. Александр Елисеев, Станислав Картонович. Как сделать автосигнализацию с бесконтактными ключами на PIC16C505 с использованием компилятора HI-TECH C 7.85

Как сделать автосигнализацию с бесконтактными ключами на PIC16C505 с использованием компилятора HI-TECH C 7.85

 
Программирование микроконтроллеров семейства PIC12CXXX вызывает известные трудности в связи с ограничеными ресурсами и неудобствами вызываемыми структурой памяти. Компиляторы с языков более высокого уровня могут представить некоторый выход из ситуации. Как оказалось компилятор HI-TECH C представляет собой очень даже неплохой выход.

Здесь приведен вариант автомобильной сигнализации: реализация небольшого мелкосерийного проекта. Главная цель: минимальная цена; вторая повышение эффективности противоугонных свойств введением дополнительных секретов.

Управление сигнализацией производиться с помощью одного транспондера и двух приемных антен. Транспондеры для управления выбраны ввиду их высокой надежности (по сравнению с технологией контактных идентификаторов TouchMemory) и неприхотливости в обслуживании (по сравнению с радио-брелками). Подробнее о примененной технологии см. проект "Как сделать простую систему бесконтактной идентификации".

Для отключения сигнализации и снятия блокировки необходимо последовательно поднести транспондер к обеим антеннам. Идентификация транспондера первой антенной отключает сигнал тревоги, идентификация второй антенной снимает блокировку. При отключенной тревоге, но не снятой блокировке, двигатель можно завести на короткое время, которое уменьшается с каждой новой попыткой запуска двигателя. Процесс напоминает деградацию системы зажигания и заканчивается включением сигнала тревоги и переходом в режим охраны. Такой режим расчитан на сценарий насильственного угона и дает водителю больший простор для действий. Секретом служит расположение приемных антенн и сценарий активизации блокировок, в рассчете на злоумышленников незнакомых с системой (некая вариация функции AntiHiJack). Введена также возможность обнаружения сканирования кодов транспондеров.

Принципиальная схема

*Номиналы некоторых элементов могут нуждаться в корректировке

Особенности компилятора

Несмотря на желание использовать все возможности синтаксиса C, следует все время держать в памяти схемы трансляции C конструкций в asm код и представлять во что это может превратиться. Например, при использовании максимальной оптимизации предоставляемой компилятором конструкция
Flag1=!Flag1
может занять около 11-ти операторов в зависимости от физического расположения бита Flag1, а эквивалентная конструкция
if (Flag1) Flag1=0; else Flag1=1;
займет всего 5-ть операторов .

Оптимизатору 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 содержащего строку:

picc < koyot.cmd

где koyot.cmd - файл содержащий управляющие опции компилятора:

-G -O -16C505 -Zg9 -INTEL -D24 \
-EKOYOT.ERR -PSECTMAP -ASMLIST \
-IC:\_MY\KOYOT \
-MKOYOT.MAP \
-L-Preceipt=210h \
KOYOT.C Task_Gen.c Task_LED.c Task_Sir.c Task_Opn.c Task_Cls.c \
CRECEIPT.as

Для ассемблерной секции receipt явно указан адрес размещения 210h в связи с тем, что программный модуль настроен на исполнение во второй странице программной памяти. Смещение в 10h от начала страницы определяется с учетом размещения в начале страницы служебной таблицы для адресов возврата из подпрограмм генерируемой компилятором..

Состав проекта

Проект состоит из следующих файлов:

  • koyot.c - модуль инициализации и основной процесс
  • Task_Cls.c - модуль задачи обслуживания сигнала "Закрыть"
  • Task_Gen.c - модуль задачи обслуживания режимов сигнализации
  • Task_led.c - модуль задачи сигнала светодиода
  • Task_Opn.c - модуль задачи обслуживания сигнала "Открыть"
  • Task_Sir.c - модуль задачи обслуживания сигнала сирены
  • koyot.h - заголовочный файл модуля основного процесса
  • main.h - главный заголовочный файл
  • creceipt.as - модуль процесса приема сигналов транспондеров

Готовые изделия

В настоящее время фирма SKARTAS (тел. +370-2-436054 Вильнюс, Станислав Картонович ) может предложить серию недорогих автомобильных охранных устройств пригодных для любых автомобилей. Описания устройств приведены ниже.


Простейшее противоугонное средство.
Описание (pdf 128 KB)


Простой иммобилайзер на транспондерах.
Описание (pdf 307 KB)


Противоугонная сигнализация на транспондерах.
Описание (pdf 416 KB)


02.01.2001

 Разместите Ваш проект у нас на сайте и его смогут увидеть сотни посетителей в день. Ваши проекты присылайте вебмастеру.
Правила оформления проектов
  1. Необходимо наличие схемы, описания устройства и т.д. (для отдельных проектов - драйвера, программное обеспечение и их описание)
  2. Схемы и другие картинки должны быть в форматах .jpg или.gif. К ним обязательно должны идти подписи, поясняющие, что на данной схеме (картинке) изображено.
  3. Описание устройства - в форматах .doc, .txt или .html.
  4. Проект не должен нарушать чьих-либо авторских прав.
Ваши проекты присылайте вебмастеру
Приглашаем специалистов
В России кризис и увольнения персонала, а в Телесистемах, как обычно, не так как у всех: мы расширяем деятельность, набираем новых сотрудников и ищем новых партнеров.
Изделия для разработчиков
Программатор «PICPROG» «PICPROG» - универсальный промышленный программатор.
Копировщик PIC16x8x Копировщик PIC16x8x - тиражирование в автономном режиме.
Наши телефоны: (495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91, мобильные: (903) 530-10-01 и (909) 638-88-00 (БиЛайн).
E-mail:

Copyright © ООО "Телесистемы", 1997 — 2024    Копируйте на здоровье! За ссылку на www.telesys.ru мы вам будем очень признательны.

Rambler's Top100