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, SPI in shift registri

 
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
digital
Član
Član



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

PrispevekObjavljeno: Tor Nov 10, 2009 1:04 am    Naslov sporočila:  Bascom, SPI in shift registri Odgovori s citatom

Pozdravljeni. Naredil sem vezje za razširitev vhodov mikrokontrolerja. Povezal sem shift registre 74hc165 s katerih bi bral stanje paralelnih vhodov preko SPI. Spodaj sem pripel sliko in del programa v BASCOM-u. Problem se pojavi, ker mi paralelni vhod H katerega bi naj najprej prenesel na serijski izhod QH sploh ne bere. vhod H od drugega registra pa prebere kot vhod A prvega registra. Poenostavljeno, vse skupaj imam za 1 bit prestavljeno, ko z ukazom spiin breberem stanje. SPI imam programsko definiran, ker imam timer2 uporabljen za DCF77, in zgleda, da strojni SPI potrebuje omenjeni timer.
Ali ima kdo izkušnje s podobnimi zadevami. Sumim, da se pojavi en takt, ki prestavi za 1 vsebino shift registrov, preden se zapišejo v spremenljivko v BASCOM-u. Zakaj?.






Koda:

Pl Alias Portb.3
Ce Alias Portb.4

' spi rutina
   Pl = 1 : Ce = 1
   Pl = 0
   Pl = 1 : Ce = 0


  Spiin Izhod(1) , 2

  Locate 1 , 10
  Lcd Izhod(1)

  Locate 1 , 14
  Lcd Izhod(2)
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: Tor Nov 10, 2009 9:59 pm    Naslov sporočila:   Odgovori s citatom

Ugotovil sem vzrok. Namreč serijski izhod je že brez impulza kar stanje MSB bita. Ko pride takt na clk prestavi shift register bit MSB-1 na serijski izhod in moj AVR čita v spremenljivko torej od bita MSB -1 naprej. Za rešitev je varianta, da ne uprabljam SPI funkcije temveč "ročno" preberem stanja, kar pomeni da v programu najprej preberem stanje na serijskem izhodu shift registra, potem generiram 7 impulzov in berem naprej ostalih 7 bitov.

Ali bi šlo tudi kako drugače, namreč tako da bi lahko uporabljal kar spiin ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Sre Nov 11, 2009 8:41 am    Naslov sporočila:   Odgovori s citatom

Sam uporabljam shiftin ter shiftout komande, kjer lahko reguliraš flanko vklopa in hitrost prenosa.
_________________
Lep pozdrav iz Kopra Rudi
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: Sre Nov 11, 2009 10:59 pm    Naslov sporočila:   Odgovori s citatom

Točno to sem potreboval. Vhod sedaj dela z shiftin:

Koda:
Shiftin Miso , Clk_v , Izhod(1) , 0 , 8


Sicer ne morem spraviti v delovanje tudi shiftout,

Koda:
Shiftout Mosi , Clk , Izhod(1) , 1 , 8


pa bom za izhod uporabil kar spiout, ki pa z 74hc595 dela vredu.

hvala in lp.
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: Sre Nov 11, 2009 11:43 pm    Naslov sporočila:   Odgovori s citatom

hvala in lp.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Čet Nov 12, 2009 8:53 am    Naslov sporočila:   Odgovori s citatom

Verjerno rabiš še kak strobe signal.

Koda:

Shiftout Par_data , Clk , Paralel_out1 , 0       ' Serial to paralel
Set P_strobe                     ' Strobe za paralel
Reset P_strobe


_________________
Lep pozdrav iz Kopra Rudi
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: Pet Nov 13, 2009 9:32 pm    Naslov sporočila:   Odgovori s citatom

Točno. Ga imam tudi za SPI.

Koda:

Config Spi = Soft , Din = Pinc.6 , Dout = Portc.5 , Ss = None , Clock = Portc.7 
G Alias Portb.0
Shift_clear Alias Portb.1
Rck Alias Portb.2

Pl Alias Portb.3
Ce Alias Portb.4
Clk Alias Portc.7
Miso Alias Portc.6
Mosi Alias Portc.5
Clk_v Alias Portc.4

Spiout Izhod(1) , 1
   Set Rck : Reset Rck




in pa za shift :
Koda:

Shiftout Mosi , Clk , Izhod(1) , 1 , 8
 Set Rck : Reset Rck


S spi dela, s shift pa ne. Sicer pa bom že malo pomeril, in analiziral s poscope, ko bo čas, zdaj moram zaključit trenutni projekt. Vhodne shift registre bom bral z shift ukazom, stanja na izhodne (74hc595) pa bom pošiljal z SPI.
Gre v bistvu za kontroler za rolete. Ker je rolet 20, to pemeni branje stanja stikala (gor, dol) x 20 = 40 vhodov in enako izhodov. Najprej sem mislil narediti z več AVR-ji, pa sem si premislil. Ker imam že vse zlotano, bom moral ostati pri tej varianti.

Hvala in lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno 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: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group