Перейти к содержанию

Не работают прерывания по изменению GPIO, мк PIC12F683


Шампунь

Рекомендуемые сообщения

Добрый день. Пытаюсь сделать прерывания по изменению GP0. Ставлю GP0 на вход, разрешаю прерывания по изменению GPIO, разрешаю глобальные прерывания, ставлю бит IOC0 в 1. Но при изменении GP0 прерывание не срабатывает. Прерывание по переполнению таймера срабатывает отлично. Что я делаю не так? Прикладываю код программы. Если этого недостаточно, чтобы понять проблему, приложил полный код программы файлом.

list p=12f683
	#include "p12f683.inc"

	__config 0x3FF4
W_TEMP	EQU	    0x40
STATUS_TEMP EQU	    0x41
flag	EQU	    0x42

	org	    0
	goto	    start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	org	    0x04
	
	MOVWF W_TEMP 
	SWAPF STATUS,W
	MOVWF STATUS_TEMP
	
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;программа обработки прерываний
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	SWAPF STATUS_TEMP,W 
	MOVWF STATUS 
	SWAPF W_TEMP,F 
	SWAPF W_TEMP,W
	
	retfie
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
	
start	clrf	    GPIO
	movlw	    0x07
	movwf	    CMCON0
	bsf	    STATUS,RP0	    ;1 bank
	movlw	    b'00001001'
	movwf	    TRISIO
	movlw	    b'10000001'
	movwf	    OPTION_REG
	bcf	    INTCON,T0IF
	bsf	    INTCON,T0IE
	movf	    GPIO,w
	bcf	    INTCON,GPIF
	bsf	    INTCON,GPIE
	bsf	    INTCON,GIE
	movlw	    b'00000001'
	movwf	    IOC
	bcf	    STATUS,RP0	    ;0 bank
	movlw	    .0
	movwf	    TMR0
	
ask	btfss	    flag,4		;данный бит устанавливается в программе обработки прерываний
	goto	    ask
	bcf	    flag,4
	call	    indicate		;подпрограмма indicate выводит значение, полученное в результате 
    					;обработки прерывания, на индикаторы
	goto	    ask

 

reciever1.asm

Изменено пользователем Шампунь
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

А где у вас в обработчике прерываний сброс флага прерывания от GP0 и прерывание пустое, а где ее программа. Так все должно зависнуть в прерывании.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 hour ago, serg123 said:

А где у вас в обработчике прерываний сброс флага прерывания от GP0 и прерывание пустое, а где ее программа. Так все должно зависнуть в прерывании.

Программу не стал приводить так как она довольно большая и особо значения не имеет. Полная программа есть в файле, который я приложил к верхнему посту. В конце подпрограммы обработки прерывания я сбрасываю этот флаг. Но в данном случае это вообще не имеет значения, так как самого прерывания не происходит, вообще. Программу симулировал в протеусе. При переполнении таймера есть прерывание, при изменении GP0 прерывания нет.

Ссылка на комментарий
Поделиться на другие сайты

Огромное спасибо, clrf ANSEL решило все проблемы. Даже не задумывался над этим, почему то думал что все пины по умолчанию цифровые, нужно внимательнее читать документацию.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...