[ electron2008 @ 27.04.2012. 12:50 ] @
| Sta da uradim, kako, da se odredjena labela izvrsava recimo 15 minuta i da posle tog vremena predje na drugu, recimo: Code: Ugrejano:
LCDOUT $FE,1, "TEMP. DOSTIGNUTA"
LCDOUT $FE,$C0, "Rad"
led=0:led1=1:g=0:P=0:V=0
if b=0 then blokada
pause 10
if t1=0 and t2=0 then gosub Ugrejano
pause 10
if t1=1 and t2=1 then gosub Paljenje
pause 10
if t1=0 and t2=1 then gosub Ugrejano
pause 10
if t1=1 and t2=0 then gosub Blokada
pause 10
goto ugrejano
Ovo treba da mi odradjuje neko vreme i posle tog vremena da predje u novu labelu Ugrejano1, a vreme odbrojavanja timera nemora da se prikazuje na displ. jednostavo da se zadrzi u labeli ugrejano odredjeno vreme koje bih mu ja odredio u kodu i predje u labelu Ugrejano1 |
[ bogdan.kecman @ 27.04.2012. 18:06 ] @
aj probaj da objasnis zasto ti to treba tj sta hoces tacno da postignes posto nisi bio jasan sa postavljanjem pitanja ..
ako hoces da "cekas" 15min, napravis obicnu petlju za cekanje u kojoj dovoljan broj puta pozivas maximalnu vrednost za pause (ne znam u basic-u dal pause ceka u ms ili us ili sec .. koliki je max value .. ali koliko god da je stavis je u petlju i pozoves toliko puta da dobijes 15min)
ako hoces da si siguran da neki deo koda ne traje duze od 15 min onda moras kod da napises drugacije (to ce ti pomoci ovi momci koji rade basic)
ali najverovatnije ti to gledas pogresno ... gledajuci imena tvojih subrutina (ugrejano, paljenje, blokada), ne verujem da treba da resavas stvar sa predefinisanim vremenskim periodom .. zato te pitam sta je cilj posto "ugrejano" treba da traje dok se nesto ne ugreje (citas senzor povratni i grejes dok ne dostigne potrebnu temperaturu), paljenje takodje, imas neki feedback kada je "gotovo" etc etc ..
[ ZAS011 @ 27.04.2012. 20:08 ] @
Ja u nekom od mojih postova vec dadoh
LINK
Implementira sa i u PBP i u Proton+ i u MikroE kompajlerima (bilo kom) i radi k'o sat

[ mnn @ 27.04.2012. 22:24 ] @
TMR1 podesiš na neku pogodnu vrednost.Sakim interaptom povećaš neki brojač koji testiraš u nekoj petlji . Kad se saberu vremena izađeš iz petlje i ideš dalje.
[ ZAS011 @ 27.04.2012. 23:19 ] @
@mnn: TMR0 podesis na 0, preskaler pridodelis WDT, koji, btw, ne koristis, i time efektivno meris 1/4 frekvenciju kristala. Za 4 MHz kristal to ti je 1,000,000 instrukcijskih klok-ova za 1 sec. Procitaj sta pise u linku koji sam postavio.
[ sfredsfred @ 28.04.2012. 20:34 ] @
[ ZAS011 @ 28.04.2012. 21:56 ] @
Code:
Device 12F617
Xtal 4
All_Digital True
PortB_Pullups False
CCP1_Pin GPIO.2
'****************************************************************
'* Config Fuses *
'****************************************************************
Reminders False
Config BOREN_OFF, CP_OFF, FOSC_INTOSCIO, IOSCFS_4MHZ, MCLRE_OFF,_
PWRTE_ON, WDTE_OFF, WRT_OFF
Reminders True
On_Hardware_Interrupt Int
Symbol T0IE = INTCON.5
Symbol T0IF = INTCON.2
Symbol GIE = INTCON.7
Symbol PS0 = OPTION_REG.0
Symbol PS1 = OPTION_REG.1
Symbol PS2 = OPTION_REG.2
Symbol PSA = OPTION_REG.3
Symbol T0CS = OPTION_REG.5
Dim Bres As Dword
Dim Sekunde As Byte
Dim SecFlag As Bit
Clear
GoTo Glavni
'****************************************************************
'* Interapt rutina *
'****************************************************************
Int:
Context Save
Bres = Bres + 256
If Bres >= 1000000 Then
Bres = Bres - 1000000
SecFlag = 1
Inc Sekunde
EndIf
T0IF = 0
Context Restore
'****************************************************************
'* Podprogrami *
'****************************************************************
Inicijalizacija:
GIE = 0 ' Turn off global interrupts
PSA = 1 ' Assign the prescaler to WDT (no prescaler to TMR0)
PS0 = 1 ' Set the prescaler
PS1 = 1 ' to increment TMR0
PS2 = 1 ' every 256th instruction cycle
T0CS = 0 ' Assign TMR0 clock to internal source
TMR0 = 0 ' Clear TMR0 initially
T0IE = 0 ' Enable TMR0 overflow interrupt
Return
'****************************************************************
'* Glavna programska petlja *
'****************************************************************
Glavni:
GoSub Inicijalizacija
.
.
.
.
Deo programa, a prema linku koji sam vec postavio
[ electron2008 @ 29.04.2012. 12:44 ] @
Aj da objasnim, to je deo koda koji sam uradio za neki kontroler gorionika, koji radi ok, samo sto plamen gasi, naravno, kad dostigne zeljenu, tj zadatu temperaturu, kad temp padne gorionik krece sa paljenjem i opet ispocetka... A meni bi trebalo da kad dostigne zeljenu temperaturu predje na drugu labelu gde smanji snagu gorionika, tj ventilator i gorivo, znaci neka manja snaga koja bi trajala tih recimo 15-30 minuta i onda ga ugasi sve dok termostat opet ne pokrene, kako se nebi stalno cimao tj palio i gasio gorionik, a temperatura nebi preterano padala, tj da nebude velika histereza, da sad neobjasnjavam princip...
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.