skraceni kurs ucenja picbasica

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

Kolega s dugackim imenom, definitivno sam ti duzan pice ako budes kad navratio u dbk.
Stvarno si se raspisao i hvala puno.... vec sam bio izgubio svaku nadu :)

Samo da dodemo do korijena par sitnica :D
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
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.
Znam da su bitovi 3-0 zapravo 4 bita ali ja sam cijelo vrijeme racunao da se to odnosi na prva (lijeva) 4 bita a ne 4 desna.
Po kojoj logici su 4 desna, to nekuzim ?
Zar ne ide ADCON1 = %01234567 (sto se tice polozaja bitova)
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...
To znam i to sam postavio u onom svom primjeru ADCON1 registra, mozda te to i zbunilo...
Stavio sam bit 4 na "1" tako da mu dam do znanja da cu koristit neki odredeni referentni napon za + dok - ostaje standarno na vss
Ja ne vidim tvoje staro pitanje za izlazne kanale, jer ne znam na što točno misliš.
To pitanje je par postova povise onog posta kojeg trenutno obradujemo xD
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


To radi komanda ADCIN.
Ali sve se svodi na citanje datasheeta, i gledanje blok sema...
A pogledaj u example folderu u pbp. Imas jednostavan primer...
Pretpostavljao sam da to sve radi komanda ADCIN, zato sam i postavio pitanje u vezi toga svega jer nemam pojma kako cu postavit bit 1 u ADCON0 ?
Da ga stavim na 0 pa ce onda ADCIN komanda sama izvrsit mjerenje bez obzira sto stoji u ADCON0 registru ?


I naposljetku, ovom spoznajom da pic ima samo jedan ADC si mi pravo opalio samarcinu :lol:
Pretpostavio sam da je u pitanju samo jedan ADC cim si onako postavio pitanje :roll:
Znaci cijeli ovaj pic otpada jer meni treba polifonija instrumenta tj. da mogu vrsit mjerenje i obradivat podatke na svakom kanalu u isto vrijeme ako treba.
Imate li mozda za predlozit neki sto jeftiniji pic, maleni, samo da ima ADC i da moze koristit spi ili i2c protokol.
Ako niste skuzili dosad, ocito ce mi trebat 25 komada :x
Korg X5D <3
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

svi bitovi uvijek idu s desne strane, pa ti to izgleda ovako:
76543210

Da ima samo jedan ADC, ali ima i 12 kanala za taj jedan ADC... Pa malo izračunaš koliko brzo on mjeri i vidiš sam sa sobom jeli to dovoljno brzo... Za AVR znam jer sam radio neke analize i AVR-ov ADC je u stanju izmjeriti jedan kanal za nekih 30uS.
Pošto ti imaš 12 kanala za ADC to ti je kao da 12 puta mjeriš istim ADC-om samo drugi kanal... Pitanje je samo jeli brzina ADC-a prihvatljiva za ono što radiš...
InTheStillOfTheNight
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Oko 50uS treba da se odradi AD.
_heX
Napredujem
Napredujem
Posts: 136
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: skraceni kurs ucenja picbasica

Post by _heX »

AD konverzija sadrzi u biti dva odvojena procesa:

1) Akvizicija: Unutar ADC-a ima jedan mali kondenzator, reda desetak pF. Za vrijeme akvizicije on je spojen na fizicki pin (koji? Ovisno koji si kanal aktivirao) i treba proci odredjeno minimalno vrijeme da se on nabije na napon prisutan na spomenutom pinu (acquisition time). Imas u datasheetu kako se ono racuna (Tacq). Izmedju raznih parametara koji utjecu na njega tebe/nas se posebno ticu otpor prekidaca (koji prepaja pin i kondenzator) ovisno o naponu na kojem PIC radi i maksimalni izlazni otpor "onog vanjskog neceg" na cemu mjeris signal.

2) Konverzija: Zapocinje s GO_DONE = 1. Prekidac odvaja kondenzator od pin-a i zapocinje konverzija (ADC mjeri napon na kondenzatoru, ne na pinu direktno). Konverzija traje 12Tad vremena. Tad vrijeme ovisi o frekvenciji na kojoj PIC radi. Tad odaberes da bude sto manji, ali veci od propisanog minimuma (1.6us za PIC16F877A).
Za doticni PIC @ 16MHz, Tosc = 1/16Mhz = 0.0625us
Tad = 32Tosc; Tad = 32 * 0.0625 = 2us (vece od 1.6: ok)
Tad = 16Tosc; Tad = 16 * 0.0625 = 1us (manje od 1.6: nije ok)
Tad = 64Tosc; Tad = 64 * 0.0625 = 4us (vece od 1.6: ok, ali moze brze -> 32Tosc)


ADCON3, bit7 (ADFM)

PIC uglavnom ima 10-bitni ADC (rjedje osam). PIC-u je 8-bitni kontroler i registri su 8-bitni. Posto je rezultat analogne konverzije 10bitni, normalno da ne stane u jedan registar i zato imas dva: ADRESH ADRESL. Ova dva 8-bitna registra gledaj kao jedan 16bitni. Za primjer neka je rezultat konverzije 1100101101, u 16-bitnom registu ovo bi bilo upisano 0000001100101101. Ako je ADFM = 1 u registrima ce se nalaziti ADRESH = 00000011, ADRESL = 00101101. Za ADFM = 0 rezultat ce biti prikazan ADRESH = 11001011, ADRESL = 01000000.

Sad, gdje bi bila primjena slucaja za ADFM = 0? Pa, ako ti je dovoljna rezolucija AD konverzije od 8bita, samo procitaj ADRESH. ADRESH u slucaju ADFM = 0 sadrzi efektivni rezultat 8bitne konverzije.
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

E hvala vam decki, pomogli ste stvarno puno. :D
@_hex
Citao sam to za vrijeme konverzije u datasheetu ali posto nisam upoznat sa tim strucnim digitalnim terminima nisam skroz bio shvatio sve dok ti nisi to fino napisao..... tnx :)
A i ovo sa ADCON3 bi mi zadavalo glavobolje naveliko da nisi napisao :lol:
Mislim da si necu komplicirat zivot sa tim dvojnim registrima nego cu se zadovoljit sa 8 bitnim i ko ga jebe xD
Naravno, 10 bitno je bolje al da ti pravo kazem, nemam uopce ideju kako bi u programu rijesio to sa dva registra ^^

Vidim da si spomenuo PIC16F877A.
Kakav je on ?
4 komada 18F4520 me dode 150kn a isto toliko i 10 komada ovog 16F877A pa normalno da bi uzeo ovu opciju gdje ih dobijem vise za iste pare no opet me muci zasto su toliko jeftiniji xD (bice neki stariji model ?)

To po tvojim proracunima na 16mhz bi vrijeme pretvorbe bilo 24 uS.
Pa neznam, mozda bi i mogo prezivit ako razbijem ovih svojih 25 kanala na 5 mikrokontrolera..
Ovo sve ce bit muzicki instrument pa si nesmijem priustit skoro pa nikakvo kasnjenje :?

P.S.
Vidim da se vecina ovih mikrokontrolera moze vrtit do 20mhz.
Kako da znam koja mi je optimalna frekvencija ?
Da uzmem i ja 16mhz ? :lol:
Korg X5D <3
_heX
Napredujem
Napredujem
Posts: 136
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: skraceni kurs ucenja picbasica

Post by _heX »

Vrijeme konverzije @16MHz traje 24us, ali kao sto rekoh analogno digitana konverzija ima i drugi proces (akvizicija). On isto traje izvjesno vrijeme. Prema datasheetu za doticni PIC @ 5V on traje (uz uvijet da izlazna impedancija "onog neceg" na cemu mjeris ne prelazi 2.5kOhma) ~13us. Znaci zajedno
24us + 13us.

Kako da ta dva registra spojis u jedan? Evo najednostavnije (ne nuzno najbolje)
ADRESH sadrzi 00000011, ADRESL 10110110
Kreiraj varijablu tipa Word (16 bitni unsigned integer), nazovimo je MIRKO.
Priduzi joj vrijednost ADRESH registra.
MIRKO sada sadrzi 0000000000000011
Napravi shift na MIRKU lijevo osam puta,
MIRKO sada sadrzi 0000001100000000
Napravi OR izmedju MIRKA i ADRESL, a rezultat spremi natrag u MIRKO
MIRKO sada sadrzi 0000001110110110

PIC16F877A 10 komada za 150kn? Cudno jer su inace bas skupi, iznad 6,5 USD. Da ne bi to bilo ovak nesto: http://www.sparkfun.com/news/350
PIC18F4520 Ok ak te izbjegne "silicon version A1", 44 greske u hardweru (pa se ti sad bori s tim Inace bolji/brzi u svakom pogledu.

Kako da znam koja mi je optimalna frekvencija ?
Neznam, najniza na kojoj sve radi kak spada.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Ako je promenljiva koja je stavljena u naredbu adcin word, automatski se smesta svih 16 bita u promenljivu.
E sad, ukoliko je vreme toliko bitno, batali pbp i pici u asembleru...
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

@pedja neće njemu puno pomoći asm jer može uštediti samo na broju FLASH instrukcija, no brzina ADC-a i dalje je vezana za broj clocka koji se vuče sa oscilatora, i to ne može biti brže. ADC se može natjerati da mjeri barem 2x brže nego što je preporučeno u datasheetu. To sam probao na AVR-u, a vjerojatno je ista priča i kod PIC-a... Ja bi u ovoj situaciji vjerojatno tražio dobar externi ADC, ili pokušao uzeti ARM... no tu je opet problem sa programatorima, i nešto naprednijoj tehnologiju s kojom se treba boriti...

Uostalom kolega nije niti rekao što on točno treba... Dovoljno sporo i dovoljno brzo je ipak pojam koji on sam mora postaviti... Za mjerenje napona na baterijama i 1 sekunda je dovoljno brza, tako da bi najprije trebalo znati što on točno želi, i koju brzinu on želi...

Ako kaže što brže onda to i nije odgovor, jer po tome može uzeti ADC iz osciloskopa, no on košta kao sam vrag prema usporedbi internog ADC-a u PIC-u...
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

U tome ima još nekoliko stvari koje se često ne spominju među računalima, a jedna od njih je:
"Što je moguće, a što ne?"

S računalom je ponekad nemoguće napraviti ono što želiš, pa čak i da uzmeš sva računala na svijetu ne bi mogao razviti 256 bitnu kriptaciju... Ista vaga ti je kod svega što radiš... Ako PIC ili AVR nije dovoljno brz za ono što trebaš očito moraš uzeti ARM. Nema tu drugog izlaza, pa čak i assembler ne može natjerati računalo da radi ono za čega nije napravljeno.

Assembler može ubrzati rad programa i onoga što se događa u FLASH-u, no granice hardware-a ne može pomaknuti. To ubrzanje sigurno nije veće od 50% gledano na C i sigurno nije veće od 100% gledano na bilo koji BASIC. Ovo su granice onoga što je možda i prevelik postotak mogućnosti nekog programerskog alata....

Po tome ako je tebi sporo 50uS po kanalu, sigurno ti je sporo i 25uS po kanalu, i u toj situaciji se ne može hardware natjerati da mjeri brže od toga niti jednom metodom...

Sve što ti zapravo ostaje je brže računalo od tog PIC-a i svakog 8 bitnog AVR-a, ili dobro osmišnjen hardware sa externim ADC-om koji sve dolazne informacije može procesuirati... Treće solucije nema...
InTheStillOfTheNight
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Pa ako bude radio u asembleru onda ce mu vreme izmedju citanja, odabira kanala i pokretanja adc biti krace...
Samo konverziju ne moze ubrzati...
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Na to i mislim @pedja... On moze eventualno u assembleru 50uS smanjiti na 30 uS, ili čak na 20 uS ako digre frekvenciju ADC-a no ispod toga ne može nikako.

LPC2368 NXP ARM može izmjeriti jedan kanal za 2.44 uS što je nekih 12 puta brže od tog PIC-a...
Koliko god da tjeraš ADC PIC-a možeš dobiti eventualno duplo brže mjerenje koje bi sa 50 uS palo na 25 uS, ali nikako ne možeš dobiti 12 puta brže mjerenje u kojemu pretvaranje završi nakon < 3 uS.

Kolega sam mora znati što je njemu dovoljno brzo
InTheStillOfTheNight
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: skraceni kurs ucenja picbasica

Post by abc »

He, he, nocni nemoj da usporedjujed ADC iz PIC-a iz proslog stoljeca sa ADC iz ARM-a iz ovog , usporedi ga sa najnovijim piconjama ;) ;)
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: skraceni kurs ucenja picbasica

Post by abc »

Eh da je PERA ucio C gdje bi mu bio sad kraj, ARM-ovi a i medju piconjama (dspic33 ili pic32) bi nasao da imaju ADC od 1 ili 1,1MSPS u 10bitnoj rezoluciji ili 500kSPS u 12bitnoj i do 16 ADC kanala, takodje od 40 do 80 MIPSA, i to ,brzina CPU prema ostatku mikrokontrolera 1:1 , vecina nemaju EEPROM , neki ce zamjeriti;)
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: skraceni kurs ucenja picbasica

Post by abc »

@nocni , koji kompajleri trose taj ARM sto si naveo prije u postu?

u farnellu NXP - OM11042 - KIT, MBED PROTOTYPING BOARD, LPC2368 dodje oko 40,7funti.
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Ja koristim keil. Vjerojatno je najbolji alat koji se može pronaći, a cijena mu je nekih 7k ojra. Sreća pa postoji keygen :)

@abc ne uspoređujem ja sad stoljeća, no ako ne može sa tehnologijom prošlog stoljeća, onda može sa tehnologijom ovog...
LPC2368, LPC2378, LPC2478, LPC1768... To su neki koje ja najčešće koristim i svi su ARM7 jedino što je LPC1768 Cortex M3...

Programator za njih se može nabaviti za cca 100$, ali svi oni imaju serijski bootloader tako da se sve može programirati i bez programatora. Jedino je muka pisati program za to ako nemaš debug-a i ne poznaješ arhitekturu. To bi bilo opako zahebano...

Druga zahebana stvar kod njih je što se PCB ne može raditi ručno nego jednostavno treba platiti firmi koja se s time bavi da ti izradi PCB 2 sloja, i to u ZG-u košta oko 300 kn.

Ova rasprava polako odlazi u offtopic, i za takve rasprave bi trebalo otvoriti novu temu...
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Moj tekst iz teme avr\strujni izvor 0-50A ... Nisam znao napamet koliko AVR-ov ADC može brzo, a predpostavljam da PIC nije puno sporiji... Čisto da se zna što se sa tim računalima može, a što ne...
3uS je punjenje internog kapaciteta, a ukupna pretvorba traje 14 uS.

Objavljeno davno u avr\strujni izvor 0-50A:
ev kizo probao sam dici frekvenciju ADC-a na 500 kHz i još uvijek imam +-1LSB tocno mjerenje. Duty cicle sam smanjio na 3uS i također imam dobra očitanja ADC-a. (3uS Duty ciclea je granica onog sto mogu dobro ocitati na ovaj nacin) Konverzija ADC-a traje 14 uS.
InTheStillOfTheNight
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

Uh uh, sad pomalo....
Treba se snaci i pokusati odgovoriti na sve upite upucene meni... ^^
Idemo redom.
@hex
http://www.ebay.com/itm/10-pcs-Microchi ... 3f0ed6bf32
Neznam jesu li originalni ali vidim svjetina masovno kupuje i po komentarima samo rijeci hvale.... Ako i jesu kopije, ocito funkcioniraju ^^

E sad ostatak rasprave koji je otisao jako jako daleko :lol:
Uostalom kolega nije niti rekao što on točno treba... Dovoljno sporo i dovoljno brzo je ipak pojam koji on sam mora postaviti... Za mjerenje napona na baterijama i 1 sekunda je dovoljno brza, tako da bi najprije trebalo znati što on točno želi, i koju brzinu on želi...
Iskreno, prepao sam se kad ste poceli pricati o specijalnim vanjskim ADC-ovim, assemblerima i svemu tome :lol:
Laickim jezikom, meni treba najbrze sto moze bez da si kompliciram zivot toliko.
Kakvi assembleri i sve ono sto ste naveli.... tek pomalo pokusavam skuzit kako cu to izvest u pbp :lol:
No ocito sam zaboravio koliko je zbilja sitno to "mikro" i tek kad sam bacio na papir brojke skuzio sam da se vjerojatno opterecujem sa glupostima i da mi nije brzina "toliko" bitna.
Npr. 500uS mi je 0.0005 s i mislim da fakat mogu zivjeti sa time :lol:
Zasto sam napravio cijelu strku oko te brzine ?
Kao sto sam i prije naveo, cijeli sklop je zamisljen kao muzicki instrument, i sad zamislite da svirate neku pjesmu koja je poprilicno brza.
Ako je prva nota koju sam odsvirao trenutno zadnja na redu za konverziju u ADC-u, to znaci da ako je cijeli proces prespor da se moze dogodit da sam ja tu notu odsvirao ali nikad nije izasla iz sistema tj. nikad je nisam cuo.
Takav instrument bi bio beskoristan.... :roll:
Korg X5D <3
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: skraceni kurs ucenja picbasica

Post by abc »

Kada kazes sto tocno trebas dobices konkretan odgovor ovako mozemo nagadjati da li je ADC spor ili nije.

Ja sam ti dao prjedlog DSPIC jedan milijun seplova u sekundi za 10 bitnu konverziju ili upola za 12 bitnu.
Nocni ti je predlozio arm a ja recimo novi arduino chipkit MAX32 sa PIC32 i 80 I/O linija i maximalno 80MHZ, kazu da je nesto malo brzi od ARM CORTEX M3 , koliko je brz taj arm nemam pojma pitaj nocnog.

http://www.digilent.cc/Products/Detail. ... PKIT-MAX32

Sve ovo ako znas C.
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

@kolega, pa je ne znam što tebe uopće muči??? Nikad na forumu nisam napisao da sviram klavir... Očekivati je od mene da u harmoniju znam jako puno... trenutno sam na 27 vrsta akorda + puta 4 ili 5 hvatova... No još nisam niguran što ti uopće praviš???? Nove Gajde?
InTheStillOfTheNight
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

A radim vrstu optickog midi kontrolera, gdje se prelaskom ruke preko senzora kreira midi signal koji se onda dalje koristi za kreiranje zvuka u sintisajzeru.... :roll:
Sviram i ja klavir ali nije ovo takva vrsta instrumenta....
Mozes odsvirati max 2 note odjednom (3 ako koristis nogu :lol: )

@abc
Pa zar nisam maloprije reko sto tocno trebam, i usput naveo da ipak nije toliko brzina bitna koliko sam u pocetku mislio da ce bit...
Tako da mislim da nema potrebe za tim egzoticnim stvarima koje navodis...
Korg X5D <3
Post Reply