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!
Verwende einen Timer-Interrupt und setze darin ein Flag, welches du in der main-llop abfragst.
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...
Okay... Wie viele Taster kann ich abfragen? Bzw. für wie viele Taster diese Funktion realisieren, bzw die Interrupts benutzen? Habe 4 Taster.
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.
Kein Problem. Wenn du pünktlich Frühstücken, Mittagessen und Abendessen willst, brauchst du auch nur eine Uhr.
Gute Antwort ;) Danke, dann werd ich mir das mal anschauen. Danke für eure Antworten
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.