PIC

Jel tko radi ovdje sa PICevima? Ja sam nedavno poceo pa hocu malo zakomplicirati stvari. Radi se o PIC16F84A. Htio bih mu na jedan ulaz staviti potenciometar a na preostale izlaze svugdje po jednu LEDicu, kako se potenciometar okrece tako bi LEDice trebale brze kruziti (PAUSE vrijednost bi bila promjenjiva simetricno sa potenciometrom). Pa kako to izvesti, koje komande koristit za ocitanje vrijednosti sa potenciometra?

Reply to
Tihomir K.
Loading thread data ...

po jednu LEDicu, kako se potenciometar okrece tako

simetricno sa potenciometrom).

potenciometra?

Ba¹ ti i nije neki kontroler, nema A/D ili bar komparator ulaze, ali mo¾e se izmajmunisati tako da postavlja¹ npr. port kao izlazni i digne¹ ga na 1 i onda ga prebaci¹ kao ulaz i prati¹ vrijeme kada dosegne 0. Na taj port kaèi¹ RC prema masi, potenciometar paralelno C-u i raèunaj. Kako izvesti ? Ima¹ 33 instrukcije, datasheet i deri :-)

Reply to
- Zoki -

Kao sto rekoh tek sam poceo sa PICom pa me i ovaj zadovoljava trenutno :) Mozda da ga uparim sa nekim A/D konverterom? Neke upute?

Reply to
Tihomir K.

Umjesto A/D, obièan 555 koji generira impulse frekvencije ovisne o polo¾aju potenciometra?

Reply to
vaso

potenciometra?

Idem googlat da vidim jel ima kaj korisno na taj princip

Reply to
Tihomir K.

Mislim da ti je puno jednostavnije rije¹iti sa RC sklopom, vi¹e æe¹ nauèiti kako pomoæu jednostavnih trikova rije¹iti nedostatke kontrolera i dobiti funkcije koje na prvi mah izgledaju da se ne mogu ostvariti sa njim, ujedno dobit æe minimalizirani dizajn bez nepotrebnih dodatnih sklopova. Buduæi da nisi ni¹ta napisao kakva iskustva ima¹ u programiranju i elektronici, da li hoæe¹ nauèiti asembler ili bi to pisao u C-u, ako je ovo drugo onda ti ne mogu ba¹ pomoæi, radio sam dosta sa gotovo svim 8-bitnim PIC-ekima, ali sve sa asemblerom. Ne bavim se profesionalno sa kontrolerima ali na poslu tu i tamo èesto treba ne¹to rije¹iti, èesto sam sa njima radio i zahtjevnije stvari gdje bi bolje legao nekakav 16-bit kontroler ali jednostavno nisam na¹ao vremena da se posvetim C-u koji mi je ispario iz glave tako da sam na kraju sve rije¹io sa asemblerom na 8-bit.

Jedna stvar, bilo da ¾eli¹ poèeti u asembleru ili u C-u, mora¹ dobro prouèiti kontroler, njegov datasheet je u biti sve ¹to ti treba. Dok ne prouèi¹ kontroler ne mo¾e¹ ni¹ta zapoèeti. Osobno bi ti preporuèio asembler koji je zahtjevniji ali i bli¾i samom hardware-u, tj. sa njim æe¹ bolje upoznati kontroler. Buduæi da nema¹ iskustva sa tim kontrolerom nisam siguran kamo da te sad uputim. Najradije bi ti savjetovao da uzme¹ nekakav gotov jednostavniji projekat sa neta i da ga secira¹ dio po dio uz datasheet pri ruci, npr ne¹to od ovih

formatting link
Ne bi bilo lo¹e i da naruèi¹ onu knjigu o PIC-evima sa
formatting link
, mislim da je mo¾e¹ nabaviti u Electronic Centru kod nas. Tako æe¹ bar nauèiti nekakve osnove.

Ako si zainteresiran, mogu ti pomoæi oko tvog projekta, ali onda se prebacimo na mail. Ako preferira¹ C, onda tra¾i dalje :-)

Reply to
- Zoki -

umjesto 16F84 uzmi 16F876 koji ima vise memorije, portova i ADC a jeftiniji je i to izvedi s njim. Program bi izgledao nekako ovako (posto je ADC 10 bitni a na koristi se 16 pinova/ledica za korak sam uzeo 64):

-init procesor (portovi i ADC) petlja: procitaj ADC i spremi u varijablu potenciometar if (potenciometar==potenciometar_old) goto petlja potenciometar_old=potenciometar portB=0 portC=0 if (potenciometar==0) BSF portB,0 if (potenciometar==64) BSF portB,1 if (potenciometar==128) BSF portB,2 . . if (potenciometar==448) BSF portB,7 if (potenciometar==512) BSF portC,0 . . if (potenciometar==1024) BSF portC,7 goto petlja

Reply to
megamusic

potenciometra?

Za¹to dodavati jo¹ èipova, kada se najveæi dio mo¾e rije¹iti iz software-a?

Ako si novi u svemu ovome, uzmi BASIC i poèni raditi s njim. Za PIC-eve bez A/D konvertera u raznoraznim BASIC-ima obièno postoji POT komanda, koja mjeri otpor preko RC èlana (ono ¹to tebi treba).

formatting link

To je knjiga Mikroelektronike, mo¾e¹ ju nabaviti na srpskom jeziku od njih

formatting link
ili provjeri ima li u Electronic centru, Chipoteci i sliènim mjestima (mislim da se mo¾e i naruèiti ako nema na lageru).

Ako nisi imao iskustva, tako æe¹ najbr¾e shvatiti o èemu se otprilike radi. A ima¹ i hr.sci.elektronika.mikrokontroleri grupu :)

Reply to
Mario Malenica

Cudno da su isli prevoditi text ali ne i komentare u programima :-/

--
Chupo
Reply to
Chupo

Ima dosta ljudi tu na grupi koji rade sa mikrokontrolerima i vrlo cemo ti rado pomoci savjetom.

Najbolje sto mozes napraviti jest da si nabavis drugi mikrokontroler.

16F84 je jednostavno debelo zastario. Ako si mozes nabaviti 16f876 , kao sto ti je spomenuo Megamusic, ustediti ces si puno nepotrebne muke.

Inace, ovo sto ti hoces napraviti je otprilike dvadeset linija koda u PicBasic-u. ASM je za ovakve namjene uglavnom nepotrebno kompliciranje (jer si pocetnik).

I nemoj odustajati ako ne proradi ni iz desete, svi smo to prosli :)

Reply to
Svemirko

Ma da, radim u BASICu i za mene, kao pocetniku je to i vise nego dovoljno. Dakle usprkos svim prijedlogima neka nabavim PIC16F876? To radim iz hobija, tako da cu na BASICU vjerovatno i ostati, posto ne planiram neke "velike" projekte, vec onako, za razonodu.

Reply to
Tihomir K.

Napravis petlju koja ce vrtiti svjetlo, ako je dosta 8 dioda onda samo rotiras byte kojeg saljes na port (prvo ga napunis s 2^n, n=0..7, tako da je setiran samo jedan bit).

Petlja vrijednost za pauzu uzima s neke memorijske lokacije koju izracunavas s obzirom na polozaj potenciometra. Potenciometar mozes ocitavati i unutar interrupt rutine (pazi da A/D konverteru das dovoljno vremena izmedju ocitavanja vrijednosti).

Ocitanu vrijednost s potenciometra u intervale najlakse pretvoris s cjelobrojnim dijeljenjem, npr. za 10 bit A/D i 16 brzina:

parametar = ocitana_vrijednost\64

S '' sam oznacio cjelobrojno dijeljenje. 128 je jer je 2^10 (bitova A/D pretvaraca) = 1024 a 1024/16 (brzina) = 64. Sad u variabli parametar imas vrijednosti 0..15 i preko njega izracunas pauzu (o matematickoj funkciji i vrsti potenciometra ce ovisiti karakteristika, ako je potenciometar linearan a ti hoces logaritamsku karakteristiku onda ces isprogramirati odgovarajucu funkciju za izracun pauze),

Ako hoces vecu rezoluciju mijenjanja brzina (16 nivoa se moze registrirati s golim okom) radis s drugim vrijednostima, za 64 brzine stavis:

parametar = ocitana_vrijednost\16 (za 32 brzine 32)

pa dobijes parametar 0..63 (ili 0..31) ali s povecanjem broja brzina se povecava i mogucnost da kod brzog okretanja potenciometra preskocis jedan ili vise intervala (to naravno ovisi i o frekvenciji sample-iranja potenciometra --> frekvenciji interrupt-a (ako radis s interruptom)).

--
Chupo
Reply to
Chupo

Umjesto 128 treba pisati 64.

--
Chupo
Reply to
Chupo

Svi prijedlozi upravo kazu da nabavis ovaj 16F876, jer je puno noviji. To sto po netu nalazis hrpu clanaka sa 16F84 to je zato sto je to nekad davno bio popularan mcu, vec ga je odavno pregazilo vrijeme.

-- Pero

Reply to
Pero

evo upravo narucio u kronosu, sutra bi trebalo stic

Reply to
Tihomir K.

Zamjena za 16f84 je 16f628 ali je za ovaj uredjaj 16f876 zgodniji jer ima A/D pretvarac a 628 ima 'samo' komparatore.

--
Chupo
Reply to
Chupo

S obzirom da mi 16f876 dolazi sutra, molio bih pomoc unaprijed. Dakle picBasic, i "dvadeset linija koda" :) Onda ako zapnem javim

Reply to
Tihomir K.

Evo stigao PIC, jel moze malo pomoci, od kuda da pocnem :))

Reply to
Tihomir K.

Uz teoretski pristup za poèetak, treba ti i programator.....

Reply to
vaso

imam programator, kak bi se inace do sada igrao sa 16f84a? :)

Reply to
Tihomir K.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.