 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Ned Sep 20, 2009 10:27 am Naslov sporočila: Bascom in SPI (osnove) |
|
|
Rad bi izdelal komunikacijo z moduli RFM12B ter atmego8, vendar pa ne vem kako in na kakšen način bi to usposobil. Ker ne vem veliko o serijskem vodilu sem malo pogooglal in nisem našel nobenega uporabnega napotka o enostavi uporabi.
Zadeva je sledeča, priklopil sem modul preko SS, MOSI, MISO, SCK, nIRQ in dCLK. V programu sem nekako konfiguriral SPI (sprogram svet elektronike) to je pa tudi vse.
Koda: |
'**** Konfiguracija SPI vodila ****
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1
'---- SS-Pin -----------
Spi_cs Alias Portb.2
Config Spi_cs = Output
Set Spi_cs
'---- MISO-Pin ---------
Spi_sdo Alias Pinb.4
'inicializacija SPI pin-ov
Spiinit |
Sedaj pa vprašanje. Kako se uporablja SPI, kakšna je strategija in kako se bere in vpisuje podatke v bascomu?
Rad bi se naučil enostavno uporabo SPI vodila in kasneje razvil v bolj kompleksno uporabo (uporaba SD kartice,...) , vendar ne vem niti osnove in zato bi prosil nekoga da malo razloži okoli tega. _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
digital Član

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Ned Sep 20, 2009 1:15 pm Naslov sporočila: |
|
|
Tudi sam se trenutno ukvarjam z SPI. Največ koristnih namigov in razlag dobiš v HELP-u Bascoma, glede na to da programiraš v Bascomu, seveda ni odveč tudi Datasheet. Pred časom sem uspel narediti razširitev portov z shift registri, "filal" pa sem jih preko SPI. Sedaj pa ravno delam podobno zadevo z vhodi in SPI. AVR ima notranji SHIFT register preko katerega z ukazom SPIOUT pošlješ vrednost (byte) na zunanjo napravo (rfm12, shift register, ...) z SPIIN pa prebereš byte iz zunaje naprave. (v helpu pod "search" vpiši SPI, v temi "Using the SPI protocol" pa je podrobneje opisana zadeva (in english of course).
Ker imam malo časa pa nekaj prevodov iz datasheta:
- SPI omogoča hiter sinhroni prenos podatkov med atmega8 in zunanjimi napravami ali med večimi AVR kontrolerji.
- Povezavo master in slave glej na sliki 58 (datasheet str 125).
- Sistem je sestavljen iz dveh pomikalnih registrov, master naprava pa priskrbi takt (zato sinhronski prenos podatkov).
- SPI master naprava (AVR) začne komunikacijo s tem da postavi pin SS slave naprave (preko svojega pina SS seveda), na logično nič. Oba (slave in master) pripravita podatke v shift register, master prične z taktom na pinu SCK in vsebini se izmenjata. Podatki so vedno prenešeni od master naprave do slave preko pina MOSI in iz slave naprave do master naprave preko pina MISO.
- SS pin mora biti programsko definiran kot izhod (če je naprava master). Ko je to narejeno, z vpisom byte v SPI data register, le ta prične z taktom na SCK, in prenese 8 bitov iz master v slave. Ko se prenese cel byte, se takt generator ustavi ( s tem postavi ustrezno zastavico v notranjem registru in povzroči zahtevo po prekinitvi - če so prekinitve omogočene) in tako obdelamo programsko kako naprej. Mimo tega pa lahko master ponovno vpiše byte v Data register in s tem sproži nov cikel prenosa 8 bitov v slave.
lp |
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Pon Sep 21, 2009 7:03 am Naslov sporočila: |
|
|
Zanimivo. Hvala za trud Nisem se niti spomnil pogledati v bascom help... Mislim da so mi sedaj stvari malo bolj razumljive me pa zanima če ima kdo kakšen enostaven sample kode npr. vpis in branje z SD kartice ali kaj podobnega "enostavnega"? _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
logist Član

Pridružen-a: Pon 25 Jan 2010 1:12 Prispevkov: 126 Aktiv.: 0.67 Kraj: dom(o)vina
|
Objavljeno: Sre Mar 23, 2011 3:51 pm Naslov sporočila: |
|
|
Jaz pa imam naslednjo situacijo
Slika je z wikipedije.
zanimam me, kako naredim, da bo Slave (glede na sliko) pošiljal podatke v Master.
Ena izmed rešitev je ta, da so vsi na vodilu Slave. Ter v trenutku, ko želi mcu1 oddajat podatke postane master, sprejemni pa slave.
Druga rešitev je da samo spreminjam stanje SSx pinov iz vhodov/izhodov. Ko master ne oddaja so vsi SSx pini vhodi in jih master ves čas preverja stanje pinov in če se spremeni, bo slave oddajal in bo master sprejemal.
Te dve rešitvi sta izraz tudi mojega razumevanja SPI-ja. _________________ Mihael |
|
Nazaj na vrh |
|
 |
red_mamba Član


Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.27 Kraj: Yogyakarta
|
Objavljeno: Čet Mar 24, 2011 1:27 pm Naslov sporočila: |
|
|
logist je napisal/a: |
Jaz pa imam naslednjo situacijo
Slika je z wikipedije.
zanimam me, kako naredim, da bo Slave (glede na sliko) pošiljal podatke v Master.
Ena izmed rešitev je ta, da so vsi na vodilu Slave. Ter v trenutku, ko želi mcu1 oddajat podatke postane master, sprejemni pa slave.
Druga rešitev je da samo spreminjam stanje SSx pinov iz vhodov/izhodov. Ko master ne oddaja so vsi SSx pini vhodi in jih master ves čas preverja stanje pinov in če se spremeni, bo slave oddajal in bo master sprejemal.
Te dve rešitvi sta izraz tudi mojega razumevanja SPI-ja. |
saj zato pa imaš master in slave enote a ne
branje podatkov poteka tako da ga master zahteva iz slave enote z določenim ukazom, ki ga enota prepozna in nato odgovori s zahtevanim podatkom. _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
 |
dkone Član

Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2116 Aktiv.: 9.51 Kraj: Krško
|
Objavljeno: Tor Jun 26, 2012 2:22 pm Naslov sporočila: |
|
|
Rad bi povezal dva uC ja skupaj v master/slave načinu. Igram se po helpu od Bascoma, pa vendar mi ne rata nič dobiti. Rad bi samo da mi master pošilja eno spremenljivko, slave pa sprejema in prikazuje na UARTu. Ima kdo sample kodo, ki mu dela in se je že ukvarjal s temu ? _________________ Denis |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|