Stránka 1 z 4

A/D převodník

Napsal: 20 led 2014, 17:36
od toMajstr
dobrý den, koupil jsem si PIC16F876A s A/D převodníkem, ale na google jsem nenašel (nebo jsem jen špatně hledal) jak zapojit A/D. předem dík za rady

Napsal: 20 led 2014, 17:39
od serviceman
Na Google je "PIC16F876A datasheet" hned na prvním místě a pro "PIC16F876A A/D converter" jsou další odkazy.

Napsal: 20 led 2014, 18:38
od toMajstr
ok, a neposlal by si mu kousek kódu, stačil by _config řádek a podprogram co by mi vyhodil číslo podle A/D

Napsal: 22 led 2014, 19:18
od frpr666
V jakém prostředí to programuješ? Jinak čip PIC16F876A můžeš programovat v C kompilatorem zdarma: http://www.google.cz/search?q=sdcc
Na microchip.com najdeš hromadu aplikačních poznámek, videa, fórum atd.
http://ww1.microchip.com/downloads/en/DeviceDoc/31023a.pdf

Laicky řečeno, nastavíš vstupy jako AD, nastavíš registry pro AD, odstartuješ převod nahozením bitu, počkáš nějakou dobu, nebo cyklicky vyčítáš bit GO/DONE (nebo tak něco), poté vyčteš 8 nebo 10bit výsledek.

Každopádně to chce nejprve získat určitou zručnost s mini úlohami jako je blikání LED, atd.

Napsal: 22 led 2014, 19:25
od toMajstr

Napsal: 22 led 2014, 20:21
od toMajstr
ten program mi tak trochu nefunguje, neposlal by si přímo odkaz na stažení?

Napsal: 22 led 2014, 22:50
od frpr666
Jaké máš prostředí IDE, čím to programuješ?
Zapsat a vyčíst flash paměť ti funguje? Vyzkoušej si zapsat a vyčíst nějaký hex soubor a pak porovnat obsahy, zda jsou stejné.

Chce to zpočátku hodně trpělivosti. Program žádný nemám, ale třeba tady jsou komentované programy.
http://talkingelectronics.com/html/PIC-for-Beginners.html

Napsal: 23 led 2014, 06:12
od Chenzee
Tady něco z mého kódu:

Kód: Vybrat vše

Nastaveni:
BCF   STATUS,RP1   ;
BSF   STATUS,RP0   ;BANKA1

MOVLW   0X07      ;00000111
MOVWF   CMCON           ;NASTAV REG. CMCON NA 07h
MOVLW   0X0E      ;00001110 // AD PREVOD BUDE POUZE NA RA0 (AN0)
MOVWF   ADCON1          ;NASTAV REG. ADCON1
MOVLW   dle potřeby     ;
MOVWF   OPTION_REG      ;NASTAV OPTION_REG NA HODNOTU Z W
MOVLW   dle potřeby     
MOVWF   INTCON          ;NASTAV INTCON NA HODNOTU Z W

BCF   STATUS,RP0   ;BANKA0
MOVLW   0X40      ;01000000 // PROZATIM AD VYPNUTY
MOVWF   ADCON0          ;NASTAV REG. ADCON0
                 
=========================================
Cteni AD vstupu:
BSF   ADCON0,ADON   ;ZAPNUTI AD PREVODNIKU // VSE OSTATNI JE JIZ NASTAVENO JAKO IMPLICITNI NASTAVENI PRI STARTU PROGRAMU
BSF   PCLATH,4   ;STRANKA PROGRAMU
BCF   PCLATH,3   ;STRANKA PROGRAMU 2   
CALL   CEK40      ;NABIJ DOSTATECNE VZORKOVACI KONDENZATOR - 50us PO OTEVRENI VSTUPU ANx
CLRF   PCLATH      ;STRANKA PROGRAMU 0
BSF   ADCON0,GO   ;ZACNI AD PREVOD   
BTFSC   ADCON0,GO   ;PROBIHA AD PREVOD?
GOTO   $-1      ;ANO, CEKEJ
BCF   ADCON0,ADON   ;NE, VYPNI AD PREVODNIK A POKRACUJ DALE
;***************************
;ZPRACOVANI VYSLEDKU AD PREVODU NA AN_0      
MOVF   ADRESH,W   ;NAHRAJ VYSLEDEK AD PREVODU DO W
RETURN

Zde jsem používal pouze vrchních 8 bitů z převodníku.

Config word:
Pokud používáš MBlab tak v menu "Configure" --> "Configuration bits" můžeš nastavit config aniž bys jej zadával přímo do projektu jako __CONFIG ... . Musíš ale odškrtnou to zatržítko nahoře. Při zaškrtnutí to v kodu musíč mít uvedené, zde se pak ukáže pouze nastavení ale bez možnosti změny. Tím to můžeš zkontrolovat.

No tak kousek kódu i config word tu máš, ale bez prostudování DS - alespoň zmíněných pasáží, kde se mluví o registrech použitých v "kouscích kodu" je ti to stejně na nic.

Napsal: 23 led 2014, 07:10
od toMajstr
Dík, tohle mi docela pomohlo, používám MPLAB. Jestli to de nahrát a přečíst ti teď neřeknu, rozebral jsem to a nepovedlo se mi to složit, tak se tomu budu věnovat až příjdu ze školy

Napsal: 23 led 2014, 15:58
od toMajstr
to co jsem přečetl je v pickitu stejný ale jako hex soubor je to jiný, je to problém?

Napsal: 23 led 2014, 17:43
od frpr666
Porovnání zapsaného a vyčteného obsahu flash ukáže, zda funguje programování OK. Odhalí např. "odbouchnutý" čip.

Každý pořádný programovací adaptér po programování ještě provede "verify" což je ono porovnání. Jestli máš Pickit, ten by měl být v pohodě :D

PS. Pozor u PICů na fenomén "banksel" a "pagesel", což může člověku občas zamotat hlavu :D

Napsal: 23 led 2014, 18:13
od toMajstr
mě to motá hlavu pořádně, když to zapnu, ledka se rozsvítí cca na polovinu ale tlačítko nereaguje

Napsal: 23 led 2014, 22:39
od frpr666
Chce to trpělivost...
MPLAB má simulátor, napiš si primitivní smyčku a krokuj to v simulátoru. Tak získáš přehled, co která instrukce dělá. Instrukce si vytiskni a měj po ruce. Pozor některé registry mají např. banku1, tj. pokud tam chceš zapisovat, tak se do té banky musíš přepnout, zapsat a pak obvykle přepnout zpět do banky0 .
Anebo přejdi na Atmel, ten žádné banky nemá...

Napsal: 24 led 2014, 06:23
od toMajstr
MPLAB má těch simulátorů asi 10, já používám MPLAB SIM

Napsal: 24 led 2014, 14:42
od toMajstr
nahrál jsem tam jen nastavení registrů a BCF LED. když jsem připojil napájení, tak svítila naplno, a když jsem připojil MCLR tak zhasla (to samý jako u obvodu zapnout/vypnou jedním tlačítkem) zkoušel jsem tam napsat i BSF LED a dělalo to to samý