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

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Tor Nov 10, 2009 1:04 am Naslov sporočila: Bascom, SPI in shift registri |
|
|
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 |
|
 |
digital Član

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Tor Nov 10, 2009 9:59 pm Naslov sporočila: |
|
|
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 |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.67 Kraj: KOPER
|
Objavljeno: Sre Nov 11, 2009 8:41 am Naslov sporočila: |
|
|
Sam uporabljam shiftin ter shiftout komande, kjer lahko reguliraš flanko vklopa in hitrost prenosa. _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
digital Član

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Sre Nov 11, 2009 10:59 pm Naslov sporočila: |
|
|
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 |
|
 |
digital Član

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Sre Nov 11, 2009 11:43 pm Naslov sporočila: |
|
|
hvala in lp. |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.67 Kraj: KOPER
|
Objavljeno: Čet Nov 12, 2009 8:53 am Naslov sporočila: |
|
|
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 |
|
 |
digital Član

Pridružen-a: Ned 08 Jun 2008 23:11 Prispevkov: 253 Aktiv.: 1.22 Kraj: Slovenska Bistrica
|
Objavljeno: Pet Nov 13, 2009 9:32 pm Naslov sporočila: |
|
|
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 |
|
 |
|
|
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
|