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 

Namesto Wait uporabiti Timer?

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



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Ned Jun 07, 2009 3:38 pm    Naslov sporočila:  Namesto Wait uporabiti Timer? Odgovori s citatom

Pozdrav!

Tam kjer je Wait ukaz bi rad uporabil Timer, pa mi nikakor ne uspe.
Timer lepo deluje in daje 1 sekundne intervale.
Probal sem s Start in Stop Timer ukazi, pa timer zaštarta in šteje ko pride do 10 se ustavi, ampak koda se pa izvede v celoti.

Nikjer ne najdem podobnega primera, da bi pogledal potek.


Koda:


Const Timer1reload = 15625
config timer1=timer,prescale = 64
Load Timer1 , Timer1reload
on ovf1 Timer1_isr
enable timer1
Start Timer1
enable interrupts


Do

Porta.1 = 0

Wait Pauza_1                                                'pauza_1 = 10 sekund

Porta.1 = 1

Wait Pauza_2                                                'pauza_2 = 15 sekund

Porta.2 = 0

Wait Pauza_3                                                'pauza_3 = 20 sekund

Loop

Timer1_ISR:

   Load Timer1 , Timer1reload
   Incr Clock12

   If Clock12 > 15624 Then
      Print Clock12
   End If

    If Clock12 > 9 Then
    Clock12 = 0
    Pomozna = 1
    Stop Timer1

    End If

  return




LP,marko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Pon Jun 08, 2009 12:22 pm    Naslov sporočila:   Odgovori s citatom

Ali res nihče ne ne ve kako bi namesto Wait ukaza uporabil Timer?

LP,
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
LEDuser
Član
Član



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

PrispevekObjavljeno: Pon Jun 08, 2009 1:36 pm    Naslov sporočila:   Odgovori s citatom

Tudi sam uporabljam bascom vendar še nisem prišel na idejo da bi namesto wait uporabil timer. Nisi objavil celotne kode zato je malo težko predvidevati kaj so: Pauza_1, Clock12 ,...

Nevem kaj hočeš narediti s timerom? Ali hočeš da bi npr. Timer ko doseže Pauza_1 skočil v podprogram kjer bi čakal 10s in po preteku 10s bi se vrnil na mesto skoka (return)?

Mislim da je bolj zanesljivo z wait 10 kot pa z širjenjem programa z Timer1.

_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Pon Jun 08, 2009 5:00 pm    Naslov sporočila:   Odgovori s citatom

Ja, tako sem mislil, da bi namesto Wait skočil za 10 sek v podprogram in se potem vrnil.
Če gledamo je tukaj skupaj za 45 sekund pauze, ker pa med ukazom Wait ne moreš početi nič drugega, sem tako razmišljal.

V bistvu bi rad, ko se izvaja ta del kode, da bi lahko spreminjal spremenljivke Pauza_1, Pauza_2, to je čas dolžine pauze.

LP,
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
LEDuser
Član
Član



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

PrispevekObjavljeno: Pon Jun 08, 2009 5:29 pm    Naslov sporočila:   Odgovori s citatom

Poskusi tako da zamenjaš glavni program za podprogam. V Glavnem programu se vrtijo nastavitve timerja ko timer doseže določeno vrednost (nastavljeno) pa skoči v podprogram " Porta.1 = 0 . . ."

Stanje porta se ohrani dokler ga ne spremeniš z ukazom, zato ni potrebno čakanje. Če pa imaš kaj bolj zakompliciranega potem pa točno povej kaj želiš.

_________________
Razsvetljujemo od leta 1920!
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.68
Kraj: KOPER

PrispevekObjavljeno: Pon Jun 08, 2009 5:50 pm    Naslov sporočila:   Odgovori s citatom

Tako bo bolje:

Koda:

Dim S_1ms As Word                       ' stevec tisočink sekunde
Dim S_sekund As Byte
Dim Sek_f As Bit                        ' zastavica sekunde
Config Porta = Output
Porta = 0
Ledika Alias Porta.0                    'porta.0 smo imenovali ledika

Const Timer0reload = 1                  'izračunaj novo vrednost za 1 milisekundo za timer 0 glede na frekvenco kristala
Config Timer0 = Timer , Prescale = 64   ' timer1  steje daljcasa glej datasheet
Load Timer0 , Timer0reload
On Ovf0 Timer0_isr
Enable Timer0
Start Timer0
Enable Interrupts



Do
     If Sek_f = 1 Then                  'če se je iztekla sekunda je postavljena zastavica
        Reset Sek_f                     'zbrišeš zastavico
        Ledika = Not Ledika             'vsako sekundo prižge ali ugasne ledico
     End If

Loop
'**************************************************************
Timer0_isr:

   Load Timer0 , Timer0reload
   Incr S_1ms

   If S_1ms = 1000 Then
          S_1ms = 0
          Set Sek_f                     'postavimo zastavico, da je
   End If


Return
 '**************************************************************



Na forumu dobiš dokument Seminar-publikacija.pdf, kjer so člani našega foruma lepo vse razložili .

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Pon Jun 08, 2009 5:53 pm    Naslov sporočila:   Odgovori s citatom

LEDuser poglej,

Vse kar se dogaja je v Do Loop zanki in to se neskončno ponavlja dokler ne ustavim programa.

Da nebi prekinjal programa med delovanjem in bi rad spreminjal čase pauze med izvajanjem Kako to napraviti?

LP,
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
rudiP
Član
Član



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

PrispevekObjavljeno: Pon Jun 08, 2009 6:08 pm    Naslov sporočila:   Odgovori s citatom

Sva istočasno pisala

Koda:


**************************************************************
Timer0_isr:

   Load Timer0 , Timer0reload
   Incr S_1ms

   If S_1ms = druga_vrednost Then
          S_1ms = 0
          Set Sek_f                     'postavimo zastavico, da je
   End If


Return
 '**************************************************************


Ne vem kako si si zamislil menjavo vrednosti timerja, preko rs232 ali stikal na portu ?

v stavku >>If S_1ms = druga_vrednost Then>> imaš v tem primeru spremenljivko druga_vrednost namesto prej 1000. Z spreminjanjem vrednosti te spremenljivke se bo menjal tudi čas v katerem bo utripala led dioda.

Upam, da sta dojela kako se dela z prekinitvami tajmerja ??

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Pon Jun 08, 2009 6:40 pm    Naslov sporočila:   Odgovori s citatom

rudiP

Te vrednosti bom spreminjal s tikami na portu.

Sedaj pa rabim čas, da v miru preštudiram in sprobam tvoje nasvete.

LP,marko
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: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group