Om jag förstår det rätt så pollar du strömbrytaren 1000 ggr i sekunden i ett timer-interrupt?
I sådana fall kan du hoppa över delayen och istället kolla att du haft samma värde de 5 eller 10 senaste pollningarna och först då utföra det som ska göras när strömbrytaren ändras.
Hjälp med avstudsare.
Jag brukar göra sånt vid att räkna upp eller ner ett värde beroende på input. När värdet sedan når noll eller X är det avkodat färdigt.
Edit: värdet 100 är vald på måfå.
Kod: Markera allt
if(input)
{
if(Counter < 100) Counter++;
else Output = 1;
}
else
{
if(Counter > 0) Counter--;
else Output = 0;
}
Senast redigerad av Icecap 17 mars 2005, 18:48:38, redigerad totalt 1 gång.
Det verkar som om mjukvaran i styrningen till pelletsbrännaren jobbar med tre tider.
30 sekunder - Startsats (Fyller på ordentligt i brännarkoppen)
5 sekunder - Normalladdning under drift
1 sekund - Underhållseldning (Den underhållseldar om det blir allt för tätt mellan startsatserna.) Dvs den släcker inte brännaren om den räknar med att behöva elda igen inom kort. Eftersom min mätmetod är snabbare än den upplösning som tillverkaren använt sig av så blir det i realiteten ungefär så här:
29,470 sekunder
5,037 sekunder
1,040 sekunder
En annan variant som inte är så snygg är att helt enkelt strunta i nollvärdet som genereras vid studsen, den stör ju så att säga inte eftersom den levererar värdet '0'.
30 sekunder - Startsats (Fyller på ordentligt i brännarkoppen)
5 sekunder - Normalladdning under drift
1 sekund - Underhållseldning (Den underhållseldar om det blir allt för tätt mellan startsatserna.) Dvs den släcker inte brännaren om den räknar med att behöva elda igen inom kort. Eftersom min mätmetod är snabbare än den upplösning som tillverkaren använt sig av så blir det i realiteten ungefär så här:
29,470 sekunder
5,037 sekunder
1,040 sekunder
En annan variant som inte är så snygg är att helt enkelt strunta i nollvärdet som genereras vid studsen, den stör ju så att säga inte eftersom den levererar värdet '0'.