Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Как сделать автосигнализацию с бесконтактными ключами на 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:_MYKOYOT
-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 от начала страницы определяется с учетом размещения в начале страницы служебной таблицы для адресов возврата из подпрограмм генерируемой компилятором..

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

Исходные тексты (zip 11 Kb)

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

  • 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)


C этой схемой также часто просматривают:

КАК ПОВЫСИТЬ СЕЛЕКТИВНОСТЬ ПРИЕМНИКА
КАК УЛУЧШИТЬ КАЧЕСТВО ПРИЕМА
Как собрать стробоскоп. В подробностях...
Как подключить светодиод к 5В.
Как запустить FC-PGA процессор на PPGA плате.
Как сделать простую систему бесконтактной идентификации
Приёмник POCSAG кода
Контроллер графического ЖКИ высокого разрешения
Низкочастотный синусоидальный генератор с шагом сетки 0,01 Гц

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU


Последние поступления

Подключение энкодера к микроконтроллеру PIC

Счётчик людей в помещении, управляющий освещением

Велокомпьютер на микроконтроллере PIC16F628A

Устройство ввода-вывода на микроконтроллера

Два термометра на PIC16F628A и DS18B20

Светодиодные часы с циферблатом

Двоичные часы

Два вывода микроконтроллера PIC управляют шестью светодиодами

Цифровой программируемый таймер на микроконтроллере PIC16F628A

Устройство рисования в воздухе на ATtiny2313



© 2003—2024 «KAZUS.RU - Электронный портал»