Здравствуйте. Помогите реализовать проект на attiny 13.Я очень далек от программирования, только готовые HEXы прошивал. помогите написать программу, что б я в ней мог разобраться и в протеусе заодно попрактиковаться на конкретном примере. Мне самому по силам собрать данный функционал на одной 561ТМ2 (cd4013) за день, вместе с установкой на авто. Хочется что-то новое попробовать. Это простая добавка к штатной сигналке авто. У штатной есть датчик объма и датчик наклона, а датчика удара нет. Сами датчики удара у меня валяются, они вполне стандартные, двухуровневые, по схеме (SW3-6). Срабатывание первого уровня (1lvl) выдает кратковременный крик сирены (BUZ), второй уровень (2lvl)- 30сек крик. Датчики будут запараллелены для передней и задней части авто. При постановке на охрану (SW1)- (U1) ждет сигналов с датчиков и выдает положительный импульс на (Q1), при снятии (SW2) - не реагирует. Светодиод (D5) только для протеуса.Вот и весь алгоритм.Но: Самое сложное - это команды постановки и снятия с охраны. Я их нашел в автомобиле - положительные импульсы +12в. Но есть проблема - при закрытии на проводе закрывания отличный прямоугольник, но на проводе открытия в это время проскакивает ощутимый "тычек" и наоборот, соответственно, при открывании. Отфильтровать RC-цепями (R1R2C1 и R7R8C2) довольно коряво получается. Но получается. Усложнять аппаратную часть неохота, правильнее программно решить. Поэтому лучше сравнивать длительности импульсов и выбирать бОльший. Кто готов помочь с программой, фьюзами, да и со схемой, если есть ошибки - буду очень признателен.
В протеусе твой проект не открылся - у меня версия старая (поэтому работоспособность не гарантирую) проверяй, правда хоть комментариев не много оставил, но код должен быть понятен как шпаргалку по регистрам и как калькулятор использую AlgorithmBuilder, а иногда даже пишу в нём мелочевку какую, посмотри, может и тебе глянется.
Добавлено after 1 hour 5 minutes 32 seconds: П.С.: проверил, вроде робит, комментарии немножко дописал Плюс - к Т.З. добавил сброс писка при снятии-перепостановке сигналки.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Поставил атмел студио 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...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Тут, похоже, не в версии дело и не в слабом компе - они все ставятся и работают, а в том, что я ни хрена не понимаю, что делать надо. Сейчас вдобавок поставил WinAVR, по урокам из инета пытаюсь разобраться, как слепой котенок. Лет много назад захотел на PICе собрать - вся информация в одном месте нашлась. Команды - компилятор - программатор. Все простое и понятно, как для детей. Тут же программы-монстры какие-то, hex не могу получить. Может есть простой путь, пока желание не отбило?
Керниган и Ритчи "Язык программирования Си" (pdf-книжка), а так же более простые онлайн материалы http://www.c-cpp.ru/books - в помощь! Ааа, или тут нет задачи разбираться в программировании, а только задача запустить зачем-то?
Да, задача стать программистом не стоит, просто получить начальные навыки, что бы понимать простые программы и от си или ассемблера через протеус пройти до железного МК. На примерах, к-е интересны.
Добавлено after 10 minutes 17 seconds: oleg110592, Codevision то же ставил две штуки разные ломаные - лицензии не проходят.
Последний раз редактировалось zzaj Вт июн 27, 2017 17:32:02, всего редактировалось 1 раз.
// 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"); } }
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Объясните в двух словах, если можно, почему одна и та же программа, на одном и том же языке, для одного и того же МК имеет разный листинг, в зависимости от применяемого компилятора? oleg110592, завтра посмотрю, дома некогда. Ivanoff-iv, спасибо, хекс хорошо, хотя бы для контроля, но я специально не стал просить его сразу, попрактиковаться сам хотел. Пока не отбрасываю это желание.
Объясните в двух словах, если можно, почему одна и та же программа, на одном и том же языке, для одного и того же МК имеет разный листинг, в зависимости от применяемого компилятора?
Я программирование изучал в ВУЗе 30 лет назад поверхностно, теперь забыл то, что и знал. Наивно предполагал, что есть язык программирования, не важно какого уровня, со своими правилами и есть программа-компилятор, к-я переводит эту программу в машинный код по предустановленным из библиотек параметрам - по типу МК. Оказалось - все сложнее.
скорее всего т.к. там дополнительные библиотеки подключаются - отличия могут быть при их использовании. я сейчас попробовал собрать проект "от фонаря", а потом весь С файл туда перенёс и тоже нагрёб непонятных ошибок особенно в тех местах где работал автоматический генератор кода (преднастройки). потому выкладываю весь созданный проект.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
C помощью AVR STUDIO 4 скомпилировалось от oleg110592 нормально, без ошибок, но в протеусе не заработало, хекс от Ivanoff-iv работает нормально. Но сам протеус у меня корявый оказался - все время вылетает с ошибкой на 3х разных компах. Надо переставить. Начал с программой разбираться.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения