| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| проблем с 10 bits adc и pic16f872, вече две седмици http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=2818 |
Страница 1 от 1 |
| Автор: | kymro [ Нед Авг 27, 2006 8:23 pm ] |
| Заглавие: | проблем с 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 за този процесор:) със сигурност грешката е някаква супер малоумна, ама аз вече изперках, а се мъча вече две седмици, а срокът ми за предаване наближава:) благодаря на всички които поне прочетат това нещо:) |
|
| Автор: | VSU [ Нед Авг 27, 2006 8:59 pm ] |
| Заглавие: | |
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 това си го направи както ти аресва |
|
| Автор: | kymro [ Нед Авг 27, 2006 10:49 pm ] |
| Заглавие: | проблема се промени леко |
ми то всичко тръгна, ама донякъде, в смисъл вече си чете adresh перфектно, но adresl ми го чете като постоянна нула:) но все пак има някакъв напредък:) в смисъл на индикацията имам само три стойности: 256, 512 и 768:) ако раменя low_byte и high_byte имам съответно 1, 2 и 3 |
|
| Автор: | VSU [ Нед Авг 27, 2006 11:12 pm ] |
| Заглавие: | |
пробвай да напишеш някакво постоянно 4исло в буфера на индикацията ти и виж дали правилно го изписва може там да ти е проблема тва дето съм ти го написал трябва да работи само дето е за 3 канала АДЦ поправи си го да е за 1 и виж как са ориентирани данните ляво или дясно |
|
| Автор: | kymro [ Нед Авг 27, 2006 11:35 pm ] |
| Заглавие: | |
много тъпо ми стана, ама ето така се оправи: BSF status, rp0 ; banka1 MOVF 0x1e, W bcf status, rp0 MOVWF l_byte ; LOW BYTE благодаря много за оказаната помощ иначе:) |
|
| Автор: | VSU [ Пон Авг 28, 2006 10:43 am ] |
| Заглавие: | |
Ами те затова са сложили от адр 0x70 да има достъп от вси4ки банки |
|
| Автор: | Gogo [ Пон Авг 28, 2006 11:03 am ] |
| Заглавие: | |
@kymro, ако ще пишеш на асемблер, по-добре да замениш 16ф872 с 18Ф1220 /1320 (ако не трябват повече пинове). Ще ти е в пъти по-лесно, а и в цената няма много разлика. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|