A/D převodník
Moderátor: Moderátoři
A/D převodník
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
- serviceman
- Příspěvky: 4005
- Registrován: 09 črc 2013, 02:00
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.
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.
v C by to bylo naprosto skvělý ale on mi tak trochu nefunguje: http://www.ebastlirna.cz/modules.php?na ... sc&start=0
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
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
Tady něco z mého kódu:
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.
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
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 ...
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ě![Very Happy :D](./images/smilies/icon_biggrin.gif)
PS. Pozor u PICů na fenomén "banksel" a "pagesel", což může člověku občas zamotat hlavu![Very Happy :D](./images/smilies/icon_biggrin.gif)
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ě
![Very Happy :D](./images/smilies/icon_biggrin.gif)
PS. Pozor u PICů na fenomén "banksel" a "pagesel", což může člověku občas zamotat hlavu
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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á...
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á...