на вход GP1 МК_2 подаю 0 либо долго (120мк), либо недолго(13мк). этот ноль до мк доходит и изменяет напряжение на его ноге (запечетлено на рис.1) Далее по плану срабатывает прерывание по изменению уровня на ноге, в зависимости от фронта в иср коде либо запускается таймер, либо читается с него значение (фронт определяем по рег. START_FLAG) Далее с этим числом другие плюхи всякие творятся(не об них речь)..
Но прерывание не срабатывает => в иср код не заходит => не знаем сколько натикало => всяких плюх не будет и всё насмарку Вроде все флаги очистила, разрешения дала.
bcf STATUS,RP0 btfsc GPIO,1 ;LOW lvl on GPIO.1 goto What_time_on_TMR0 ;NO => HIGH lvl => it was LOW lvl => end of pressed ;YES => it was HIGH lvl => START of pressed clrf TMR0 clrf START_FLAG goto escape
bsf STATUS,RP0 MOVLW b'11111111' MOVWF TRISIO ;all ports as inputs
;==SET GP<5:0> to Digital IO bcf STATUS,RP0;BANK 0 clrf GPIO ;LOW lvl http://avr.ru/beginer/understand/1wire ????????..... so to press data bus DO GPIO.1 as OUTPUT!!! MOVLW H'1f' ;Set GP<5:0> to MOVWF CMCON ;digital IO bsf GPIO,0
Заголовок сообщения: Re: pic12f675 не работают interrupt-on-change
Добавлено: Вс авг 13, 2017 00:46:39
Встал на лапы
Карма: 3
Рейтинг сообщений: 17
Зарегистрирован: Чт ноя 26, 2015 23:22:35 Сообщений: 124 Откуда: не с Уфы
Рейтинг сообщения:0
При появлении в main прерывания запрещены (GIE). Читать gpio в коде не надо, поскольку ожидаете прерывания по изменению на ноге. Из wait_interrupt выбраться будет не просто, поскольку STATUS,3 всегда будет "1". Копируете в EEDATA без смены банка. В прерываниях если GPIO,1=0 выходите без очистки флага источника (GPIF)
И хорошо подумайте над алгоритмом записи в eeprom, с таким подходом износить его можно за пару минут.
The user, in the Interrupt Service Routine, can clear the interrupt in the following manner: a) Any read or write of GPIO. This will end the mismatch condition. b) Clear the flag bit GPIF. A mismatch condition will continue to set flag bit GPIF. Reading GPIO will end the mismatch condition and allow flag bit GPIF to be cleared.
Так что просто bcf INTCON, GPIF не пройдет.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Спасибо за ответ! Прошу прощения за позднюю реакцию -- нет возможности запротеусить и вообще подойти к компу сейчас. В близжайшую неделю все рекомендации проверю и отпишу о результатах!
Из wait_interrupt выбраться будет не просто, поскольку STATUS,3 всегда будет "1".
Почему будет всегда 1? В прерывании мы в STSRT_FLAG мы копируем число не ноль. В wait_interupt мы проверяем, равен ли нулю Z при вставке регистра в самое себя. Или не так?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения