Hallo liebes Forum, ich habe große Probleme mit den einfachsten Dingen. Ich möchte mit einem Taster eine LED tasten. Wird der Taster das erste mal gedrückt, schaltet die LED ein, wird der Taster das zweite mal gedrückt, schaltet die LED wieder aus. Das schaffe ich ja noch, allerdings brauche ich sehr viele Register. Wenn ich 8 Taster und 8 LED's habe, dann ist der Controller voll! Vielleicht hat jemand einen Tipp für mich? Vielen lieben Dank
Warum brauchst du mehr als ein Register pro Led? Du musst doch nur den aktuellen Zustand der LED speichern. Wenn der Taster gedrückt wird, dann musst du den Zustand nur per XOR umkehren und an den Port ausgeben. Wenn du die Taster nicht per Software entprellen musst, dann reicht sogar ein bit pro Led. Ein Register ist 8 Bit breit und reicht daher für 8 Leds. Wenn die Register trotzdem knapp werden, dann kannst du bei den meisten Controllern immer noch den Ram verwenden.
Ich denke, ich werde die Eingänge noch über Gatter entprellen. Mir scheint, als ob alles andere wirklich unsauber ist. Vielen Dank
Hi Anne,
>dann ist der Controller voll!
welcher ist denn dann voll??
Hat das Teil micht einen Mega8??
Liebe Grüße
Tassilo
Hi Anne, >Mir scheint, als ob alles andere wirklich unsauber ist. Nein, Software ist ganz OK un klabbert ganz gut!! Schaumal hier: http://www.mikrocontroller.net/forum/read-4-20549.html#new Liebe Grüße Tassilo
Hallo Tassilo, vielen Dank für den Link. Das ist mir noch zu hoch ;-). Bin wirklich am verzweifeln. Ich habe schon soviel versucht. Meistens habe ich das Ergebnis, dass ich die LED dann garnichtmehr einschalte, oder aber ständig schalte (das kann ich über UART sehen). Gruß
Könnte an vorhandenem Prellen der Taster liegen. Wenn du den Taster drückst, so schließt sich nicht sofort der Kontakt auf vollen "Durchfluss", sondern der Taster schwingt etwas zwischen AN und AUS her, bis er einen stabilen Zustand bei AN gefunden hat. Genauso beim loslassen. Beispiel: Lässt du einen Ball fallen, bleibt er nicht sofort liegen, sondern hüpft noch ein wenig bevor er wirklich liegen bleibt. Dagegen gibts einige Tricks. Ein paar Software-basierte Sachen (Codesammlung: Bulletproof Entprellung von peter Dannegger) aber auch Hardware basierte Sachen (WIKI "Entprellung") Ansonsten brauchst du nichtmal 8 Register für 8 Taster. Es reicht ein Register für 8 Taster. ein Register ist 8 Bit breit (1byte) 1 Bit kann den Wert 1 oder 0 annehmen. Und jedes dieser Bits kannst du für einen Taster benutzen.
Das habe ich doch versucht. Jeden Zustand in einem BIT merken und mit dem neuen vergleichen. Ergibt sich keine Änderung so soll nichts passieren. Das bekomme ich mittels "EOR" raus, aber es mag trotzdem ned funktionieren. Liebe Grüße
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.