myavr Eingänge

Gast #170342
Lesenswert?

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
Gast #170343
Lesenswert?

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.
Gast #170347
Lesenswert?

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ß
Gast #170348
Lesenswert?

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.
Gast #170349
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren