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 

ATTiny13 Timer

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



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Pet Apr 30, 2010 2:37 am    Naslov sporočila:  ATTiny13 Timer Odgovori s citatom

Ali se lahko timer v ATTiny13 uporabi na tak način in ne za PWM:
Koda:
$regfile = "attiny13.dat"
$crystal = 9600000
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.0 = Output
Config Portb.1 = Input
Config Portb.2 = Input

Config Timer0 = Timer , Prescale = 1
On Ovf0 Tim0_isr                                           
Enable Timer0                                               
Enable Interrupts

...



Tim0_isr:
  If nekaj= 1 Then Disable Timer0
  Incr Clock12
  If Clock12 > 29411 Then
     Clock12 = 0                                           
     ....... 'stori nekaj
  End If
 

Return


End

_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



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

PrispevekObjavljeno: Pet Apr 30, 2010 6:38 am    Naslov sporočila:   Odgovori s citatom

Načeloma ja.

Seveda je potrebno spremenljivko Clock12 primerno definirati, da bo lahko preštela do 29411.
In v glavnem programu mora biti zanka, ki si jo verjetno zamišljaš kot ... izza Enable Interrupts.

Osebno rajši kaka izvajanja (' stori nekj) izvajam v zanki glavnega programa, na osnovi zastavice (flag, bit spremenljivke) ki jo postavi timer prekinitveni podprogram.
Prekinitveni podprogrami naj bodo v principu silno kratki, kar se tiče izvajanja.

Morda tako:

Koda:
$regfile = "attiny13.dat"
$crystal = 9600000
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.0 = Output
Config Portb.1 = Input
Config Portb.2 = Input

Config Timer0 = Timer , Prescale = 1
On Ovf0 Tim0_isr                                           
Enable Timer0                                               
Enable Interrupts


dim timerbit as bit


' neskončna zanka glavnega programa:
do
    if timerbit = 1 then
       reset timerbit
       .. ' stori nekaj
    endif


...
Loop



Tim0_isr:
  '  If nekaj= 1 Then Disable Timer0   zakaj si tuka dal disable?
  Incr Clock12
  If Clock12 > 29411 Then
     Clock12 = 0                                           
     set timerbit
  End If
 

Return


End



Poleg tega rad sam določam, koliko čez koliko časa naj pride sledeča prekinitev z
load timer ukazom

Prijazen pripomoček za postavljanje timer-a je timer.exe, ki ti ga v prilogi pošiljam



timer.zip
 Opis:

Download
 Ime datoteke:  timer.zip
 Velikost datoteke:  10.16 KB
 Downloadano:  13 krat

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



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Pet Apr 30, 2010 10:17 am    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor in program. Bom upošteval tvoj nasvet in premaknil odvečno kodo iz timerja v glavno zanko, potem pa poročam kako in kaj.

...

Dela tako kot mora, hvala.

_________________
Gregor, S53SL
Think out of .
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 -> AVR, LPC900, x51 Č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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group