Отговори на тема  [ 7 мнения ] 
проблем с 10 bits adc и pic16f872, вече две седмици 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Авг 27, 2006 7:59 pm
Мнения: 19
Мнение проблем с 10 bits adc и pic16f872, вече две седмици
да значи имам следният проблем, уж съм конфигурирал всичко правилно , но искам да използвам 10 битово ацп на RA0 , по стандартния начин, но не мога да получа десет битова стойност, а ми трябва точно такова чудо:)
на входа на RA0 имам 4,7 килоомов потенциометър свързан между +5 волта и 0 волта (маса)
това ми е конфигурирането на ацп-то:

adc_conf bcf status, rp0
bsf status, rp1

movlw b'10001110'
movwf adcon1

bcf status, rp1
movlw b'01000000'
movwf adcon0

bsf status, rp1
movlw b'00000000'
movwf pie1

bcf status, rp0
clrf adresh
bsf status, rp0
clrf adresl


а това дефакто ми е управлението му:

loop bcf status, rp0
bcf pir1, adif
bsf status, rp0
bsf pie1, adie


bcf status, rp0
bsf adcon0, adon

movlw d'20'
movwf msloop

loop3 decfsz msloop, f
goto loop3





bcf status, rp1
bsf adcon0, go
lopp
btfsc adcon0, go
goto lopp



bcf status, rp1
bcf status, rp0
movf adresh, w
movwf h_byte
bsf status, rp0
movf adresl, w
movwf l_byte

call b2_bcd

от тук си го пра6там на седем сегментна индикация, промлемът е че adresh и adresl дефакто имат една и съща стойност, а и двете клетки се четат само ако преди тях се се нулира бит RP0, т.е се намират в банка 0, което малко не го схващам, понеже microchip ми казват друго в тяхния си pdf за този процесор:)

със сигурност грешката е някаква супер малоумна, ама аз вече изперках, а се мъча вече две седмици, а срокът ми за предаване наближава:)
благодаря на всички които поне прочетат това нещо:)


Нед Авг 27, 2006 8:23 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
ADCON0 = 0x81; това си го направи както ти аресва
ADCON1 = 0x84; това си го направи както ти аресва


MOVLW 0x81
BCF 0x3, 0x5
MOVWF 0x1f
MOVLW 0x84
BSF 0x3, 0x5
MOVWF 0x1f
initialization
=================
work

ADGO = 1;
BSF 0x1f, 0x2

while(ADGO) continue ;
et1 BTFSC 0x1f, 0x2
GOTO et1

BCF 0x3,0x5 ; banka 0
MOVF 0x1e, W
MOVWF 0x70 ;HIGH BYTE
BSF 0x3, 0x5 ; banka1
MOVF 0x1e, W
MOVWF 0x71 ; LOW BYTE

0x70 i 0x71 това си го направи както ти аресва


Нед Авг 27, 2006 8:59 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Авг 27, 2006 7:59 pm
Мнения: 19
Мнение проблема се промени леко
ми то всичко тръгна, ама донякъде, в смисъл вече си чете adresh перфектно, но adresl ми го чете като постоянна нула:)
но все пак има някакъв напредък:)
в смисъл на индикацията имам само три стойности: 256, 512 и 768:)
ако раменя low_byte и high_byte имам съответно 1, 2 и 3 :)


Нед Авг 27, 2006 10:49 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
пробвай да напишеш някакво постоянно 4исло в буфера на индикацията ти и виж дали правилно го изписва може там да ти е проблема тва дето съм ти го написал трябва да работи само дето е за 3 канала АДЦ поправи си го да е за 1 и виж как са ориентирани данните ляво или дясно


Нед Авг 27, 2006 11:12 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Авг 27, 2006 7:59 pm
Мнения: 19
Мнение 
много тъпо ми стана, ама ето така се оправи:

BSF status, rp0 ; banka1
MOVF 0x1e, W
bcf status, rp0
MOVWF l_byte ; LOW BYTE

благодаря много за оказаната помощ иначе:)


Нед Авг 27, 2006 11:35 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Ами те затова са сложили от адр 0x70 да има достъп от вси4ки банки


Пон Авг 28, 2006 10:43 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
@kymro, ако ще пишеш на асемблер, по-добре да замениш 16ф872 с 18Ф1220 /1320 (ако не трябват повече пинове). Ще ти е в пъти по-лесно, а и в цената няма много разлика.


Пон Авг 28, 2006 11:03 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни