liegt daran, dass du die LEDs nicht wieder ausschaltest.
Entweder bei jeder if-schleife ein:
else
LED.OUTCLR = ...
oder alles in eine Variable und am ende erst die leds an bzw. aus machen.
liegt daran, dass du die LEDs nicht wieder ausschaltest.
Entweder bei jeder if-schleife ein:
else
LED.OUTCLR = ...
oder alles in eine Variable und am ende erst die leds an bzw. aus machen.
Hi,
durch die Zuweisung sollten doch die nicht gebrauchten LEDs wieder ausgeschaltet werden, oder irre ich mich da?
LED.OUTSET = (1 << 1);
bedeutet doch:
PORTE = &B00000010
Gruß
Chris
Hi,
LED.OUTSET = (1 << 1); - das ist richtig
Die Sache ist die, das die LEDs lassen sich ausschalten, aber nicht wieder leuchten, wenn aber Result wieder steigt.
Gruß
Max
Hi,
hast du den die Möglichkeit, die Daten irgendwie zu visualisieren, also z.b. über UART an den PC senden? Dann könntest du dir Result ausgeben lassen.
Gruß
Chris
Ich bin noch Anfänfer, und so weit nicht gekommen. Aber wenn ich am Ende meiner Schleife LED.OUTCLR = 0b00001111; setze, dann funktioniert es irgendwie. Alle LEDS leuchten und die, die eigentlich leuchten sollten, sind dunkler.
Gruß
Max
Hi,
ok, alles klar!
Wieso schreibst du in der Mehrzahl? Schreibfehler?die, die eigentlich leuchten sollten, sind dunkler.
Dass manche LEDs "dunkler" leuchten, liegt wohl daran, dass sie erst eingeschaltet werden und dann durch dein LED.OUTCLR = 0b00001111; wieder ausgeschaltet.
Gruß
Chris
EDIT:
Sind die LEDs gegen Masse oder gegen VCC geschaltet?
Geändert von Che Guevara (29.01.2013 um 12:32 Uhr)
Mit OUTSET werden nur die bits an den entsprechenden Stellen im OUT Register gesetzt. Sie Werden aber nicht gelöscht, wenn da eine 0 steht!
Mit OUTCLR werden die bits entsprechend gecleared, wenn da eine 1 steht. 0 macht wiederum nichts.
Entweder du greifst auf das LED.OUT zu, beschreibst aber dann den kompletten PORT.
Daten können überschrieben werden, bzw. müssen erst geladen, dann manipuliert und wieder gespeichert werden. (ist in C mit einem "|=" bzw. "&=" anstelle des normalen "=" gelöst)
Hier können Daten verloren gehen, wenn gerade ein Interrupt einspringt und den selben Port manipulieren will. (passiert eher selten, gibt aber lustige Fehler)
Oder aber du arbeitest mit den SET und CLR Registern.
Kommt aber auch immer darauf an, was der PORT machen soll, mal ist das eine dann das andere besser geeignet. Beides hat seine Vor- und Nachteile.
Lesezeichen