Sida 2 av 2

Postat: 17 mars 2005, 18:31:24
av matseng
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.

Postat: 17 mars 2005, 18:35:21
av Icecap
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.

Kod: Markera allt

if(input)
  {
  if(Counter < 100) Counter++;
  else Output = 1;
  }
else
  {
  if(Counter > 0) Counter--;
  else Output = 0;
  }
Edit: värdet 100 är vald på måfå.

Postat: 17 mars 2005, 18:43:44
av MadModder
Vilken är teoretiskt den kortast möjliga tiden som mikrobrytaren kommer kunna vara intryckt?

Postat: 17 mars 2005, 18:53:45
av ensten
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'.

Postat: 18 mars 2005, 18:44:56
av MadModder
Eftersom den kortaste tiden är ca 1s så startar du tidtagnningen vid första avlästa tillslaget, och sen helt enkelt strunta i att läsa in något över huvud taget från brytaren nästkommande 0,1s.