Forum: Mikrocontroller und Digitale Elektronik myavr Eingänge


von Anne (Gast)


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

von wfischer (Gast)


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.

von Anne (Gast)


Lesenswert?

Ich denke, ich werde die Eingänge noch über Gatter entprellen. Mir
scheint, als ob alles andere wirklich unsauber ist.

Vielen Dank

von Tassilo (Gast)


Lesenswert?

Hi Anne,

>dann ist der Controller voll!

welcher ist denn dann voll??

Hat das Teil micht einen Mega8??

Liebe Grüße
Tassilo

von Tassilo (Gast)


Lesenswert?

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

von Anne (Gast)


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ß

von Simon Küppers (Gast)


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.

von Anne (Gast)


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

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
Noch kein Account? Hier anmelden.