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

Jestli existuje, to nevím, ale v řadě 16F je jedno, jestli napíšeš movf NECO,w nebo

U řady 18F už to ale nefunguje :frowning:

A asi to bude něco jako banksel, pagesel, bc, bnc, bz, bnz, skpc, skpnc, tstf atd.

Jak víš v asm nepíšu, jen mě to zajímalo. Takže asi nějaká pseudoinstrukce kterou překladač vezme.

Je to pseudoinstrukce, která by se neměla používat. Když jsem si natáhl výše uvedený kód do projektu, tak mi to ale překvapivě assembler interpretoval jako návěští, nikoliv jako instrukci. proto jsem o tom začal.

Je to jedno, protože MOVFW je direktiva. Tzn. pokud se koukneš na zkompilovaný HEX, tak z MOVFW C se stane standardní MOVF C,W.

Edit: Jankop byl rychlejší :slight_smile:

me se to chova jako klasicky MOVF ADRESH,W
a jinak varovani na pseudoinstrukci

Warning[204] I:\PIC\ZKOUSKA\FIK.ASM 112 : Found pseudo-op in column 1. (MOVFW)
a este jiz drive zmineny nastavovani GO + zapnuti A/D

The Go/Done bit must not be set in the same cycle as the Enable bit.

Skusil som to prave aj s tym cakanim po prehodeni portu, ale stale sme pri tom istom probleme. Jeden potak ovlada jednu diodu, druhy obe diody. Som z toho uz jelen. Podla mna tam je vsetko spravne, netusim preco mu sibe :frowning:

[code]PROGRAM

CALL PREVOD1
CALL PREVOD2
GOTO PROGRAM

CAKAJ
MOVWF C1
DECFSZ C1
GOTO $-1
RETURN

PREVOD1

MOVLW B’11000001’ ; 1. VSTUP
MOVWF ADCON0

MOVLW .255
CALL CAKAJ

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

MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON

INCF ON
DECFSZ ON
GOTO $+2
GOTO $+4
MOVFW ON
BSF LED0
CALL CAKAJ
BCF LED0
MOVLW .255
CALL CAKAJ

RETURN

PREVOD2

MOVLW B’11001001’ ; 2.VSTUP
MOVWF ADCON0

MOVLW .255
CALL CAKAJ

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

MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON

INCF ON
DECFSZ ON
GOTO $+2
GOTO $+4
MOVFW ON
BSF LED1
CALL CAKAJ
BCF LED1
MOVLW .255
CALL CAKAJ

RETURN

END[/code]

Mě už to tak připadá, že je chyba mezi klávesnicí a židlí :slight_smile:

Prave som odstranil to “PWM” a dal som tam len zasvietenie a zhasnutie. A robi to zase neco zaujimave :smiley:. Prvy potak OK, prva ledka sa zasvieti, pokial to prekroci hodnotu b’01000000’, ale niekde pri b’11111111’ uz je zase zhasnuta a netusim preco… Druhy potak je kludny kym sa s nim nedostanem na hodnotu b’01000000’ a zase niekde pri vysokych hodnotach urobi to, ze zasvieti obe ledky. Hotovy som !

[code]PROGRAM

CALL PREVOD1
CALL PREVOD2
GOTO PROGRAM

CAKAJ
MOVWF C1
DECFSZ C1
GOTO $-1
RETURN

PREVOD1

MOVLW B’11000001’ ; 1. VSTUP
MOVWF ADCON0

MOVLW .255
CALL CAKAJ

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

MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON

BTFSS ON,6
GOTO $+3
BSF LED0
RETURN
BCF LED0
RETURN

PREVOD2

MOVLW B’11001001’ ; 2.VSTUP
MOVWF ADCON0

MOVLW .255
CALL CAKAJ

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

MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON

BTFSS ON,6
GOTO $+3
BSF LED1
RETURN
BCF LED1
RETURN

END[/code]

Nebylo by jednodušší vykašlat se na LEDky a připojit tam LCD a sledovat přímo stav registru ADRESH a ADRESL?

A pokud budes sledovat BTFSS ON,6 tak LEDka 4x změní svůj stav :slight_smile:

ach jo, furt patlas ty dva kanaly do sebe, nejlepsi bude udelat nakou optickou signalïzaci ze A/D opravdu funduje, but jak rikal honza , nebo jestli mas volnej portB tak si nastav 8bit prevot (ten uz vlastne mas,snad)a zapis to na nej (na PortB ,8x led),
a za dalsi pokud to mas takle ve smycce muze to problikava tak rychle ze to vidis jako ze sviti,skus tam dat pauzu mezi mereni a testuj ten 6 bit

CALL PREVOD1 call pause_50ms CALL PREVOD2 call pause_50ms GOTO PROGRAM

Ad prevod sam o sebe funguje, uz som to skusal s tymi 8-mimi LED-kami na B-porte a fungovalo uzasne. Dokonca ked obmedzim program LEN na jeden alebo LEN na druhy kanal, tak funguje v poriadku, problem to robi v kombinacii kanalov. :frowning:(

hm, mozna to bude delat to tvoje kouzelny PWM kterymu nak nerozumim, nebo prepinani kanalu, kanakly prepinej jenom nastavovanim prislusnejch bitu pro volbu kanalu a ne zapisem do celyho registru + cekani Tacq (20uS),
a skus jednodusi pwm

[code]MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
bsf LED1

PWM1 nop
nop
decfsz ON,F
GOTO $-3
bcf LED1[/code]
sice to bude mozna poblikavat (nebo skus pak vyhodit ty nopy) ale skus to, a delat bordel kdyz tam bude 0 , uvidis

Jsem si “sehnal” 16F88 a s LCD to funguje tak jak má, takže je chyba, jak jsem už jednou napsal, mezi klaesnicí a židlí.

JJ, bola chyba tam a uz aj presne viem, ze kde - potencimeter. :smiley: :smiley: :smiley: :smiley: Funguja krasne 2 kanaly nezavisle na sebe a nepotrebuju ani ziadne spozdenie. Dakujem vsetkym za pomoc :slight_smile:

Takze za to muze potak JooO ? rozmontovat mrtvy !
aspon ze tak 8)

poradí tu někdo?

polozi tu nekdo otazku ?

Zdarec určitě ano su rad že se někdo ozval chtěl bych trochu poradit s AD převodníkem u 16F88 přes AN1 a AN0 snímám napětí na potenciometrech zapojených jako děliče napětí problém mám vtom že se mě navzájem ovlivňují referenční napětí mám Vdd napájení procesoru je 3.3V

obcas by neuskodila carka ci tecka . v tomto tematu si myslim je maximum k AD prevodniku . skontroluj si spravne prepinani kanalu , dodrzeni cekacich casu mezi prepinanim kanalu / spousteni AD prevodu atd. mas tu funkcni kody tak si je pornvnej s tim tvym . jinak bez tveho kodu ti moc neporadime