|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 8:15 pm
|
Страница 1 от 1
|
[ 7 мнения ] |
|
проблем с 10 bits adc и pic16f872, вече две седмици
| Автор |
Съобщение |
|
kymro
Ранг: Минаващ
Регистриран на: Нед Авг 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 |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 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 |
|
 |
|
kymro
Ранг: Минаващ
Регистриран на: Нед Авг 27, 2006 7:59 pm Мнения: 19
|
 проблема се промени леко
ми то всичко тръгна, ама донякъде, в смисъл вече си чете adresh перфектно, но adresl ми го чете като постоянна нула:)
но все пак има някакъв напредък:)
в смисъл на индикацията имам само три стойности: 256, 512 и 768:)
ако раменя low_byte и high_byte имам съответно 1, 2 и 3 
|
| Нед Авг 27, 2006 10:49 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
пробвай да напишеш някакво постоянно 4исло в буфера на индикацията ти и виж дали правилно го изписва може там да ти е проблема тва дето съм ти го написал трябва да работи само дето е за 3 канала АДЦ поправи си го да е за 1 и виж как са ориентирани данните ляво или дясно
|
| Нед Авг 27, 2006 11:12 pm |
|
 |
|
kymro
Ранг: Минаващ
Регистриран на: Нед Авг 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 |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Ами те затова са сложили от адр 0x70 да има достъп от вси4ки банки
|
| Пон Авг 28, 2006 10:43 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
@kymro, ако ще пишеш на асемблер, по-добре да замениш 16ф872 с 18Ф1220 /1320 (ако не трябват повече пинове). Ще ти е в пъти по-лесно, а и в цената няма много разлика.
|
| Пон Авг 28, 2006 11:03 am |
|
|
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|