mikrocontroller.net

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


Autor: Tina (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
   }

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.