Сигнализация авто с датчиком удара
Сигнализация авто с датчиком удара
Здравствуйте. Помогите реализовать проект на attiny 13.Я очень далек от программирования, только готовые HEXы прошивал. помогите написать программу, что б я в ней мог разобраться и в протеусе заодно попрактиковаться на конкретном примере. Мне самому по силам собрать данный функционал на одной 561ТМ2 (cd4013) за день, вместе с установкой на авто. Хочется что-то новое попробовать.
Это простая добавка к штатной сигналке авто. У штатной есть датчик объма и датчик наклона, а датчика удара нет. Сами датчики удара у меня валяются, они вполне стандартные, двухуровневые, по схеме (SW3-6). Срабатывание первого уровня (1lvl) выдает кратковременный крик сирены (BUZ), второй уровень (2lvl)- 30сек крик. Датчики будут запараллелены для передней и задней части авто. При постановке на охрану (SW1)- (U1) ждет сигналов с датчиков и выдает положительный импульс на (Q1), при снятии (SW2) - не реагирует. Светодиод (D5) только для протеуса.Вот и весь алгоритм.Но:
Самое сложное - это команды постановки и снятия с охраны. Я их нашел в автомобиле - положительные импульсы +12в. Но есть проблема - при закрытии на проводе закрывания отличный прямоугольник, но на проводе открытия в это время проскакивает ощутимый "тычек" и наоборот, соответственно, при открывании. Отфильтровать RC-цепями (R1R2C1 и R7R8C2) довольно коряво получается. Но получается. Усложнять аппаратную часть неохота, правильнее программно решить. Поэтому лучше сравнивать длительности импульсов и выбирать бОльший.
Кто готов помочь с программой, фьюзами, да и со схемой, если есть ошибки - буду очень признателен.
Это простая добавка к штатной сигналке авто. У штатной есть датчик объма и датчик наклона, а датчика удара нет. Сами датчики удара у меня валяются, они вполне стандартные, двухуровневые, по схеме (SW3-6). Срабатывание первого уровня (1lvl) выдает кратковременный крик сирены (BUZ), второй уровень (2lvl)- 30сек крик. Датчики будут запараллелены для передней и задней части авто. При постановке на охрану (SW1)- (U1) ждет сигналов с датчиков и выдает положительный импульс на (Q1), при снятии (SW2) - не реагирует. Светодиод (D5) только для протеуса.Вот и весь алгоритм.Но:
Самое сложное - это команды постановки и снятия с охраны. Я их нашел в автомобиле - положительные импульсы +12в. Но есть проблема - при закрытии на проводе закрывания отличный прямоугольник, но на проводе открытия в это время проскакивает ощутимый "тычек" и наоборот, соответственно, при открывании. Отфильтровать RC-цепями (R1R2C1 и R7R8C2) довольно коряво получается. Но получается. Усложнять аппаратную часть неохота, правильнее программно решить. Поэтому лучше сравнивать длительности импульсов и выбирать бОльший.
Кто готов помочь с программой, фьюзами, да и со схемой, если есть ошибки - буду очень признателен.
- Реклама
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Сигнализация авто с датчиком удара
В протеусе твой проект не открылся - у меня версия старая (поэтому работоспособность не гарантирую)
проверяй, правда хоть комментариев не много оставил, но код должен быть понятен
как шпаргалку по регистрам и как калькулятор использую AlgorithmBuilder, а иногда даже пишу в нём мелочевку какую, посмотри, может и тебе глянется.
Добавлено after 1 hour 5 minutes 32 seconds:
П.С.: проверил, вроде робит, комментарии немножко дописал
Плюс - к Т.З. добавил сброс писка при снятии-перепостановке сигналки.
проверяй, правда хоть комментариев не много оставил, но код должен быть понятен
как шпаргалку по регистрам и как калькулятор использую AlgorithmBuilder, а иногда даже пишу в нём мелочевку какую, посмотри, может и тебе глянется.
Добавлено after 1 hour 5 minutes 32 seconds:
П.С.: проверил, вроде робит, комментарии немножко дописал
Плюс - к Т.З. добавил сброс писка при снятии-перепостановке сигналки.
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Сигнализация авто с датчиком удара
Спасибо, буду разбираться. а я уж думал перенести тему в раздел "есть работа" ).
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Сигнализация авто с датчиком удара
Вот, блин, поспешил я

Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Сигнализация авто с датчиком удара
Поставил атмел студио 6.0., почитал уроки, не получается сделать hex, выдает 7 ошибок и 2 предупреждения.
Error 1 unknown type name 'bit' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 20 1 GccApplication4
Error 2 'PC_INT0' undeclared here (not in a function) C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 23 12 GccApplication4
Error 3 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 23 21 GccApplication4
Error 4 'TIM0_COMPA' undeclared here (not in a function) C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 54 12 GccApplication4
Error 5 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 54 24 GccApplication4
Warning 6 return type of 'main' is not 'int' [-Wmain] C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 70 6 GccApplication4
Warning 7 ignoring #pragma optsize [-Wunknown-pragmas] C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 75 0 GccApplication4
Error 8 invalid preprocessing directive #asm C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 123 3 GccApplication4
Error 9 invalid preprocessing directive #asm C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 128 4 GccApplication4
Мой старенький ноут ужасно тормозит, сейчас снесу атмел студио 6.0 и поставлю avr studio 4
Добавлено after 2 hours 8 minutes 34 seconds:
Поставил avr studio 4, стало все намного быстрее, но опять с ошибками.
Build started 27.6.2017 at 11:38:48
avr-gcc -mmcu=attiny13a -Wall -gdwarf-2 -std=gnu99 -DF_CPU=128000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 4al.o -MF dep/4al.o.d -c ../4al.c
../4al.c:34:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Saved'
../4al.c:37:12: error: 'PC_INT0' undeclared here (not in a function)
../4al.c:37:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
../4al.c:68:12: error: 'TIM0_COMPA' undeclared here (not in a function)
../4al.c:68:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
../4al.c:84:6: warning: return type of 'main' is not 'int'
../4al.c: In function 'main':
../4al.c:89:0: warning: ignoring #pragma optsize
../4al.c:137:2: error: invalid preprocessing directive #asm
../4al.c:142:8: error: invalid preprocessing directive #asm
make: *** [4al.o] Ошибка 1
Build failed with 7 errors and 2 warnings...
Error 1 unknown type name 'bit' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 20 1 GccApplication4
Error 2 'PC_INT0' undeclared here (not in a function) C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 23 12 GccApplication4
Error 3 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 23 21 GccApplication4
Error 4 'TIM0_COMPA' undeclared here (not in a function) C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 54 12 GccApplication4
Error 5 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 54 24 GccApplication4
Warning 6 return type of 'main' is not 'int' [-Wmain] C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 70 6 GccApplication4
Warning 7 ignoring #pragma optsize [-Wunknown-pragmas] C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 75 0 GccApplication4
Error 8 invalid preprocessing directive #asm C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 123 3 GccApplication4
Error 9 invalid preprocessing directive #asm C:\Programming\Alarm\GccApplication4\GccApplication4\GccApplication4.c 128 4 GccApplication4
Мой старенький ноут ужасно тормозит, сейчас снесу атмел студио 6.0 и поставлю avr studio 4
Добавлено after 2 hours 8 minutes 34 seconds:
Поставил avr studio 4, стало все намного быстрее, но опять с ошибками.
Build started 27.6.2017 at 11:38:48
avr-gcc -mmcu=attiny13a -Wall -gdwarf-2 -std=gnu99 -DF_CPU=128000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 4al.o -MF dep/4al.o.d -c ../4al.c
../4al.c:34:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Saved'
../4al.c:37:12: error: 'PC_INT0' undeclared here (not in a function)
../4al.c:37:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
../4al.c:68:12: error: 'TIM0_COMPA' undeclared here (not in a function)
../4al.c:68:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
../4al.c:84:6: warning: return type of 'main' is not 'int'
../4al.c: In function 'main':
../4al.c:89:0: warning: ignoring #pragma optsize
../4al.c:137:2: error: invalid preprocessing directive #asm
../4al.c:142:8: error: invalid preprocessing directive #asm
make: *** [4al.o] Ошибка 1
Build failed with 7 errors and 2 warnings...
- Реклама
Re: Сигнализация авто с датчиком удара
Оптимально для "простых/устаревших" ПК версия
AVR Studio 4.19 (build 730)
(130984720, updated September 2011)
искать тут:
http://www.atmel.com/tools/STUDIOARCHIVE.aspx

AVR Studio 4.19 (build 730)
(130984720, updated September 2011)
искать тут:
http://www.atmel.com/tools/STUDIOARCHIVE.aspx
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Сигнализация авто с датчиком удара
; (точки с запятой) не хватает../4al.c:34:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Saved'
Re: Сигнализация авто с датчиком удара
Тут, похоже, не в версии дело и не в слабом компе - они все ставятся и работают, а в том, что я ни хрена не понимаю, что делать надо. Сейчас вдобавок поставил WinAVR, по урокам из инета пытаюсь разобраться, как слепой котенок. Лет много назад захотел на PICе собрать - вся информация в одном месте нашлась. Команды - компилятор - программатор. Все простое и понятно, как для детей. Тут же программы-монстры какие-то, hex не могу получить. Может есть простой путь, пока желание не отбило?
Добавлено after 2 minutes 40 seconds:
[uquote="oleg110592",url="/forum/viewtopic.php?p=3133933#p3133933"]
Допустим, попробую, а как же тогда у Ivanoff-iv заработало? Какие-то компиляторы допускают это?
Добавлено after 2 minutes 40 seconds:
[uquote="oleg110592",url="/forum/viewtopic.php?p=3133933#p3133933"]
; (точки с запятой) не хватает[/uquote]../4al.c:34:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Saved'
Допустим, попробую, а как же тогда у Ivanoff-iv заработало? Какие-то компиляторы допускают это?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Сигнализация авто с датчиком удара
посмотрел - Codevision, под студию переделать надоКакие-то компиляторы допускают это?
Re: Сигнализация авто с датчиком удара
Керниган и Ритчи "Язык программирования Си" (pdf-книжка), а так же более простые онлайн материалы http://www.c-cpp.ru/books - в помощь!
Ааа, или тут нет задачи разбираться в программировании, а только задача запустить зачем-то?
Ааа, или тут нет задачи разбираться в программировании, а только задача запустить зачем-то?
Ёшкин кот обормот
Re: Сигнализация авто с датчиком удара
Да, задача стать программистом не стоит, просто получить начальные навыки, что бы понимать простые программы и от си или ассемблера через протеус пройти до железного МК. На примерах, к-е интересны.
Добавлено after 10 minutes 17 seconds:
oleg110592, Codevision то же ставил две штуки разные ломаные - лицензии не проходят.
Добавлено after 10 minutes 17 seconds:
oleg110592, Codevision то же ставил две штуки разные ломаные - лицензии не проходят.
Последний раз редактировалось zzaj Вт июн 27, 2017 17:32:02, всего редактировалось 1 раз.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Сигнализация авто с датчиком удара
для студии по быстрячку:
Спойлер
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define Al2L (PINB & (1<<0))
#define Al1L (PINB & (1<<1))
#define UnSave (PINB & (1<<2))
#define Save (PINB & (1<<3))
#define BuzzerPort PORTB
#define BuzzerBit (1<<4)
#define T0Stop TCCR0B=0x00 // Clock value: 0 Hz
#define T0Run TCCR0B=0x04 // Clock value: 500 Hz
volatile unsigned char Tim05S;
volatile unsigned char Saved;
// Pin change interrupt service routine
//interrupt [PC_INT0] void pin_change_isr(void)
ISR(PCINT0_vect)
{
// вызывается при изменении состояния ног пин B 0-3.
// здесь можно добавить небольшую задержку для антидребезга
if ((Save==1)&&(UnSave==0)) //постановка на охрану
{
Saved=1;
Tim05S=0;
};
if ((Save==0)&&(UnSave==1)) //снятие с охраны
{
Saved=0;
Tim05S=0;
};
if (Saved) //сработка датчиков происходит только если машина под охраной
{
if ((Tim05S==0)&&(Al1L)) //сработка слабого датчика произойдет если машина не пищит
{
BuzzerPort |= BuzzerBit;
Tim05S=0; //установка времени пищания до первой сработки таймера = 0,5с
T0Run;
};
if (Al2L)
{
BuzzerPort |= BuzzerBit;
Tim05S=59; //установка времени пищания 30с*2-1
T0Run;
};
};
}
// Timer 0 output compare A interrupt service routine
ISR(TIM0_COMPA_vect)
{
// вызывается с частотой 2Гц если таймер работает
if (Tim05S==0)
{
BuzzerPort &= ~BuzzerBit;
T0Stop;
}
else
{
Tim05S--;
};
}
// Declare your global variables here
int main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
CLKPR=0x80;
CLKPR=0x00;
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In
// State5=P State4=0 State3=T State2=T State1=P State0=P
PORTB=0x23;
DDRB=0x10;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 0 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x02;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0xFA; //250 = 500Гц/2
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: On
GIMSK=0x20;
MCUCR=0x20; //<-установлен режим сна (было 0x00)
PCMSK=0x0F;
GIFR=0x20;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// Global enable interrupts
sei();
while (1)
{
// Place your code here
asm volatile("sleep");
}
}
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Сигнализация авто с датчиком удара
я в кодевижне делал, приду домой — хекс выложу.
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Сигнализация авто с датчиком удара
Объясните в двух словах, если можно, почему одна и та же программа, на одном и том же языке, для одного и того же МК имеет разный листинг, в зависимости от применяемого компилятора?
oleg110592, завтра посмотрю, дома некогда.
Ivanoff-iv, спасибо, хекс хорошо, хотя бы для контроля, но я специально не стал просить его сразу, попрактиковаться сам хотел. Пока не отбрасываю это желание.
oleg110592, завтра посмотрю, дома некогда.
Ivanoff-iv, спасибо, хекс хорошо, хотя бы для контроля, но я специально не стал просить его сразу, попрактиковаться сам хотел. Пока не отбрасываю это желание.
Re: Сигнализация авто с датчиком удара
Потому что разные компиляторы. Это же очевидно.Объясните в двух словах, если можно, почему одна и та же программа, на одном и том же языке, для одного и того же МК имеет разный листинг, в зависимости от применяемого компилятора?
Re: Сигнализация авто с датчиком удара
Я программирование изучал в ВУЗе 30 лет назад поверхностно, теперь забыл то, что и знал. Наивно предполагал, что есть язык программирования, не важно какого уровня, со своими правилами и есть программа-компилятор, к-я переводит эту программу в машинный код по предустановленным из библиотек параметрам - по типу МК. Оказалось - все сложнее.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Сигнализация авто с датчиком удара
скорее всего т.к. там дополнительные библиотеки подключаются - отличия могут быть при их использовании.
я сейчас попробовал собрать проект "от фонаря", а потом весь С файл туда перенёс и тоже нагрёб непонятных ошибок особенно в тех местах где работал автоматический генератор кода (преднастройки).
потому выкладываю весь созданный проект.
я сейчас попробовал собрать проект "от фонаря", а потом весь С файл туда перенёс и тоже нагрёб непонятных ошибок особенно в тех местах где работал автоматический генератор кода (преднастройки).
потому выкладываю весь созданный проект.
- Вложения
-
- Desktop.rar
- (31 КБ) 247 скачиваний
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Сигнализация авто с датчиком удара
C помощью AVR STUDIO 4 скомпилировалось от oleg110592 нормально, без ошибок, но в протеусе не заработало, хекс от Ivanoff-iv работает нормально. Но сам протеус у меня корявый оказался - все время вылетает с ошибкой на 3х разных компах. Надо переставить. Начал с программой разбираться.


