реклама на сайте
подробности

 
 
> Помогите с подключением МК PIC16F873, АЦП на МК... не работает. в чем дело?
DrDen
сообщение Sep 30 2007, 22:34
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 30-09-07
Пользователь №: 30 958



Прошу помощи у знающих людей. Пытался шуршать документацией, но ничего внятного не нашел.
Программа должна выполнять простую функцию - АЦП. Задание - сделать АЦП ИМЕННО на этом пике.
Вот листинг программы:

LIST p=16f873
include p16f873.inc

org 0x00
goto start

org 0x04
call settmr

bsf ADCON0,GO

WAIT btfss PIR1,ADIF
goto WAIT

movf ADRESH,0
movwf PORTC

bsf STATUS,RP0
movf ADRESL,0
bcf STATUS,RP0
movwf PORTB

bcf PIR1,ADIF
return

settmr
movlw .61
movwf TMR0
bcf INTCON,T0IF
retfie

start
clrf PORTB
clrf PORTC

movlw b'10100000'
movwf INTCON

movlw b'11000001' ;вкл АЦП
movwf ADCON0

bsf STATUS,RP0
movlw b'10000110'
movwf OPTION_REG

clrf TRISC
clrf TRISB

movlw b'10001110'
movwf ADCON1
bcf STATUS,RP0

loop goto loop
end

Прога самописная(моя). Пыталя найти ошибки - безрезультатно)) Эмуляция в MPLABе проходит на ура. Скорее всего проблемы в аппаратной части. Использую кварц на 200кГц с 15пФ конденсаторами. MCLR напрямую соединен с питанием, идущим от сабилизатора на 5В с 100мкФ электролитическим конденсатором на выходе. Тестовое напряжение на AN0 подавалось с настраиваемого резисторного делителя (между шиной питания и землей ставил последовательно постоянный и переменный резистор, межу ними подключал AN0). К портам пробовал подключать светодиоды и 1к резисторами, просто измерять напряжение тестером. Постоянный 0.
Програмирование произвожу из PonyProg2000. Какая-то заморочка с конфигурационными битами. Какие там биты с инверсией, какие нет? (защита памяти - точно с инверсией) Помогите, кто знает, пожалуста. Конфиг. слово 001111001000.
Убедительно прошу ответить на вопросы.
ЗЫ. ПИК используется потому что позднее на нем будет построен модуль статистической обработки данных от АЦП. Пока надо реализовать только АЦП.
Заранее спасибо)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dac
сообщение Oct 1 2007, 04:33
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



1. MCLR очень нежелательно напрямую на питание, надо через резистор 1кОм
2. на асме давно не писал, но есть сомнения на тему:
кусок кода между call settmr и settmr - на этот код вы никогда не попадете: по запуску мк уходит на метку старт, а при возникновении прерывания после обработки функции settmr вы выходите из обработчика прерывания функцией retfie. можно попробовать поставить btfsc xxx, T1IF перед call settmr, это возможно поможет
3. программатор возмите отсюда: www.ic-prog.com и не мучайтесь с непонятками, там же два десятка схем и сама программа.
4. а конфигурационное слово лучше сразу прописывать в исходнике, типа такого (пример для pic16f84) для своего читайте документацию. Насчет лошади не знаю, но icprog принимает:

__CONFIG _RC_OSC & _PWRTE_ON & _CP_OFF &_WDT_ON
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016