softverski SPI-bascom
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
softverski SPI-bascom
Pozzz
Radim projekt digitalni senzor temperature u bascomu pa bi mi trebala pomoć pošto sam početnik.
Uglavnom dijelovi koje koristim : LM35- senzor temperature, MCP3004 ADC i MCU AT89S52.
Nije mi baš jasna SPI komunikacija između slave(ADC) i mastera(MCU) pa bi bilo super ako neko može objasniti na nekom primjeru , šta šalje/prima slave,a šta master? S obzirom da ovaj ADC ima 10 bitnu rezoluciju kako dobiti samo taj 10 bitni podatak,a ostale bitove iz komunikacije zanemariti?
Radim softverski SPI..
Radim projekt digitalni senzor temperature u bascomu pa bi mi trebala pomoć pošto sam početnik.
Uglavnom dijelovi koje koristim : LM35- senzor temperature, MCP3004 ADC i MCU AT89S52.
Nije mi baš jasna SPI komunikacija između slave(ADC) i mastera(MCU) pa bi bilo super ako neko može objasniti na nekom primjeru , šta šalje/prima slave,a šta master? S obzirom da ovaj ADC ima 10 bitnu rezoluciju kako dobiti samo taj 10 bitni podatak,a ostale bitove iz komunikacije zanemariti?
Radim softverski SPI..
Re: softverski SPI-bascom
Hvala puno na odgovoru
Ima dosta po netu ali jako malo projektata u baskomu i realizirano softverskim SPIom...Meni treba baš realizacija s ovim komponentama
da li se ovako dobiva 10 bit-ova?
iz data sheet od MCP : http://s1.postimg.cc/58nk8amjz/mcp.jpg
*sb=startbit=1
*x=dont care bit
MCU šalje : [0 0 0 0 0 0 0 sb] [s D2 D1 D0 x x x x ] [x x x x x x x x]
MCU prima: x1=[? ? ? ? ? ? ? ?] x2=[ ? ? ? ? ? 0 b9 b8] x3=[b7 b6 b5 b4 b3 b2 b1 b0]
x2 = x2 * 00000011 --> [0 0 0 0 0 0 b9 b8]
shiftleft x2, 8 --> x2= [b9 b8 0000 0000]
rez= x2 + x3 = [b9 b8 b7 b6 b5 b4 b3 b2 b1 b0]
da li je za početak komunikacije dovoljno poslati samo 5 bitova [sb s D2 D1 D0] ili ?
Ima dosta po netu ali jako malo projektata u baskomu i realizirano softverskim SPIom...Meni treba baš realizacija s ovim komponentama
da li se ovako dobiva 10 bit-ova?
iz data sheet od MCP : http://s1.postimg.cc/58nk8amjz/mcp.jpg
*sb=startbit=1
*x=dont care bit
MCU šalje : [0 0 0 0 0 0 0 sb] [s D2 D1 D0 x x x x ] [x x x x x x x x]
MCU prima: x1=[? ? ? ? ? ? ? ?] x2=[ ? ? ? ? ? 0 b9 b8] x3=[b7 b6 b5 b4 b3 b2 b1 b0]
x2 = x2 * 00000011 --> [0 0 0 0 0 0 b9 b8]
shiftleft x2, 8 --> x2= [b9 b8 0000 0000]
rez= x2 + x3 = [b9 b8 b7 b6 b5 b4 b3 b2 b1 b0]
da li je za početak komunikacije dovoljno poslati samo 5 bitova [sb s D2 D1 D0] ili ?
Re: softverski SPI-bascom
Izvinjavam se tek sam se vratio s puta pa nisam mogao odgovoriti ranije. Nisam baš siguran. SPI koristim samo da bih programirao kontroler a tu mi teorija baš i ne treba puno Msm da bi ovdje mogao biti razumljivo objašnjenje za vaš problem. Istina pisano je u C-u ali nije problem, ako ne bude jasno kad uhvatim vremena, "prevest" ćemo u Bascom. Dosta naredbi je identično. Sretno.
Re: softverski SPI-bascom
Hvala ponovo
Na tom linku je riječ od mikrokontrolerima koji imaju hardverski SPI port (SPI registre), dok at89s51 podržava samo ISP (što ste naveli da samo koristite ).
p.s. na što ste mislili pod "nisam siguran" ? Na način kako dobiti 10bit rezuliciju ili to dali je dovoljno poslati samo 5 bitova za početak komunikacije? ili oboje
Na tom linku je riječ od mikrokontrolerima koji imaju hardverski SPI port (SPI registre), dok at89s51 podržava samo ISP (što ste naveli da samo koristite ).
p.s. na što ste mislili pod "nisam siguran" ? Na način kako dobiti 10bit rezuliciju ili to dali je dovoljno poslati samo 5 bitova za početak komunikacije? ili oboje
Re: softverski SPI-bascom
Nisam siguran zato što se teorija učila davno a kako rekoh, uglavnom koristim kontrolere koji imaju hardverski riješen SPI pa se time ne bakćem. Nadam se da će se javiti neko ko je radio sa navedenim MCU i problemem. Možda naleti KIZO ili da ga zamolite preko PM. Znam da je jako dobar po ovom pitanju. Pozz.
Re: softverski SPI-bascom
Evo samo da javim da sam uspio debugirati problem sa SPI komunikacijom i da sada to radi ok, barem u simulatoru..
Sada imam sljedeći problem/pitanje ... Rezultat bi trebao prikazati na multiplexirani 4x7 segment display-e sa zajedničkom katodom.
Radio sam po shemi na slici(http://www.circuitstoday.com/wp-content ... o-8051.png), testirao u simulatoru i to radi ok...
Međutim nije mi jasno kako po ovoj shemi to uopće može raditi u praksi? jer za uključiti pojedini segment potrebno je prema vani izvući struju cca 20 mA,a u datasheetu od MCU 89s51 piše da je source current jako mala pa ispada da je s njom nemoguće pogoniti display na ovaj način..Jesam li nešto pobrkao ili?
Sada imam sljedeći problem/pitanje ... Rezultat bi trebao prikazati na multiplexirani 4x7 segment display-e sa zajedničkom katodom.
Radio sam po shemi na slici(http://www.circuitstoday.com/wp-content ... o-8051.png), testirao u simulatoru i to radi ok...
Međutim nije mi jasno kako po ovoj shemi to uopće može raditi u praksi? jer za uključiti pojedini segment potrebno je prema vani izvući struju cca 20 mA,a u datasheetu od MCU 89s51 piše da je source current jako mala pa ispada da je s njom nemoguće pogoniti display na ovaj način..Jesam li nešto pobrkao ili?
Re: softverski SPI-bascom
Može pomoć za ovo?
http://www.circuitstoday.com/wp-content ... o-8051.png
Ova shema na linku nije izvediva u praksi jer kod mikrokontrolera AT89S51 svaki port može izvući 15mA što mi je nedovoljno za napajanje display-a. Znači trebao bi strujno pojačanje za svaki pin(P1.0 - P1.7)na kojemu je spojen display.. postoji li neki gotovi chip da sad ne stavljam na svaki pin otpornik i pnp tranzistor?
http://www.circuitstoday.com/wp-content ... o-8051.png
Ova shema na linku nije izvediva u praksi jer kod mikrokontrolera AT89S51 svaki port može izvući 15mA što mi je nedovoljno za napajanje display-a. Znači trebao bi strujno pojačanje za svaki pin(P1.0 - P1.7)na kojemu je spojen display.. postoji li neki gotovi chip da sad ne stavljam na svaki pin otpornik i pnp tranzistor?
Re: softverski SPI-bascom
Možeš staviti neki buffer iz ULNxx serije, npr ULN2003. Tada ćeš trebati napraviti preinake, uzeti displej sa zajedničkom anodom i staviti tranzistore kao emiterska slijedila u pozitivnu granu prema zajedničkim anodama. Na softu ne bi trebao ništa mijenjati.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: softverski SPI-bascom
Kukinjos wrote:Možeš staviti neki buffer iz ULNxx serije, npr ULN2003. Tada ćeš trebati napraviti preinake, uzeti displej sa zajedničkom anodom i staviti tranzistore kao emiterska slijedila u pozitivnu granu prema zajedničkim anodama. Na softu ne bi trebao ništa mijenjati.
jel bi to išlo nešto ovako?
http://s8.postimg.cc/v3jie2plh/uln2003.jpg
Malo sam se pogubio s proračunom i datasheetom od uln2003A..
Da li je dovoljna ulazna struja u buffer od 10uA ili je treba pojačati s eksternim otpornicima?
I koje vrijednosti struje i napona dobijem na izlazu buffera za ulazni napon 5V i struju 10uA? treba za proračun otpora ledice