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 

Tipka za spremembo procedure
Pojdi na stran Prejšnja  1, 2
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Pet Avg 24, 2007 7:50 pm    Naslov sporočila:   Odgovori s citatom

Narisi si diagram poteka - mislim, da tvoj program ne pocne tistega, kar bi ti zelel (non-stop izvaja funkcijo Knightrider, po precej pritiskih pa vsake toliko casa med vse Knightriderje vrine se en klic funkcije nakljucno).
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Sob Avg 25, 2007 8:23 am    Naslov sporočila:  Jaz bi se zadeve lotil drugače Odgovori s citatom

Jaz bi se zadeve lotil drugače.
Kar se tiče vezja nimam pripomb, no morda bi vezal več diod zaporedno, da bi svetile hkrati, bi bilo več svetlobe...
kar se tiče, kako bi se lotil programiranja pa bi naredil sledeče korake:

1. Najprej bi si naredil neke vrste uro, metronom, ki bi mi štela časovne periode. Dolžina časovnih period bi bila vseskozi enaka, in sicer toliko časa, kolikor bi želel da mi sveti časovno najkrajša slika na led diodah. Mislim, da več kot 4 krat na sekundo se slika ne bi menjala, torej bi bila perioda verjetno 200 ali 250 msec. To bi naredil seveda z timerjem, ki ga ima mikroprocesor za to vgrajen.
Recimo tako:


Koda:

const Timer0Reload = 234
config timer0=timer,prescale = 1024
load timer0 , Timer0Reload
on ovf0 Timer0_isr
enable ovf0
start timer0
enable interrupts
'Add your code here

Timer0_ISR:
   load timer0, Timer0Reload
   'Add your ISR code here
  return

'Timer value explination
' The timer is a 8Bit timer, it overflows when the timer reaches 256
' The AVR is running at 12000000Hz, the prescaler is 1024
' Each tick is 8,53333333333333E-02 ms  -  (1 / CPUSpeed in KHz ) * Prescaler
' The timer needs  234 ticks to reach the required time  ( 234 * 8,53333333333333E-02 = 19,968ms)
' The start value for the timer must be set to 22 so that it will overflow at 256 after 234 ticks
' NOTE: The load command does the inversion for you (256-value or 65536-value)



S tem sem dosegel, da dobim časovno prekinitev vsakih 20 msec
Prekinitveno rutino predelam toliko, da mi za vsakih deset prekinitve postavi bit
z imenim Perioda tako:

Koda:
Timer0_ISR:
   load timer0, Timer0Reload
   dim t0i as byte
   dim perioda as bit
   incr toi
   if toi > 10 then
       set perioda
       toi = toi - 10
   endif
return


2. Ko imam torej to narejeno, bi v nekem števcu štel te periode.
Timer interrupt rutina vsakih 200 msec postavi bit, kar uporabim v glavnem programu

Koda:
do
    if perioda = 1 then
       reset perioda
       dim stevecp as byte ' števec period
       incr stevecp
    endif
...
loop



3. sliko ki jo želim prikazati bi verjetno sestavil v posebni tabeli, data in bi posnetke prenašal v port z Lookup ukazi.
Koda:

    portb = looup(stevecp, tabela1)
    if stevecp > max then stevecp = 1

Tabela bi pa izgledala recimo tako:

Koda:
tabela1:
data &B11111111, &B01111111, &B10111111, &B11011111, &B11101111
data &B11110111, &B01111011, &B10111101, &B11011101, &B11101111


Razložil sem samo princip, kako bi se lotil problema. Upam, da dovolj razumljivo
vsak podatek v tabeli pomeni, kako bodo svetile diode (0 pomeni dioda sveti)
tabela je lahko velika kolikor imasš na razpolago flash spomina, seveda če je večja od 256 bajtov mora biti števecp definiran kot word in ne kot bajt.
Različne variante slik bi preklapljal tako, da bi uporabljal različen tabele...

Pa naprej v razmišljanje!

Vilko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dkone
Član
Član



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

PrispevekObjavljeno: Ned Avg 26, 2007 8:59 am    Naslov sporočila:   Odgovori s citatom

Vilko hvala za lepo razložen postopek. bom si zdaj čas uzel in tole preštudirač. Light show je 8 kanalni,ter led diode sem uporabil kot indikator. Še enkrat hvala
_________________
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 -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
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