skraceni kurs ucenja picbasica
Moderators: pedja089, stojke369, [eDo], trax
-
- Pravo uznapredovao :)
- Posts: 457
- Joined: 22-04-2008, 16:27
- Location: Maribor(SLO) Koprivnica(HR)
- Contact:
Re: skraceni kurs ucenja picbasica
Ako se ne može spremit na desktop, spremi negdje na disk!
Real Radios Glow in the Dark!
Re: skraceni kurs ucenja picbasica
cujte par glupih itanja sa strane 4
u ovoj shemi treba li se staviti kristal na eeprom?
http://www.elektronika.ba/forum/download/file.php?id=49
na ovoj slici
http://www.elektronika.ba/forum/download/file.php?id=50
jel koliko b-ova +1na toliko se mjesta djeli memorija?
i ne kuzim ove pinove sda i scl sto oni rade
a ovi pinovi a0 a1 a2 jesu li to inputi i outputi tog eeproma
a kontroliranje eeproma ( pisanje brisanje,čitanje..) se nemoze obaviti osim sa programatorom (jesam li u pravu?
u ovoj shemi treba li se staviti kristal na eeprom?
http://www.elektronika.ba/forum/download/file.php?id=49
na ovoj slici
http://www.elektronika.ba/forum/download/file.php?id=50
jel koliko b-ova +1na toliko se mjesta djeli memorija?
i ne kuzim ove pinove sda i scl sto oni rade
a ovi pinovi a0 a1 a2 jesu li to inputi i outputi tog eeproma
a kontroliranje eeproma ( pisanje brisanje,čitanje..) se nemoze obaviti osim sa programatorom (jesam li u pravu?
Re: skraceni kurs ucenja picbasica
Ne, a i gdje bi ga ti stavio i zašto?LegoMan4 wrote: u ovoj shemi treba li se staviti kristal na eeprom?
http://www.elektronika.ba/forum/download/file.php?id=49
na ovoj slici
Malo nejasno pitano, ali točno!download/file.php?id=50
jel koliko b-ova +1na toliko se mjesta djeli memorija?
sda - serial data, preko ovog pina prenosiš podatke u i iz memorije sinkronizirane s scl - serial clock.i ne kuzim ove pinove sda i scl sto oni rade
To su inputi ili ulazi u memoriju, ako imaš više memorija paralelno vezanih, onda ovdje namještaš adresu svake pojedinačne memorije.a ovi pinovi a0 a1 a2 jesu li to inputi i outputi tog eeproma
Nisi, jer to može obaviti i bilo koji procesor s software-om za I2C protokol. Evo prvo s googla:a kontroliranje eeproma ( pisanje brisanje,čitanje..) se nemoze obaviti osim sa programatorom (jesam li u pravu?
http://www.robot-electronics.co.uk/acat ... orial.html
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
pa odakle scl-u takt? od pica ili cega?
a pinovi a1 a2 a0 i sda sluze za isto, samo sda moze i citati podatke? a,a-ovi su za vise paralelnih piceva (ili cega god) a sda je samo za 1 pic ( ili cega god) klanjavam se na vremenu i trudu koje ste ulozili u mene
a pinovi a1 a2 a0 i sda sluze za isto, samo sda moze i citati podatke? a,a-ovi su za vise paralelnih piceva (ili cega god) a sda je samo za 1 pic ( ili cega god) klanjavam se na vremenu i trudu koje ste ulozili u mene
Re: skraceni kurs ucenja picbasica
Linijom SCL upravlja procesor, memorija samo "sluša" SCL i SDA i prima naredbe i podatke,ili šalje podatak na SDA kad je SCL = 1. Pinove A0, A1 i A2 spajaš na masu ili Vcc i time binarno određuješ adresu te memorije, što znači da se memorija neće javiti procesoru, ako ovaj preko SDA i SCL ne "prozove" baš tu namještenu adresu. I2C bus radi samo pomoću ove dvije linije (SDA i SCL) i mase, a mogu se spajat više različitih chipova (memorije, ADC, DAC, video procesori, audio proc. i ....), s tim da svaki uređaj u tom lancu mora biti na različitoj adresi (A1, A2, A3).
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
@LegoMan
Evo ti samo dio koda za pisanje u I2C memoriju, pokušaj čitanje sam, za trening.
Evo ti samo dio koda za pisanje u I2C memoriju, pokušaj čitanje sam, za trening.
Code: Select all
'****************************************************************
'* Name : LegoMan4 - I2C upis u memoriju *
'* Author : Kukinjos *
'* Notice : *
'* : *
'* Date : 08.07.2012. *
'* Version : *
'* Notes : *
'* : *
'****************************************************************
' Zelimo upisati u memoriju 24LC65, broj 8, u memorijski blok 2, na adresu 5
' kontrolni byte se sastoji od dva dijela, gornji dio ($a) "proziva" memoriju
' 24Cxx, jer se samo I2C memorije javljaju na taj poziv, donji dio (0) je adresa
' koju si postavio na 24C65, spajanjem pinova A3, A2 i A1 na masu ili Vcc. Ako
' su svi na masi onda je adresa 0, kao i u ovom primjeru. Obrati paznju da se ova
' adresa sastoji od 4 bita a ti koristiš GORNJA 3 bita, zadnji bit je uvijek 0.
' Primjer: zalemio si A2 na masu, A1 na +Vcc i A0 na +Vcc, znaci binarno 011 i zadnji
' bit je uvijek 0, ili binarno = 0110 ili hex. = 6. Tada bi kontrolni byte bio $a6
define i2c_sda porta.0 ' obvezno definiranje SDA prikljucka
DEFINE i2c_scl porta.1 ' obvezno definiranje SCL prikljucka
' naredba SDA SCL kont- memo- adresa podatak kojeg
' za upis u . . rolni rijski u bloku zelimo
' memoriju . . byte blok (02) (05) upisati [8]
' . . . . . . .
' . . . . .... . .
' . . . . . .............. .
' . . . . . . .....................
' . . . . . . .
' v v v v v v v
i2cwrite porta.0, porta.1, $a0, $0205, [8] ' upiši 8 na bl.2 adr. 5
'
pause 10 ' obvezno pričekaj završetak upisa
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
@LegoMan4:
Evo ti traženi program, čisto za učenje. Morao sam na breadboard-u složit "razvojni sustav" za probat kako ovo radi.
Evo ti traženi program, čisto za učenje. Morao sam na breadboard-u složit "razvojni sustav" za probat kako ovo radi.
Code: Select all
'****************************************************************
'* Name : LegoMan4 *
'* Author : Kukinjos *
'* Notice : Spremanje uzoraka blinkanja LED-a u EEPROM *
'* : i izvršavanje istih *
'* Date : 11.07.2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
define osc 4 ' Označava basicu frekv. oscilatora
' kako bi mogao točno odredit timing
' za npr. instrukciju PAUSE
CMCON = $07 ' Radim s chip-om 16F628A, pa moram
' PORTA proglasit za digitalni I/O
' jer je inače prilikom reseta u
' modu analognog komparatora
symbol SDA = PORTA.0 ' dodjelio sam ovim portovima imena
symbol SCL = PORTA.1 ' radi lakšeg snalaženja u programu
SYMBOL LED = PORTB.7 ' isto kao gore navedeno
OUTPUT LED ' port za LED je izlazni
SVIJETLI var byte ' varijabla koliko dugo će LED
' svjetlit x 100 ms
NE_SVIJETLI var byte ' varijabla koliko dugo će LED
' biti ugašen x 100 ms
PONAVLJANJE var byte ' varijabla koliko će se puta
' ponovit SVIJETLI / NESVIJETLI
i var byte ' pomoćne varijable brojača
x var byte ' isto kao gore navedeno
adr var word ' koristim I2C EEPROM 24C64
' a njegova adresa je dužine 2 byte-a
CTRL var byte ' kontrolni byte
CTRL = %10100000 ' za memorije je %10100000 binarno
' ili $A0 hexadecimalno
'****************************************************************
'* UPIS "UZORKA" U MEMORIJU *
'* PRVI UZORAK SE NALAZI NA LOKACIJI 0, DRUGI NA LOKACIJI 3 *
'****************************************************************
Uzorak_1: ' informacije radi, iako nije potreno
adr = 0 ' adresa prvog uzorka = 0
SVIJETLI = 5 ' 0,5 sekundi
NE_SVIJETLI = 3 ' 0,3 sekunde
PONAVLJANJE = 20 ' LED će zablinkat 20 puta
I2cwrite SDA, SCL, CTRL, adr, [SVIJETLI, NE_SVIJETLI, PONAVLJANJE]' upiši u memoriju
pause 10 ' obvezno pričekaj kraj upisa
Uzorak_2: ' informacije radi, iako nije potreno
adr = 3 ' adresa drugog uzorka = 3
SVIJETLI = 10 ' 1 sekunda
NE_SVIJETLI = 10 ' 1 sekunda
PONAVLJANJE = 8 ' LED će zablinkat 8 puta
I2cwrite SDA, SCL, CTRL, adr, [SVIJETLI, NE_SVIJETLI, PONAVLJANJE]' upiši u memoriju
pause 10 ' obvezno pričekaj kraj upisa
'****************************************************************
'* GLAVNA PETLJA *
'****************************************************************
Pocetak: ' početak petlje
adr = 0 ' adresa prvog uzorka = 0
i2cread SDA, SCL, CTRL, adr, [SVIJETLI, NE_SVIJETLI, PONAVLJANJE] ' pročitaj prvi uzorak
gosub pali_gasi ' odradi uzorak
adr = 3 ' adresa drugog uzorka = 3
i2cread SDA, SCL, CTRL, adr, [SVIJETLI, NE_SVIJETLI, PONAVLJANJE] ' pročitaj drugi uzorak
gosub pali_gasi ' odradi uzorak
goto pocetak ' vrati se na početak petlje
'****************************************************************
'* PODPROGRAMI *
'****************************************************************
'****************************************************************
'* PODROGRAM ZA IZVOĐENJE UZORKA *
'* (ovo mi se ne da objašnjavat :))) *
'****************************************************************
pali_gasi:
for i = 1 to PONAVLJANJE
HIGH LED
for x = 1 to SVIJETLI
pause 100
next x
LOW LED
for x = 1 to NE_SVIJETLI
pause 100
next x
next i
return
'****************************************************************
end ' fala Bogu KRAJJJJJJ
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
Zasto dva jednostavna koda razlicito rade na 16F877A radi kako sam zamislio:
a na 16F887 radi bzv tj neradi isto kao na 877A
Code: Select all
symbol led5=PORTB.3
symbol led4=PORTB.0
SYMBOL led3=PORTB.4
symbol LED2=PORTB.5
symbol LED1=PORTB.6
TRISB=$00
proba:
led2=0:led1=1
led3=1
Pause 5000
led3=1
led5=1
pause 5000
led3=1
led5=1
led4=1
pause 10000
portb=0
end
Code: Select all
OSCCON = %01100001
DEFINE OSC 4
ANSEL = %00000000
OPTION_REG.7 = 0
symbol led5=PORTB.3
symbol led4=PORTB.0
SYMBOL led3=PORTB.4
symbol LED2=PORTB.5
symbol LED1=PORTB.6
TRISB=$00
proba:
led2=0:led1=1
led3=1
Pause 5000
led3=1
led5=1
pause 5000
led3=1
led5=1
led4=1
pause 10000
portb=0
end
Re: skraceni kurs ucenja picbasica
Moguce da je problem RMW... Stavi pauze izmedju paljenja led-a.
Isto tako 887 nema istu konfiguraciju kao 877, ima analognih ulaza i po portu b.
Isto tako 887 nema istu konfiguraciju kao 877, ima analognih ulaza i po portu b.
Re: skraceni kurs ucenja picbasica
Jednostavno mi treba da mi se upali led1, pa posle par sekundi led1 i led2 tj led1 nastavlja sa radom, a pali se tj nadodaje led 2, pa posle izvesnog vremena se nadodaje led3, pa recimo led4 (znaci led1,2,3 rade a nadodeje se i led4) sve su upaljene rade npr 5 sec i recimo na kraju ostaje da radi samo led1 i led 4, a ostale se gase, redosled je nebitan ovo sam samo probao na 16f877A radi ok, a na 16F887 upali se led1 drzi do kraja programa sto je ok ali ostale se pale i gase redom, a trebale bi da se nadovezju
Mislis da je do konfig porta b ?
Mislis da je do konfig porta b ?
Re: skraceni kurs ucenja picbasica
Smrdi mi na RWM...
Stavi pauze od 10mS izmedju svake promene stanja na portu b.
Stavi pauze od 10mS izmedju svake promene stanja na portu b.
Re: skraceni kurs ucenja picbasica
Nemam ideju, mozda nesto u podesavanju, jel neko radio sa 16F887?
Re: skraceni kurs ucenja picbasica
Radis s PORTB, a ANSEL kontrolira analogne funkcije PORTA. ANSELH kontrolira PORTB.
Re: skraceni kurs ucenja picbasica
LVP = 0
OPTION_REG.7 = 1
Ovo bi po datasheet-u trebalo biti za oslobodit PORTB za I/O funkciju, probaj, ja mogu tek sutra tijekom dana.
edit:
uh sad vidjeh 887, a ja gledam 877, sorry!
OPTION_REG.7 = 1
Ovo bi po datasheet-u trebalo biti za oslobodit PORTB za I/O funkciju, probaj, ja mogu tek sutra tijekom dana.
edit:
uh sad vidjeh 887, a ja gledam 877, sorry!
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
Code: Select all
ANSELH = %00000000
OPTION_REG.7 = 1
OSCCON = %01100001
TRISB = $00
Ne govoriš o napretku, jesi li uspio, ili si još u problemu?
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: skraceni kurs ucenja picbasica
Nisam nista uspeo, bio sam do kasno na poslu, definitivno je nesto do podesavanja, kod sam radio i probao na 877A, a na kraju sam se predomislio i uzeo 887 i uradio plocicu. Da jos napomenem da cu koristiti RA0-RA3 i RC0-RC3 kao digitalne ulaze, RB0-RB7 kao digitalne izlaze (analogne ne koristim) Na port D bi stavio LCD displ.
Re: skraceni kurs ucenja picbasica
A da probas staviti samo male pauze izmedju menjanja stanja led. Pa da vidis jel pomaze... Glupo mi vec treci put pisem istu stvar...
Re: skraceni kurs ucenja picbasica
Pa jesi li obrisao ANSELH? Kak su ti vezane te ledice, jel imas otpore u seriji? 4MHz-a mi je malo za rmw (osim ako nemas kondenzatore spojene na pinove).
Re: skraceni kurs ucenja picbasica
Oce i led bez otpora da pravi probleme...
Re: skraceni kurs ucenja picbasica
Recimo ovaj kod radi dobro na 16F84A i na 16F877A, a na 16F887 brljavi, ili sam ja nesto zez...
Code: Select all
define OSC 4
TRISB = $00
symbol LED5=PORTB.3
symbol LED4=PORTB.0
SYMBOL LED3=PORTB.4
symbol LED2=PORTB.5
symbol LED1=PORTB.6
TRISB=$00
proba:
PORTB = $FF ' Upali sve LED diode
pause 500
PORTB = $00 ' Ugasi sve LED diode
pause 500
led1=1:led2=1:led3=1 'Upali LED1,LED2,LED3 i zadrzava 2 sec
Pause 2000
led1=1:led2=1:led3=0:led5=1 'Nastavlja sa radom LED1,LED2, gasi se LED3, pali se i zadrzava 2 sec
pause 2000
led1=0:led2=0:led3=1:led5=0 'Gasi se LED1, LED2, pali se LED3, gasi se LED5 i zadrzava 0,5 sec
pause 500
portb=0 'sve se gasi i zadrzava 1 sec
pause 1000
led1=1:led2=1:led3=1:led4=1:led5=1 'sve se pali i zadrzava 1,5 sec
pause 1500
PORTB = $00
pause 500 'Ugasi sve LED diode i zadrzi ugasene 0,5 sec
goto proba
end