Forum: Compiler & IDEs Problem mit Taster in weiterer Ausführung des Programmes


von Tina (Gast)


Lesenswert?

Hallo Leute,

ich hab nen kleines Problem und bekomm es mal wieder nicht geregelt!
Vor hatte ich es zwei Taster zu realisieren die wie im ersten Beispiel
arbeiten! so nun das Problem was ja logisch is aber ich nicht weis wie
ich es lösen soll, Ist PIND Pin 0 clear kann ich PIND PIN1 nicht
betägigen da er ja noch in der loop schleife sitzt, kann mir jemand
eine lösung für mein Problem geben??

Bin Anfänger also nen bissel Erklärung wäre sehr hilfreich!

Und zwar hab ich folgendes Programmiert

   if ( !(PIND & (1<<0)) )
   {
   loop_until_bit_is_set(WARTEPIN, WARTEBIT);
   tue was sinvolles
   }

   if ( !(PIND & (1<<1)) )
   {
   // tue was sinvolles
   }

von Marcel (Gast)


Lesenswert?

Hallo Tina,
ich selber bin auch kein all zu großer Profi. Was mir aber schwer fällt
ist deine Erklärung!! :o)

Ich weiß nicht so genau was du vor hast. Was meinst du mir erstem
Beispiel??

Generell muss du dir ja vorstellen das der µC alles nacheinander ab
arbeitet. (das scheinst du ja vertanden zu haben) Er hängt in eine
Schleife fest. Somit kann er ja den andern gar nicht einlesen. Das hast
du schon richtig gesehen.

Kannst du das nicht mit vielleicht Variablen machen??

(Sorry wenn der Code nicht richtig ist, ich programmiere mit
CodeVison)

/////////////////////////////////////////////////////
...
int tastenspeicher;
...

if ( !(PIND & (1<<0)) )
   {tastenspeicher = 1;}
if ( !(PIND & (1<<1)) )   (oder mit else)
   {tastenspeicher = 0;}

if (tastenspeicher == 1)
   {tue was sinvolles.. }

   if ( !(PIND & (1<<1)) )
   {
   // tue was sinvolles
   }
////////////////////////////////////////////////////

So, oder so ähnlich!! Man könnte auch anstatt "int" nur ein "Bit"
nehmem. So spart man speicher.
Noch besser wäre es, wenn du das einlesen von Taster mit Interrupts
machen würdest. Aber kommt Zeit kommt Rat (kommt Attentat) :)

Das schafst du schon....

Gruß Marcel

von peter dannegger (Gast)


Lesenswert?

Du must einfach nur Dein Denken umstellen, also:

"wenn Bedingung nicht erfüllt, hänge hier fest"

ändern in:

"wenn Bedingung nicht erfüllt, teste die nächste"


Peter

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.