forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Timer1 u 16F628A - sepnutí vstupu po dokončení čítání

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Velda
Anonymní





PříspěvekZaslal: 29 leden 2015, 13:19    Předmět: Timer1 u 16F628A - sepnutí vstupu po dokončení čítání Citovat

Zdravím

Protřeboval by, když časovač dosahne hodnity např:50000 tak aby se sepnul vystup rb0.

kód:




void main(){
 TRISA = 0b00000000;
 TRISB = 0b00000000;
 PORTA = 0b00000000;
 PORTB = 0b00000000;
 /*CMCON = 0b00000111;*/
OPTION_REG = 0b00000001;
 
 while(1){
 
          while(tmr0 < 255);
          tmr0=0;
         
          portb.b0 =!portb.b0 ;
 
 
 }

 
 
 
 


}


tady to mam řešený s časovačem TMR0 ale ten je jen 8-bitový

Ale potřebuju vetší hodnotu než 255 a to by mělo jit u timer1

ale pro ukladání 16 bit čisla jsoud va registry TMR1H a TMR1L


a jak to zapsat aby to vypadalo takto

while(tmr1 < 50000);

Arrow administrator: přejmenováno z "Timer1 u 16f628a"
Návrat nahoru
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 511

PříspěvekZaslal: 29 leden 2015, 15:10    Předmět: Citovat

Můžeš třeba přes přerušení. Časovač TMR1 nastav na (65536-50000) a až přeteče, v přerušení se spustí požadovaná akce. Nebo stejná konfigurace bez přerušení a hlídej až TMR1H změní svuj stav na 0x00 (to je okamžik přetečení).
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 29 leden 2015, 18:14    Předmět: Citovat

Radius napsal:
Nebo stejná konfigurace bez přerušení a hlídej až TMR1H změní svuj stav na 0x00 (to je okamžik přetečení).
a co sledovat az se nastavi T0IF ...
takze while(!(bit.T0IF));

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Velda
Anonymní





PříspěvekZaslal: 29 leden 2015, 18:28    Předmět: Citovat

Radius napsal:
Můžeš třeba přes přerušení. Časovač TMR1 nastav na (65536-50000) a až přeteče, v přerušení se spustí požadovaná akce. Nebo stejná konfigurace bez přerušení a hlídej až TMR1H změní svuj stav na 0x00 (to je okamžik přetečení).


Ale samostatný tmr1 registr nemá ma jen TMR1H a TMR1L a to mam teda hodnotu 50000 zapsat takto TMR1H=1100001 TMR1L=01010000
Návrat nahoru
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 29 leden 2015, 18:34    Předmět: Citovat

ne,TMR1H=11000011 TMR1L=01010000 Wink
_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Velda
Anonymní





PříspěvekZaslal: 29 leden 2015, 19:02    Předmět: Citovat

While ((TMR1H & & TMR1L) == 50000) ;

Da se takto ta podminka taky zapsat?
Návrat nahoru
 

 
Velda
Anonymní





PříspěvekZaslal: 29 leden 2015, 19:11    Předmět: Citovat

Velda napsal:
While ((TMR1H & & TMR1L) == 50000) ;

Da se takto ta podminka taky zapsat?


A nebo tahle
while(TMR1H == 0b11000011 & & TMR1L ==0b01010000);
Návrat nahoru
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 29 leden 2015, 19:14    Předmět: Citovat

a co ti brani si to vyskouset v simulatoru co to dela

tak jinak, jak moc presne potrebuje tu casovou hodnotu?
casovac bezi a bezi , pokud nestihnes casovac skontrolovat kdyz je 50k tak mas smulu ,takze ti nezbyde nez jen opravdu cekat az bude tech 50k, no a to uz tam rovnou muzes dat delay,takze musis >=
takze pokud potrebujes presnost dej to do preruseni
pokud ne. tak si hlidej ten T0IF

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Velda
Anonymní





PříspěvekZaslal: 29 leden 2015, 19:57    Předmět: Citovat

Ja stale evim jak mam kontrolovat tu hodnotu ve dvou registrech.

Pac kdybych tam mel primo registr TMR1 tak nic neresim
Návrat nahoru
 

 
Petr
Profesionál
Profesionál


Založen: 21.2.2008
Příspěvky: 645
Bydliště: Praha západ Hostivice

PříspěvekZaslal: 29 leden 2015, 21:28    Předmět: Citovat

MiloPS3 napsal:
Radius napsal:
Nebo stejná konfigurace bez přerušení a hlídej až TMR1H změní svuj stav na 0x00 (to je okamžik přetečení).
a co sledovat az se nastavi T0IF ...
takze while(!(bit.T0IF));


Možná bude lepší pokud pracuje s Timer1 sledovat bit
PIR1.TMR1IF, sledování bitu T0IF mu bude k ničemu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 511

PříspěvekZaslal: 29 leden 2015, 22:03    Předmět: Citovat

Milo: jasně, ať sleduje příznak přetečení (já už s picama roky nedělám)
Velda: nemusíš sledovat dva registy

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 29 leden 2015, 23:29    Předmět: Citovat

No joo, ani mi to nejak netrklo , zrovna jsem tam mel tmr0...
a dyt je to jedno , chce stejne cist jen ten timer

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Petr
Profesionál
Profesionál


Založen: 21.2.2008
Příspěvky: 645
Bydliště: Praha západ Hostivice

PříspěvekZaslal: 30 leden 2015, 13:08    Předmět: Citovat

Velda napsal:
Ja stale evim jak mam kontrolovat tu hodnotu ve dvou registrech.

Nemusíš kontrolovat dva registry, nadefinuj si ho jako jeden 16bit a máš to...

Já to mám třeba takto.
kód:
int Timer1_16bit @ 0x0E:
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 30 leden 2015, 13:54    Předmět: Citovat

jak se to vezme , TMR1 ma a bude mit stav ulozenej ve 2 registrech, tim ze si ho nadefinujes jako 1 16bit si max ulehcis zapis
kód:
while(TMR1==0xc350)
ale prekladac bude porad porovnavat dva registry, jo a pokud teda bedes definovat ten timer jako 16bit tak 0-0xffff, coz "int" nemusi bejt ....

Petr:dik za upozorneni na tu chybu

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 511

PříspěvekZaslal: 30 leden 2015, 20:02    Předmět: Citovat

No a kdyby zakladatel vlákna investoval nějakej čas a přečet si v datasheetu
http://ww1.microchip.com/downloads/en/DeviceDoc/40044E.pdf
kapitolu 7.3 example 7-1 , tak bude vědět jak bezpečně přečíst 16bit hodnotu ze dvou registrů typu časovač.

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)