Aj kolega da te ne davim sa pitanjima napisati cu ti post za tvoj upit... Mrzim PIC još od rođenja, pa ako nešto krivo napišem neka pedja ili netko ispravlja jer to računalo nije u mojoj "like" zbirci.
Prva stvar koja te buni je činjenica da tvoje računalo ima samo 1 ADC... Ako malo dublje zabiješ nos u hardware ADC-a možeš skužiti da postoji samo jedan jedini ADC. Tu počinje pitanje koje te najviše buni:
"Kako ADC ima n kanala a samo je jedan?"
Odgovor ti također piše u datasheetu, a zove se multiplexer:
http://en.wikipedia.org/wiki/Multiplexer
U principu ti sve kanale mjeriš sa istim ADC-om jer ih nemaš 2. Iz toga ti proizlazi jednostavna činjenica da ti sa takvim računalom nikako ne možeš mjeriti 12 kanala istovremeno.
Mjerenje ADC-a seljački rečeno izgleda ovako:
1. Konfiguriraj PORT ADC-a
2. Konfiguriraj Referentni napon
3. Odaberi frekvenciju ADC-a
4. Odaberi kanal koji želiš mjeriti
5. Pokreni ADC
6. Čekaj da on završi mjerenje
7. Čitaj registar ADC-a
Malo mi se neda otvarati datasheet tog pic-a, ali registri se zovu dosta logično pa evo odgovor i na bit1
U slici koji si postavio u prvom linku taj bit se zove GO/DONE. Sa tvoje strane gledanja to znači samo da postavljanjem tog bita u logičku jedinicu upravo započinje konverzija koja je kod mene opisana u stavci:
5. Pokreni ADC
Isti taj bit srušiti će sam hardware ADC-a kada završi mjerenje (što je opisano kao stavka 6) i kada on padne sa 1 na 0 upravo se dogodila stavka:
7. Čitaj registar ADC-a
Čini li se tebi možda kako ovaj tekst pišem od sredine? Očito dakle da ti je i pitanje postavljeno obratno, pa se zato u opisu ADC-a vraćamo malo nazad i to na stavku:
1. Konfiguriraj PORT ADC-a
Svaki port računala može ti biti i digitalni i analogni, ali ti očito moraš sam odlučiti što je digitalno, a što je analogno jer mašina ne zna tvoje želje i tvoje potrebe. Upravo to se nalazi u tvoja 4 nejasna bita ADCON1 registra. Ako želiš da ti svi AD kanali mogu čitati analogni signal onda su obe tvoje predpostavke netočne.
U datasheetu je za taj slučan navedeno da na odabir analognih i digitalnih ulaza utječu 4 desna bita, što bi značilo da za sve AD kanale oni moraju biti "0". Taj registar bi u najmanju ruku morao izgledati ovako:
ADCON1 = %xxxx0000 , dakle sa 4 desne nule, a ne tri desne nule, ili recimo ovo:
ADCON1 = %xxxx0001
ADCON1 = %xxxx0010
Ralike potraži u datasheetu jer imaš note za prvi slučaj, i za kanale 5, 6, 7
Trebao bi primjetiti i da bitovi [3-0] nisu 3 bita, nego su 4 bita, jer i 0 je bit + ova 3 su ukupno 4.
Tvoje sljedeće pitanje vezano je za ADCON3 i 7 bit.
Taj bit ti određuje hoće li rezultat biti prikazan s lijeve ili s desne strane:
Ako 8 Bitni ADC čita vrijednos 3, onda to može biti prikazano kao 00000011 ili kao 11000000. Tim bitom se zamaraj tek ako ti rezultat bude okrenut naopako.
Što se tiče stavke:
3. Odaberi frekvenciju ADC-a
Naravno da ima najbolje moguće podešavanje clocka. A to ti piše u datasheetu, i najprije trebaš znati na kojoj frekvenciji se vrti PIC, tj koji je oscilator, te izračunati prescaler za najoptimalniji clock ADC-a po datasheetu. Za ATMEL je to negdje oko 200 kHz, Za pic traži u datasheetu
Ja ne vidim tvoje staro pitanje za izlazne kanale, jer ne znam na što točno misliš.
Jedno pitanje nisi uopće niti postavio, a bez toga ti ADC opet neće raditi:
2. Konfiguriraj Referentni napon
Iz tvojih slika vidim da se to nalazi u ADCON1 registru...
I za kraj ti je još bitno što i kako s tim svim govnima?
1. Konfiguriraj PORT ADC-a------------> Samo jedamput i nikada više
2. Konfiguriraj Referentni napon------> Samo jedamput i nikada više
3. Odaberi frekvenciju ADC-a----------> Samo jedamput i nikada više
4. Odaberi kanal koji želiš mjeriti-----> Podešavaj stalno, ovisno o kanalu kojeg trenutno mjeriš
5. Pokreni ADC---------------------------> Pokreći stalno jer želiš mjeriti
6. Čekaj da on završi mjerenje--------> Čekaj jer ne može biti brže
7. Čitaj registar ADC-a------------------> Čitaj ADC ako te zanima što je izmjerio