Gast
#2732683
Hallo, ich programmiere zur Zeit eine Phasenanschnittsteuerung mit 3 Phasen. Hier habe ich nun ein Problem...wie es mir scheint ein Prozessorfehler (AT89C51CC03). Durch eine Logikschaltung wird bei jedem positiven Phasennulldurchgang ein externer Interrupt INT0 ausgelöst. Die Logikschaltung hat 3 mögliche Zustände (011, 101, 110 auf P1_0 bis P1_2), je nachdem welcher Nulldurchgang erfolgt. In der INT0 Routine frage ich nun den Zustand der Logik ab (101 für Nulldurchgang 1.Phase). Hier tritt das Fehlverhalten auf, ich habe einen Teil des Codes unten angehängt. Ich habe das ganze schon messtechnisch mit dem Oszilloskop erfasst, dies zeigt das der Eingang P1_1 = 0 ist! Die Flanken sind zudem sauber und steil. Dieser Fehler tritt sporadisch auf, manchmal 5 min garnicht, dann aber wieder alle 2-3 Sek. Habt ihr vielleicht eine Erklärung hierfür? void INT0_INT(void) interrupt 0 { EA = 0; L1 = P1_0; L2 = P1_1; L3 = P1_2; ..... hier tritt der Fehler auf L1 = L2 = L3 = 1 !!!!! obwohl laut Oszilloskop eindeutig P1_1 = L2 = 0 ist, durch die Logikschaltung ist jeder Zustand von dem anderen mindestens 6,6ms entfernt (120 Grad) EA = 1; }