Prije svega HVALA na odgovorima!
Eeeee, Majstor Dujo opaska ti je dobra - sigurno si se pitao sta ce covjeku nesto ovako glupo?
Elektronikom se bavim i amaterski i profesionalno već niz godina tako da mi kratkospojnik nije stran,ali mi to nije bila namjera.
Kad sam vec poceo o tome onda i da zavrsim:krajnji cilj mi je da napravim sklop (primitivni alarm)sa mikrokontrolerom.Hardver nije upitan nego softver pa pokusavam da ga svarim bar za te primitivne stvari.
Pitanje oko pinova je da shvatim osnov! Naravno da bi izmedju "ako je gpio0=1" i "onda je gpio1=1" bio jos dio programa boji bi odradjivao jos stvari(napravi zadrsku,cekaj xx sekundi hoce li se gpio0 vratiti na nulu,ako ne onda vidi stanje gpio2,itd itd.)
Algorirtam sam razvio samo mi je problem pretvoriti ga u softver!
16F84 nazalost sa asemblerom nisam bas najvicniji ali sam shvatio da na odredjenim adresama u mikrokontroleru postoje registri (trisio,gpio,...)koji su zaduzeni sa zadavanje funkcija pojedinim pinovima tj.hoce li biti ulazni ili izlazni ,hoce li biti na pinu omogucen komparator ili a/d konvertor ili ...(datasheet 12f675)
Ipak sam nesto i naucio-vezano za otpornike!
Ispravi me ako grijesim :Option_reg (address 81h) bit 7 bi trebao biti 0 da bi se na svim pinovima ukljucili Pull-up otpornici tj da bi svi bili na logickoj jedinici i da bi se na pinu koji se koristi kao ulazni trebalo pratiti kad ce on postati 0?
Nesto mi ipak jos nije jasno:trisio je zaduzen za opis pinova a gpio za promjenu stanja na pinu.Sta ce se desiti ako kazem da je npr. TRISIO=1 za pin 7 (pin je ulazni) , Option_reg bit7 =0 (ukljuceni pull-up otpornici -stanje pina=1),a poslije kazem da je GPIO=0 na pinu 7 - Hoce li ova zadnja naredba imati ikakav uticaj na pin 7 tj. da li ce ga dovest na stanje logicke nule?
Iz datasheet-a
"GPIO is an 6-bit wide, bi-directional port. The corresponding
data direction register is TRISIO. Setting a
TRISIO bit (= 1) will make the corresponding GPIO pin
an input (i.e., put the corresponding output driver in a
Hi-impedance mode). Clearing a TRISIO bit (= 0) will
make the corresponding GPIO pin an output (i.e., put
the contents of the output latch on the selected pin)."
mi se cini da nece ali nisam siguran!
Listao sam malo ovaj forum pa vidim da ljudi uglavnom pricaju o asembleru ili C.Meni licno su malo komplikovani a posto imam neko sturo poznavanje Basica nekako mi sve vuce na njega.Skinem sa neta microBasic i malo razgledam primjere koji su uz program i nesto sam naskrabao.
program proba675_ulaz_izlaz
dim a as byte ---------------------------------------------------pomocna promjenjiva je bajt
trisio=%00000001 ---------------------------------------------gpio 0 pin je ulazni pin ostali izlazni
main:
a=0 ---------------------------------------------------------'a je 0
gpio=%00000000 -------------------------------------------- 'svi gpio su 0 i
loop1:
if button (gpio,0,255,1) then a=%00000010 else goto loop1 --- 'ako je gpio0=1 onda je a=%00000010(bin) inace idi na loop1
end if
gpio=a --------------------------------------------------- 'pin gpio1 je 1
delay_ms(5000) ----------------------------------------- 'zadrska od 5 sec
goto main
end.
ili u asembleru sto ga je mikroBasic napravio u prikacenom fajlu(za mene malo komplikovano)
Ovdje ima jedan paradoks - kazem da je gpio=00000000 a posle se pitam je li gpio=00000001 sto mi opet potvrdjuje(ili ne?)da kad se pin proglasi kao ulazni promjena gpio registra za dati pin ne utice na promjenu stanja pina vec eksterni hardver(log0 ili log1 dovedena na pin)?
Program mi radi u simulatoru - naravno malo izmjenjen (gpio je u nekom momentu 00000001)jer ovakav nikad nece izaci iz if petlje a pitanje je :
Da li ce raditi i prakticno?(mrzi me da pravim)
E sad opet pocetnik - imam AllPIC programator i IC Prog 1.05D program.
Sta treba da bude u "oscilator" polju da bi se koristio interni oscilator 4MHz na kolu 12f675?
Sta treba da bude u poljima i sta znace polja:bandgap,wdt,pwrt,mclr,boden,cp i cpd
Citao sam na
HTTP://free-vz.t-com.hr/Ivica-Novakovic/Index.html tutorijal o programiranju 12f675 (steta sto ih nema vise ovakvih (ili mozda ima?) -sve pohvale)pa pitam jesu li podesavanja kao na slici?(da se ne desi isprogramirao kolo pa spalio tamo neke "fuses" pa se vise ne moze programirat-mozda lupam?)
Toliko ovaj put - CEKAM ODGOVORE,SUGESTIJE i sve ostalo sto ide uz ovo gore!
(kako se prave razmaci? - umjesno onih silnih minusa)