PIC12F683 - не считает АЦП

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

PIC12F683 - не считает АЦП

Сообщение Roman Venom »

Прерывание АЦП срабатывает, но в регистрах АЦП отсутствует результат.
Протеус пишет: "АЦП запущен до того как истекло время предыдущего преобразования", хотя задержка есть после каждого цикла. Выкладываю проект, протеус и прошивку. Подскажите какую мелочь забыл.

Код: Выделить всё

;*******************************************************************
;Задача данной программы - тест АЦП ПИК12Ф683. AN3(GP4) - вход АЦП. 
;*******************************************************************

list p=12F683 
#include "P12F683.inc"
;конфиг: собачка выкл, синхронизация от внутреннего РС генератора.
__CONFIG   _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTOSCIO
;______________________
;переменные
delcntrl equ 22
	delcntr2 equ 23
		beskavozhe equ 24
led_count equ 25
	knopka equ 26
		led_status equ 27
green_led equ GP0
	red_led equ GP1
		blue_led equ GP2
knopo equ GP3
	ADC_low equ 28
		ADC_high equ 29
ADC_cnt equ 30
	stack equ 31
;______________________

org 0x00
	goto init; при вкл. выполнить настройку

org 0x04;вектор обработки прерываний


btfsc PIR1, ADIF;флаг установлен?
	goto ADC; обработать прерывание
retfie


;прерывание АЦП
ADC
	banksel PIR1
		bcf PIR1, ADIF;сбросить флаг прерывания АЦП
	banksel ADRESH
		movf ADRESH,0;считать старшие биты(2)
		movfw ADC_high
	banksel ADRESL
		movf ADRESL,0;считать младшие биты(8)
		movwf ADC_low

call delay_2Td; задержка перед след. преобразованием

	banksel ADCON0
		bsf ADCON0, GO;запустить АЦП на новое преобразование
retfie;конец прерывания АЦП



;***********блок инициализации
org 0x200
init

;синхр: внутр РС-герератор. частота=1МГц
	banksel OSCCON
		movlw b'01000001'
			movwf OSCCON

;внутр. подтяжка выкл, 
	banksel OPTION_REG
		movlw b'10000000'
			movwf OPTION_REG

;Установить GP4 как вход.
	banksel TRISIO
		movlw b'00010000'
			movwf TRISIO

	banksel GPIO
		movlw b'00000000'
			movwf GPIO

;синхронизация АЦП от внутр. РС-генератора, AN3(GP4) - аналоговый вход
	banksel ANSEL
		movlw b'01111000'
			movwf ANSEL 





;Разрешить глобальные прерывания, разрешить прерывания периферии.
	banksel INTCON
		bsf INTCON,GIE
			bsf INTCON,PEIE

;Разрешить прерывание АЦП
	banksel PIE1
		movlw b'01000000'
			movwf PIE1
;Сдвиг 10-битного результата вправо,напряжение смещения АЦП=питание, 
;мультиплескор:AN3, вкл АЦП, запустить преобразование
	banksel ADCON0
		movlw b'10001101'
			movwf ADCON0
				bsf ADCON0,GO
;конец иницилизации

;*****************************основной цикл

main

goto main







delay_2Td
movlw 0x0F
movwf ADC_cnt
minus
decfsz ADC_cnt
goto minus
return
end


Вложения
PIC12_radiokot.rar
(68.62 КБ) 235 скачиваний
Успех - императив!
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: PIC12F683 - не считает АЦП

Сообщение otest »

У меня работает
Реклама
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: PIC12F683 - не считает АЦП

Сообщение Soir »

Roman Venom писал(а):...Подскажите какую мелочь забыл....
Вот пример инициализации АЦП из даташит:
Изображение
Вложения
Wait.png
(20.45 КБ) 1933 скачивания
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: PIC12F683 - не считает АЦП

Сообщение Roman Venom »

Soir
Читал это не раз :) . Проблема в проетусе, т.к. эта программа именно у меня отказывается работать. У знакомого заработало... Добавлял в инициализацию задержку - та же беда. Решилась заменой инк-файла протеуса на данный МК.
Всем спасибо, закройте тему.
Успех - императив!
Реклама
Эиком - электронные компоненты и радиодетали
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: PIC12F683 - не считает АЦП

Сообщение Soir »

Roman Venom писал(а):..Проблема в проетусе, т.к. эта программа именно у меня отказывается работать...
Пока не закрыли.
У меня она тоже сразу не заработала. А добавил задержку и пошла.
P.S.
Еще не известно какой Proteus более правильный. Ведь зачем-то разработчик МК указал на необходимость паузы именно в этом месте. И Proteus честно указал на несоответствие.
Реклама
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: PIC12F683 - не считает АЦП

Сообщение Roman Venom »

Еще не известно какой Proteus более правильный. Ведь зачем-то разработчик МК указал на необходимость паузы именно в этом месте. И Proteus честно указал на несоответствие.
Тяжело спорить... Просто пробовал и так и так, результат нулевой. Безусловно, даташит не врёт. Ещё реальный тест покажет что к чему.
Успех - императив!
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: PIC12F683 - не считает АЦП

Сообщение dosikus »

Roman Venom писал(а):Проблема в проетусе, т.к. эта программа именно у меня отказывается работать.
Как то не вяжутся эти доводы с уровнем вашего кода .
Задержки в прерывании это нечто...
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: PIC12F683 - не считает АЦП

Сообщение Roman Venom »

dosikus
Как то не вяжутся эти доводы с уровнем вашего кода .
Задержки в прерывании это нечто...
Во-первых, это программа-тест. Тут не сохраняется регистр состояния, а в задержке не запрещаются прерывания.
Во-вторых, может я не прав, т.к. самоучка и ещё продолжаю учиться. Так что любую критику приму с удовольствием.
Успех - императив!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»