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
So was macht man auch nicht im Interrupt. Stichwort Tastenenprellung Uberigens du brauchst fuer das gleiche Thema keine 2 Threads aufzumachen. Gruss Helmi
sorry, dass mit den 2 threads war nicht beabsichtigt... ich muss es leider mit dem interrupt machen weil es leider so vorgegeben ist. würde es einen unterschied machen wenn ich den interrupt über pegeltriggerung starte anstatt per flanke?!? mfg
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
genaugenommen um einen 89S53. also du meinst jetzt einfach eine kurze verzögerung einbauen? zb eine for-schleife durchlaufen lassen um etwas zeit abzuwarten? mfg
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
>Delays in Interrupts? >Sowas kommt garnicht in die Tüde :P Weiss ich auch. Aber um Rumpelstilzchen 123 mal auf die schnelle zu helfen. Gruss Helmi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.