Zero213 Posted April 21, 2012 at 03:35 PM Share Posted April 21, 2012 at 03:35 PM Hallo Ich möchte meine Lichtschranken über das IO4 auslesen, was im BrickViewer auch einwandfrei funktioniert. Mit dem Beispielcode bekomme ich auch die entsprechenden Ergebnisse, weiß aber nicht, wie ich sie dem Zustand oder dem richtigen Pin zuordnen soll. Kann mir das vielleicht jemand erklären? Danke schon mal The values are a bit mask that specifies which interrupts occurred and the current value bit mask of the port. For example: (1, 1) means that an interrupt on pin 0 occurred and currently pin 0 is high and pins 1-3 are low. (9, 14) means that an interrupt on pins 0 and 3 occured and currently pin 0 is low and pins 1-3 are high. Ergebnis vom Testlauf: Interrupt by: 0b1 Value: 0b1110 Interrupt by: 0b1 Value: 0b1111 Interrupt by: 0b1 Value: 0b1110 Quote Link to comment Share on other sites More sharing options...
borg Posted April 21, 2012 at 09:27 PM Share Posted April 21, 2012 at 09:27 PM Der Interrupt den du bei der IO4 bekommst besteht aus 2 Werten: Eine Bitmaske die angibt wer den Interrupt ausgelöst hat und eine Bitmaske die den momentanen Wert darstellt. überprüfen kannst du die Werte folgendermaßen (ungetestet): if bitmask & (1 << 0): print "pin 0 high" else: print "pin 0 low" if bitmask & (1 << 1): print "pin 1 high" else: print "pin 1 low" if bitmask & (1 << 2): print "pin 2 high" else: print "pin 2 low" if bitmask & (1 << 3): print "pin 3 high" else: print "pin 3 low" Quote Link to comment Share on other sites More sharing options...
Zero213 Posted April 22, 2012 at 04:23 PM Author Share Posted April 22, 2012 at 04:23 PM so weit so gut, vielen dank. Und schon kommt das zweite Problem. Mit : io.set_interrupt(1 << 0) setze ich den Interrupt für Pin 0 und das Kann ich auch durch 1 oder 3 für meine Lichtschranken ersetzen. Aber wie bekomme ich für alle drei Pinne einen Interrupt? Okay, hab die Zeile jetzt durch: io.set_interrupt(0b1111) ersetzt...scheint so richtig zu sein, oder? Quote Link to comment Share on other sites More sharing options...
borg Posted April 22, 2012 at 06:00 PM Share Posted April 22, 2012 at 06:00 PM 0b1111 ist äquivalent zu (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) http://de.wikipedia.org/wiki/Bitmaske Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.