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 

avr 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: Pet Jun 27, 2008 6:58 pm    Naslov sporočila:  avr in shift registri Odgovori s citatom

Na attiny-ja 2313 bom priklopil shift registre 74hc595 vezane zaporednom in bi jih želel "napolniti" preko SPI-ja. Ker sem začetnik vas prosim za nekaj pomoči. Programiral bom v bascomu. Za začetek bi potreboval vsaj osnovne napotke ali vzorec kode nadaljeval bom sam. Sem obdelal datasheet - USI pa mi ni uspelo spraviti skupaj delujočega programa.
Hvala za pomoč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Borris
Član
Član



Pridružen-a: Sre 18 Jun 2008 23:39
Prispevkov: 15
Aktiv.: 0.07
Kraj: Kutina

PrispevekObjavljeno: Pet Jun 27, 2008 10:16 pm    Naslov sporočila:   Odgovori s citatom

Ja ih punim s ovim programčičom (primjer:sportski semafor)

For Ii = 0 To 5
If Ii = 0 Then : Broj = Gosti_rezultat : End If
If Ii = 1 Then : Broj = Domaci_rezultat : End If
If Ii = 2 Then : Broj = Jed : End If
If Ii = 3 Then : Broj = Des : End If
If Ii = 4 Then : Broj = Sto : End If
If Ii = 5 Then : Broj = Tis : End If

Restore Tabela
For I = 0 To 14
Read Segment
Waitms 1
If I = Broj Then
Izlaz = Segment
Exit For
End If
Next

For I = 0 To 7
Reset Clock
Waitms 1
Broj = Izlaz And &H80
If Broj = 0 Then
Reset Podatak
Waitms 1
Else
Set Podatak
Waitms 1
End If
Set Clock
Waitms 1
Rotate Izlaz , Left
Waitms 1
Reset Clock
Waitms 1
Next I
Next Ii

Set Store
Waitms 1
Reset Store
Waitms 1
End Sub

Tabela:
' Data 0, 1, 2, 3 , 4, 5, 6, 7, 8, 9, 10=blank, 11=:, 12=*, 13=C, 14=-,
' a=1, b=2, c=4, d=8, e=16, f=32, g=64
Data 63 , 3 , 109 , 103 , 83 , 118 , 126 , 35 , 127 , 119 , 0 , 64 , 113 , 60 , 128
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
digital
Član
Član



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

PrispevekObjavljeno: Sre Jul 02, 2008 9:21 pm    Naslov sporočila:   Odgovori s citatom

Boris, hvala ti. Primer mi je bil v veliko pomoč. Ukaze v tvojem programu sem naštudiral še v helpu bascom in naredil svoj osnutek. Delovanje sem preveril na enem registru. Dodal pa sem še PWM - ledice se tukaj počasi prižigajo. Program bom še popravil (kodo, ki se ponavlja bom spravil v podprogram). Za test sem naredil kar leteče luči v končni verziji pa bodo ledice gorele v različnih vzorcih glede na čas ali vhodni signal. Še enkrat hvala.


Koda:
Config Spi = Soft , Din = Pinb.0 , Dout = Portb.1 , Ss = Portb.4 , Clock = Portb.5
'PORTB.6 = RCK - vpis latch v izhodni bufer shift registra
'PORTB.7 = G - omogoči ali "ugasne" izhode shift registra

Config Portb = Output
Config Debounce = 30
Dim Izhod As Byte                                           'izhodni podatek
Dim I As Integer                                            'števec
Dim J As Integer                                            'števec
Dim B As Integer                                            'števec
Dim C As Integer                                            'števec
Dim D As Integer                                            'števec

Do

Spiinit                                                     'Inicializacija SPI-ja

Goto Pwm

Letece:

Reset Portb.7                                               ' omogoči izhode shift registra


Restore Tabela1
For J = 1 To 24
Debounce Pind.0 , 1 , Pwm
Read Izhod
Spiout Izhod , 1
Set Portb.6
Reset Portb.6
Waitms 30
Next J
Waitms 100


Restore Tabela2
For J = 1 To 24
Debounce Pind.0 , 1 , Pwm
Read Izhod
Spiout Izhod , 1
Set Portb.6
Reset Portb.6
Waitms 30
Next J
Waitms 100


Restore Tabela3
For J = 1 To 24
Debounce Pind.0 , 1 , Pwm1
Read Izhod
Spiout Izhod , 1
Set Portb.6
Reset Portb.6
Waitms 30
Next J
Waitms 100

Goto Letece

Pwm:                                                        'prižge vse ledice

Restore Tabela4
Read Izhod
Spiout Izhod , 1
Set Portb.6
Reset Portb.6
Reset Portb.7
Waitms 100

Pwm1:                                                       'leduce ugasnejo in se počasi prižgejo

For C = 1 To 50 Step 2
D = 51 - C
For B = 1 To 100

Debounce Pind.0 , 1 , Naprej
Debounce Pind.1 , 1 , Letece

Reset Portb.7
For I = 1 To C
Next

Set Portb.7
For I = 1 To D
Next

Next B
Next C

Goto Pwm1

Naprej:

Reset Portb.7
Waitms 500
Set Portb.7
Waitms 500

Goto Pwm


Loop

Tabela1:
Data &B10000000 , &B11000000 , &B11100000 , &B01110000 , &B00111000 , &B00011100 , &B00001110 , &B00000111
Data &B00000011 , &B00000001 , &B00000000 , &B00000001 , &B00000011 , &B00000111 , &B00001110 , &B00011100
Data &B00111000 , &B01110000 , &B11100000 , &B11000000 , &B10000000 , &B00000000 , &B00000000 , &B00000000

Tabela2:
Data &B10000000 , &B11000000 , &B00110000 , &B00011000 , &B00001100 , &B00000110 , &B00000011 , &B00000001
Data &B00000000 , &B00000001 , &B00000011 , &B00000110 , &B00001100 , &B00011000 , &B00110000 , &B01100000
Data &B11000000 , &B10000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000       'konec  48 bytov

Tabela3:
Data &B10000000 , &B01000000 , &B00100000 , &B00010000 , &B00001000 , &B00000100 , &B00000010 , &B00000001
Data &B00000000 , &B00000001 , &B00000010 , &B00000100 , &B00001000 , &B00010000 , &B00100000 , &B01000000
Data &B10000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000       'konec  54 bytov

Tabela4:
Data &B11111111 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group