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ě
PS. Pozor u PICů na fenomén "banksel" a "pagesel", což může člověku občas zamotat hlavu

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ý