Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Прерывание по АЦП
Regent2164 Дата: Чт, 24.03.2011, 16:18  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 24.03.2011

Статус: Offline

PIC12f683 на GP0 весит потенциометр на GP1 кнопка. Прерывание по кнопке есть, а по АЦП нет. Знатоки, вот код, глянте где я не прав?

Define ADC_BITS 10
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50
TRISIO = %00000011
OPTION_REG.7 = 1
OPTION_REG.6 = 1

CMCON0 = 7
ANSEL = 1
ADCON0 = %11000001

pir1.6 = 0
GPIO = 0
pie1.6 = 1
on interrupt goto DetectKEY
IOCB = %00000011
INTCON = %11001000

MAIN:

GPIO.2 = 1
pause 600
GPIO.2 = 0
pause 600

GOTO MAIN

disable

detectKEY:
INTCON = %00000000
GPIO = 0

' DETECT any interrupt



GPIO.2 = 0
GPIO.5 = 1
PAUSE 150





' DETECT BUtton

if GPIO.1 =1 THEN

GPIO.2 = 0
GPIO.4 = 1
PAUSE 4000
GOTO ENDSUB

ENDIF

ENDSUB:

GPIO = 0
INTCON = %11001000

resume
enable

ЯНДЕКС Дата: 24.03.2011
ivan_fd Дата: Пт, 25.03.2011, 11:08  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А где Вы читаете с канала АЦП? Вы не обращаетесь к АЦП, вот и не происходит прерывание.
Прерывание происходит по окончанию преобразования.

Code
  ADCIN 0, B0 ' Read channel 0 to B0
Regent2164 Дата: Пт, 25.03.2011, 14:12  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 24.03.2011

Статус: Offline

Ivan_fd. На сколько я понимаю, по уму, должно быть так: При изменении напряжения на входе ноги с ацп происходит прерывание основной программы, после чего переходим в подпрограмму (обработки прерываний) и уже в ней смотрим значение b0 (ADCIN pin, B0). А пока уровень остается постоянным прерываний нет - выполняем основную программу. Так же как и с кнопкой. Иначе какой смысл в прерываниях по АЦП?
ivan_fd Дата: Пт, 25.03.2011, 15:16  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (Regent2164)
При изменении напряжения на входе ноги с ацп происходит прерывание основной программы, после чего переходим в подпрограмму (обработки прерываний)

Было бы не плохо, но увы, прерывание происходит после окончания преобразования.
  • Страница 1 из 1
  • 1
Поиск: