PIC16F88-AD převodník-změna napětí způsobí přeblikávání LED

Zdravim. Presiel som vsetko co som len dokazal k tejto problematike najst aj tu na fore, no zial neuspesne. Stale nedokazem rozbehat jednoduchy AD prevodnik na tomto procesore. Pridavam moj program, skuste mi tam niekde prosim najst chybu. HW je rieseny tak, ze na pin RA0/AN0 je pripojeny bezec potenciometra v zapojeni ako napatovy delic (jedna strana na Vdd a druha na Vss) a na B-porte mam napichane diodky. Ocakavam od toho len taku, funkciu, ze ked tym potenciometrom budem otacat, tak tie diodky budu prebikavat, ale nejako sa im nechce ani len svietit :smiley: Dakujem[code]LIST P=16F88
#include <p16f88.inc>

TMP0 EQU 21h

_INTOSC_OSC_NOCLKOUT EQU H’3FFC’

ORG 0x2007 ; adresa konfiguracie PIC16F88
dw _BODEN_OFF & _CPD_OFF & _CP_OFF & _PWRTE_OFF & _WDT_OFF & _LVP_OFF & _INTOSC_OSC_NOCLKOUT & _DEBUG_ON & _MCLR_OFF & _WRT_PROTECT_OFF & _INTRC_IO

ORG 0
GOTO START

ORG 4
GOTO START

START
BANKSEL STATUS
CLRF STATUS

BANKSEL OSCCON
BSF OSCCON,IRCF2 ;KMITOCET 8 Mhz
BSF OSCCON,IRCF1
BSF OSCCON,IRCF0

BANKSEL ANSEL
MOVLW B’00000001’ ;Pin RA0/AN0 analogovy vstup
MOVWF ANSEL
MOVLW B’00000000’
MOVWF OPTION_REG

BANKSEL	ADRESL	;vymazanie registrov prevodu
CLRF	ADRESL
BANKSEL	ADRESH
CLRF	ADRESH

BANKSEL TRISB
MOVLW B’00000000’
MOVWF TRISB ;B-port ako vystupny
MOVLW B’10111111’
MOVWF TRISA

BANKSEL PORTB
CLRF PORTB
CLRF PORTA

GOTO PROGRAM

PROGRAM
BSF PORTB,0 ;pokusne zasvietit B0 (nefunguje)

BANKSEL ADCON1
MOVLW B’11000000’ ;radenie sprava, casovanie AD, AVdd-AVss
MOVWF ADCON1

BANKSEL ADCON0
MOVLW B’10000000’ ;FOSC/64, 000-1 vstup AD na AN0, stav 0, AD vypnuty
MOVWF ADCON0
BSF ADCON0,0 ;zapnutie AD prevodniku
CALL CEK40us ;cakanie na nabitie kondenzatora

BSF ADCON0,2
BTFSC ADCON0,2 ;cakanie na ukoncenie prevodu
GOTO $-1

BANKSEL ADRESL
MOVF ADRESL,W ;Adresl do pracovneho reg.
BANKSEL PORTB
MOVWF PORTB ;Pracovny do portu B.

GOTO PROGRAM

CEK40us ;Delay 40 cycles
MOVLW 0x0D ;13 DEC
MOVWF TMP0
DECFSZ TMP0,F
GOTO $-1
RETURN

END[/code]

:arrow_right: administrator: přejmenováno z "PIC16F88 a AD prevodnik."

PORTB máš nastaven jako vstupní, před zápisem do TRISA i TRISB se musíš přepnout do bank 1.

Uz som to opravil. Nikde inde chybu nevidis ? Btw, ked zapnem procesor, tak B-port tam nema ani jednotku ani nulu :smiley: :smiley: :smiley: :smiley: To je jak mozne ? :smiley:

Jsou asi dvě možnosti, PORTB je jako vstupní anebo MCU neběží. Zatím nemohu nic najít, ale snažím se. :slight_smile:

Vyměň v prvním příspěvku ten kód za nový…opravený.

Tak já nevím, vypadá to že neběží, honzíku3 máš tady práci kde jsi… :smiley:

Aj mne to vychadza tak, ze jednoducho nebezi, ale netusim ze preco,… Pozeram na to uz dva dni a nevidim problem, preco by nemal.

Zkus odstranit zápis _INTOSC_OSC_NOCLKOUT.

A do ORG 0x2008 přidat: _IESO_OFF a _FCMEN_OFF

Cau, skus si hned za konfiguraci oscilatoru hodit nastaveni PORTB jako vystupy, rosvit vsechny ledky na cca 1s ,zhasni a pokracuj v programu, takle poznas jestli ti mcu bezi

pojistky bych videl takle
__CONFIG _CONFIG1, _CP_OFF &_DEBUG_OFF & _WRT_PROTECT_OFF & _MCLR_ON & _WDT_OFF & _INTRC_IO

Taky občas chodím do práce :smiley:

Zkus přílohu :smiley:
AD.asm (1.62 KB)

nijak raz hosi nechce ist. Prilohu som skompiloval a spustil, ziaden esfekt. Hned za nastavenie portu B ako vystupneho som ho cely nastavil a dal som cakaci cyklus ale ledky nesvietili nijak raz,… Nechapem, som mimo z toho. Uz som ten program presiel asi 100x aj s datasheetom ale nevidim tam chybu. A tearz ked uz viem ze konfiguracia je spravna uz ju vobec nevidim,… Este pre istotu prikladam schemu
Bez názvu.JPG

Koukám že v asm který ti honza3 sem dal má zapnuto MCLR, připoj tento pin na +5V.

Změn CONFING 1 na

Omylem jsem zapl MCLR

Nic nového, PETR je zase rychlejší :smiley: :smiley: :smiley: :smiley:

EDIT: Někdy PIC vadí CLKOUT, to jsem taky změnil.
A napadlo mě, že jestli to nebliká tak rychle,že to není vidět. :smiley:

Podle zápisu v programu by se měla rozsvítit alespoň LED na RB.0
ale jak psal, se nic nerozsvítí. Takže asi ani rychle to blikat nebude.

To je taky fakt. Ropzsvítit by se měla, z toho plyne, že procesor neběží. Asi je to tím, původně špatně nastaveným MCLR.

Kdybych měl doma 16F88, bych to zkusil, ale nemám ho :frowning:

Já taky ne, nejblíže k tomu mám 16F819. No uvidíme s čím INKOGNITTO příde.

Ja dufam ze to pripoji MCLR cez odpor 4k7-10k

A nejaky kondik 100n+100uF priamo k procesoru by tiez nezaskodil.
TEn jeden odpor pre ledky poriesi snad neskor.

Snad mu ten brouk neotocil uz nozicky …

ja to mam osaene v poli a programujem to PIC-KITOM 2, kotry je ale momentalne mimo mojho bytu :smiley: Jasne, ze ten jeden odpor pre ledky tam je len na pokusy, zatial staci. Kondik myslis paralelne na zdroj koli vyhladeniu ?? A ten odpor som nepochopil. Mam tam dat odpor, ci ne cijak mam ten pin zapojit ak ho mam vobec zapajat :smiley: ??

MCLR zapoj cez odpor na +5V nič tym nepokazis. POkial nieje v konfiguracii napisane MLCR OFF tak to musi mat pripojene ako som napisal… omto to pri log0 resetuje procesor.

A ked naprogramujes procesor odpajas programator ? Alebo ako to programujes.

100n co najplissie napajacim nozkam procesora…ten caa 100uF uz mmoze byt dalej.

Asi hulte něco jinšího jak ja,ale tomusí FUNGOVAT.
Taky chci trochu

Programator neodpajam, lebo je to zaroven aj napajanie procesora. A ani programovacie piny neodpajam. Ale nikdy to nicomu nevadilo. Takze MCLR ma byt pod napatim, takze staci len v aplikacii PICKIT2 zapnut napajanie aj pre ten pin a je to to iste myslim, nie ?