kontaktprellung

OP #994306
Lesenswert?

hallo!
ich bin dabei ein programm zu schreiben welches über einen interrupt ein 
und ausgeschaltet wird. es lässt sich zwar einschalten aber dann leider 
nicht mehr aus! ich denke dass es an der prellung des tasters liegt, nur 
weiß ich nicht wie ich das um gehen kann.
hier das wesentliche:

IT0=0;
EX0=1;
ES=1;

unsigned char einaus;

void main()
{
while(1)
{
einaus=0;
    while(einaus)
    {
    //programm...
    }
}

}

void ISRstarten ()
{
if(einaus==0)
{einaus=1;}
else
{einaus=0;}

IE0=0;

}

}

ich wäre euch wirklich dankbar wenn ihr mir dabei weiterhelfen 
könntet...
emefge
#994346
Lesenswert?

Was fuer einen Prozessor hast du eigentlich ?
Sieht nach 8051 Serie aus.


Wenn es den so sein muss.

Was du tuen koenntes ist folgendes. Im Interrupt must du testen ob da 
noch weitere Impulse kommen.  Also den Pin abfragen, kurzes Delay , noch 
mal fragen und erst wenn gleich den Interrupt verlassen. So verhinderst 
du die mehrfach triggerung.

Das ist zwar nicht schoen aber probiers mal aus.

Gruss Helmi
#994365
Lesenswert?

Jein.

In etwa so. Also einlesen , warten ,nochmal einlesen und dann auf 
ungleichheit testen. Erst wenn gleich dann hat sich die Taste beruhigt.
(Ich nehme an es ist ein 8051 Derivat)


void ISRstarten ()
{

bit  Flag;

do {
  Flag = INT0;
  for(i=0;i<200;i++);  // Little Delay
} while (Flag != INT0);

if(einaus==0)
{einaus=1;}
else
{einaus=0;}

IE0=0;

}



Gruss Helmi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren