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 

Branje 16-bitnega (TMR1) števca

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
snow
Član
Član



Pridružen-a: Tor 27 Dec 2005 14:02
Prispevkov: 341
Aktiv.: 1.44
Kraj: Ljubljana || Velenje

PrispevekObjavljeno: Pet Mar 03, 2006 9:23 am    Naslov sporočila:  Branje 16-bitnega (TMR1) števca Odgovori s citatom

Zdravo!

Zanima me kako je najbolje/najlepše pravilno prebrati in resetirati 16 bitni števec na PICu?

a) večkratno branje TMR1H oz. TMR1L in nato primerjanje za koliko se je določeni števec povečal. Tudi za reset je verjetno podobno? Da je potrebno večkrat vpisati v registre, da bo zadeva ok.

b) preprosto izklopiti TMR1 (z TMR1ON bitom) in v miru narediti branje in reset števca.

c) ?

Prosim za kakšne komentarje/nasvete glede tega.

Delam pa z pic16f876, programiram pa v C (hi-tech) oziroma asm (mplab).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
snow
Član
Član



Pridružen-a: Tor 27 Dec 2005 14:02
Prispevkov: 341
Aktiv.: 1.44
Kraj: Ljubljana || Velenje

PrispevekObjavljeno: Ned Mar 12, 2006 6:09 pm    Naslov sporočila:   Odgovori s citatom

Sem pol lepo naredil, da se timer izklopi in preberem ven vrednost in napišem notri 0.

S pomočjo tega sem naredil preprost obratomer na ledice za avto.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



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

PrispevekObjavljeno: Ned Mar 12, 2006 6:52 pm    Naslov sporočila:   Odgovori s citatom

Na drugi arhitekturi (a gre konec koncev za podobno stvar) bi to najlazje izvedel brez ustavljanja stevca takole:

Branje: preberes TMR1L, preberes TMR1H, pristejes vrednosti iz TMR1L stevilo ciklov timerja, ki bi pretekli med branjem prve in druge vrednosti TMR1L in ce je carry postavljen (= ce pride vmes do overflowa) povecas vrednost iz TMR1H za 1. Preberes spet TMR1L in za tem ukazom bo shranjena iz TMR1H in TMR1L tocno vrednost timerja v trenutku zadnjega ukaza te sekvence.

Resetiranje: napises 0 v TMR1L, napises 0 v TMR1H in se enkrat 0 v TMR1L; za tem ukazom bo timer tocno 0x0000 (= resetiran).

Oboje je seveda ob predpostavki, da zelis tocno vrednost timerja preden se izvaja koda naprej - ce bi rad kriticni trenutek premaknil (recimo cimbolj nazaj proti zacetku izvajanja ene ali druge sekvence), moras seveda postopek nekoliko prilagoditi.
Nazaj na vrh
Skrit 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 PIC-a v Assembler-ju Č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