electrofux
26.10.2006, 14:28
Hallo,
ich programmiere gerade eine Motorsteuerung mit Bascom und der rn-control at mega32.
Ich habe dabei u.a. eine Lichtschranke an den INT2 angeschlossen, die eine Rückwährtsfahrt durch Auslösen der entsprechenden Interruptroutine beenden soll.
Im Laufe des Programms enablen und disablen wir den Interrupt, je nachdem ob eine Rückwärts oder Vorwährtsfahrt ansteht.
Während der Phase, in der der Int2 disabled ist, arbeitet die Lichtschranke natürlich weiter und gibt Signale an den Port weiter, nur daß diese keine Interruptroutine auslösen (so weit so gut)
Das Problem, ist nur, daß sobald wir den Int2 wieder enablen (Enable Int2), löst er auch sofort aus, obwohl die Lichtschranke gar nichts von sich gibt (passiert auch im stehenden Zustand).
Wird eine Interruptauslösung irgendwo zwischengespeichert obwohl der Interrupt diasabled ist ? Ist das normal und ich muß das irgendwie programmiertechnisch umgehen oder versteh ich da irgendetwas komplett falsch und es liegt nur an einer Einstellung?
Ist das mit dem enablen und disablen des Interrupts überhaupt sinnvoll, oder empfiehlt sich eine solche Vorgehensweise aus irgendwelchen Gründen nicht?
Stecke jetzt echt fest.
Grüße
Markus Fuchs
ich programmiere gerade eine Motorsteuerung mit Bascom und der rn-control at mega32.
Ich habe dabei u.a. eine Lichtschranke an den INT2 angeschlossen, die eine Rückwährtsfahrt durch Auslösen der entsprechenden Interruptroutine beenden soll.
Im Laufe des Programms enablen und disablen wir den Interrupt, je nachdem ob eine Rückwärts oder Vorwährtsfahrt ansteht.
Während der Phase, in der der Int2 disabled ist, arbeitet die Lichtschranke natürlich weiter und gibt Signale an den Port weiter, nur daß diese keine Interruptroutine auslösen (so weit so gut)
Das Problem, ist nur, daß sobald wir den Int2 wieder enablen (Enable Int2), löst er auch sofort aus, obwohl die Lichtschranke gar nichts von sich gibt (passiert auch im stehenden Zustand).
Wird eine Interruptauslösung irgendwo zwischengespeichert obwohl der Interrupt diasabled ist ? Ist das normal und ich muß das irgendwie programmiertechnisch umgehen oder versteh ich da irgendetwas komplett falsch und es liegt nur an einer Einstellung?
Ist das mit dem enablen und disablen des Interrupts überhaupt sinnvoll, oder empfiehlt sich eine solche Vorgehensweise aus irgendwelchen Gründen nicht?
Stecke jetzt echt fest.
Grüße
Markus Fuchs