A/D převodník

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

A/D převodník

#1 Příspěvek 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

Uživatelský avatar
serviceman
Příspěvky: 4005
Registrován: 09 črc 2013, 02:00

#2 Příspěvek od serviceman »

Na Google je "PIC16F876A datasheet" hned na prvním místě a pro "PIC16F876A A/D converter" jsou další odkazy.
Nebojte se skloňovat (i cizí slova).

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#3 Příspěvek 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

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#4 Příspěvek 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/D ... 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.

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#5 Příspěvek od toMajstr »

v C by to bylo naprosto skvělý ale on mi tak trochu nefunguje: http://www.ebastlirna.cz/modules.php?na ... sc&start=0

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#6 Příspěvek od toMajstr »

ten program mi tak trochu nefunguje, neposlal by si přímo odkaz na stažení?

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#7 Příspěvek 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- ... nners.html

Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 02:00
Bydliště: Vysočina

#8 Příspěvek 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.
Přílohy
Config_word.png
(18.11 KiB) Staženo 35 x
Žádnej učenej z nebe nespadl ...

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#9 Příspěvek 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

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#10 Příspěvek od toMajstr »

to co jsem přečetl je v pickitu stejný ale jako hex soubor je to jiný, je to problém?

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#11 Příspěvek 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

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#12 Příspěvek od toMajstr »

mě to motá hlavu pořádně, když to zapnu, ledka se rozsvítí cca na polovinu ale tlačítko nereaguje

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#13 Příspěvek 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á...

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#14 Příspěvek od toMajstr »

MPLAB má těch simulátorů asi 10, já používám MPLAB SIM

Uživatelský avatar
toMajstr
Příspěvky: 332
Registrován: 10 lis 2013, 01:00

#15 Příspěvek 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ý

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“