www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Bascom in SPI (osnove)

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Ned Sep 20, 2009 10:27 am    Naslov sporočila:  Bascom in SPI (osnove) Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
digital
Član
Član



Pridružen-a: Ned 08 Jun 2008 23:11
Prispevkov: 253
Aktiv.: 1.22
Kraj: Slovenska Bistrica

PrispevekObjavljeno: Ned Sep 20, 2009 1:15 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Pon Sep 21, 2009 7:03 am    Naslov sporočila:   Odgovori s citatom

Zanimivo. Hvala za trud Very Happy 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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
logist
Član
Član



Pridružen-a: Pon 25 Jan 2010 1:12
Prispevkov: 126
Aktiv.: 0.67
Kraj: dom(o)vina

PrispevekObjavljeno: Sre Mar 23, 2011 3:51 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Čet Mar 24, 2011 1:27 pm    Naslov sporočila:   Odgovori s citatom

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 Mr. Green

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2116
Aktiv.: 9.51
Kraj: Krško

PrispevekObjavljeno: Tor Jun 26, 2012 2:22 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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