mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik _delay_ms() Funktion einbinden


Autor: Daniel H. (daniel_fh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
Habe ein kleines Problem...
Also, meine Funktion die ich programmiert habe funktioniert soweit
(siehe Code) --> Taster sind entprellt!!!

int main(void)
{
  // PD0 als Eingang
  DDRD &= ~(1<<PD2);
  PORTD |= (1<<PD2);

  //PD5 und PD6 als Ausgang
  DDRD |= (1<<PD5) | (1<<PD6);


  uint8_t zaehle = 0;

  for(;;)
  {
    if( debounce( PIND, PD2 ))
        zaehle++;

   switch( zaehle )
   {
     case 1:  PORTD |= (1<<PD5);
   break;

     case 2:  PORTD &= ~(1<<PD5);
   break;

     case 3:  PORTD |= (1<<PD6);
   break;

     default: state = 0;
              PORTD &= ~(1<<PD6);
   break;

   }
  }
}


Nun wollte ich jetzt als weitere Funktion, dass sich der Ausgang PD5 
bzw. PD6 entweder nach einen erneuten Tastendruck (PD2) ODER nach einer 
bestimmten Zeit auschalten soll und der nächste Zustand abgefragt werden 
kann. Nur weis ich, dass das nicht so einfach geht, da das Programm erst 
einmal bei Verwendung der _delay_ms() Funktion diese abarbeitet. Deshalb 
meine Frage: Wie kann ich so Etwas realisieren, bzw kann ich die 
_delay_ms() Funktion ODER verknüpfen?

Bedanke mich schon einmal im Voraus für euere Antworten. Danke!

Autor: dom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwende einen Timer-Interrupt und setze darin ein Flag, welches du in 
der main-llop abfragst.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, du solltest dir mal ansehen, wie man einen Timer benutzt
und wie man ihn regelmäßig Interrupts generieren lässt.

Edith: dom war paar Sekunden schneller...

Autor: Daniel H. (daniel_fh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay...
Wie viele Taster kann ich abfragen? Bzw. für wie viele Taster diese 
Funktion realisieren, bzw die Interrupts benutzen? Habe 4 Taster.

Autor: Daniel H. (daniel_fh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Will diese Funktion jeweils 4 mal realisieren, sprich jeweils 1 Taster 
steuert wie im Code beschrieben 2 Ausgänge. Und genau das möchte ich 4 
mal machen. Also 4 Taster 8 Ausgänge.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem. Wenn du pünktlich Frühstücken, Mittagessen und Abendessen 
willst, brauchst du auch nur eine Uhr.

Autor: Daniel H. (daniel_fh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Antwort ;)
Danke, dann werd ich mir das mal anschauen.

Danke für eure Antworten

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.