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

niesom si isty …ICD2 ma resetovaci vstup pripojeny a po naprogrmovani zdodi napatie ma MRCL na 0 a procesor nebezi…pokilal v nekliknes na ikonku v mb labe.

TAk ze mlcr pripoj cez odpor na +5V odpoj programator od procika… a zapni to ci to bude blikat >|

Pokud máš MCLR OFF, reset nefunguje a program se v procesoru po nahraní PICKITem hned rozjede.
Máš ten PIC OK? Ještě me napadlo, zkusit ho zprovoznit s nějakým krystalem a MCLR.

jj, PICKIT je urcite v poriadku. Len ako vravim momentalne mi odcestoval, takze cakam na jeho navrat :slight_smile:

Jak je to se vstupní impedancí a/d prevodníku v PICu, v datasheetu píší o max. impedanci zdroje do 10k. Tak když chci měrit napětí do 50V a dám vstupní dělič napětí 100k, tak a/d prevodník ho bude hodně zatěžovat, nebo ne? Popřípadě mám použit operační zesilovač v zapojení jako sledovač signálu?

A nešlo by použít dělič napětí 1:10 složený z 9k a 1k odporu, při 50V bude na výstupu 5V a procházet bude proud 5mA.

Výstupní odpor děliče napětí 10:1 složeného z rezistorů 90K a 10K je dle mého názoru 9K ohmů, tak nějak nevím, co řešíte.

Při hodnotách rezistorů co navrhuješ poteče proud 500uA. Bude to stačit pro plné nabití vstupního kondenzátoru ?
Jen se ptám, taky mě to zajímá.

Když v datasheetu tvrdí, že maximální výstupní impedance zdroje pro ADC je 10Kohm, tak dle mého soudu by to s 9Kohm mělo fungovat. Mařit 0,25W na děliči zbytečně, je vcelku dost.

Záleží taky na době vzrokování…tady se počítá náboj

Oki hosi, uz bezi, len s tym problemom, ze ked sa prekroci urcita hodnota myslim ze je to 255, tak zmrzne, ostanu svietit ledky a ani ho nehne,… mam tam toto: [code]LIST P=16F88
#include <p16f88.inc>

TMP0 EQU 21h

_INTOSC_OSC_NOCLKOUT EQU H’3FFC’

ORG 0x2007 ; adresa konfiguracie PIC16F88
DW _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_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

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

GOTO PROGRAM

PROGRAM
BANKSEL ADCON0
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
MOVFW ADRESL ;Adresl do pracovneho reg.
BANKSEL PORTB
MOVWF PORTB ;Pracovny do portu B.

GOTO PROGRAM

CEK40us ;Delay 40 cycles
MOVLW .255
MOVWF TMP0
DECFSZ TMP0,F
GOTO $-1
RETURN

END[/code]

cau. v “PROGRAM” druhej radek instrukce "MOVWF ADCON0 " co tam zapisujes ?

EDIT: pokud cekas na dokonceni AD prevodu testovanim bitu GO/DONE tak tam nemusis mit tu cekaci smycku 40us

uz to slo prec, ale tentokrat sa ani len nenastartoval.
len pre kontrolu:

[code]LIST P=16F88
#include <p16f88.inc>

TMP0 EQU 21h

_INTOSC_OSC_NOCLKOUT EQU H’3FFC’

ORG 0x2007 ; adresa konfiguracie PIC16F88
DW _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_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

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

GOTO PROGRAM

PROGRAM
BANKSEL ADCON0

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

BANKSEL ADRESL
MOVFW ADRESL ;Adresl do pracovneho reg.
BANKSEL PORTB
MOVWF PORTB ;Pracovny do portu B.

GOTO PROGRAM

CEK40us ;Delay 40 cycles
MOVLW .255
MOVWF TMP0
DECFSZ TMP0,F
GOTO $-1
RETURN

END[/code]

Nechybí ti tam něco?

[code]BANKSEL ADCON0
MOVLW B’10000000’ ;FOSC/64, 000-1 vstup AD na AN0, stav 0, AD vypnuty

GOTO PROGRAM [/code]
Nemá to být takhle?

BANKSEL ADCON0 MOVLW B'10000001' ;FOSC/64, 000-1 vstup AD na AN0, stav 0, AD zapnut movwf ADCON0 GOTO PROGRAM

Mas tam prehazeny radky , sem myslel ze ti to trkne kdyz sem se ti ptal co tam zapisujes , a byla to otazka :question: ne ze to mas smazat

Honzo, nejde to ani tak. Nijak raz. Nechapem absolutne,… :frowning: Nemate niekto funkcny program pre 88-micku kde ste robili AD prevod ?? :frowning:(

Otazka : a mas ten AD zapnutej :question:
mazani se nevyplaci

no zapina sa tu:

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

zapnuti AD prevodniku , ne start prevodu
koukni se do toho starsiho kodu co si tam vsechno vymazal

Uz je to konecne rozlusknute. Dakujem vam vsetkym za pomoc. :slight_smile:

No a kde byla chyba ?