Programm das sich signale merkt

Gast #1969791
Lesenswert?

Hallo,
ich bräuchte mal einen Rat bei einem Projekt wo ich zurzeit ein wenig 
hänge
Aufgabenstellung
Es gibt einen Taster der gedrückt wird damit ein Programm abläuft beim 
drücken des Tasters soll das Laufende Programm nicht abgebrochen werden 
sondern erst bis zum Schluss durchlaufen
Gleichzeitig soll der Microcontroller sich das Signal merken wenn der 
Taster gedrückt wird und wie oft.
Soll wie folgt z.B. aussehen
Taster ist gedrückt
Ledlauflicht von 8Leds startet
Das Programm ist bei Led 4 angekommen und Taster wird noch zweimal 
gedrückt
Somit soll nach Beendigung des Ledlauflichtes das Programm noch 
2xdurchlaufen werden

Hat da jemand vielleicht ein Beispielcode in C?
Gast #1970460
Lesenswert?

Ahh...
jetzt müsst Ihr mir nochmal helfen mit den Flanken ich habe noch nie 
Flanken Programmiert das ist mein Problem :(

Ich sehe mich ehr als besserer Anfänger was das Programmieren angeht

bestendank im vorraus
Gast #1970467
Lesenswert?

LESEN: 
http://www.mikrocontroller.net/articles/Netiquette#Keine_Rundumschlagprobleme_als_Aufgaben_stellen

Einem Bäcker (nichts gegen Bäcker) wird man eine solche Aufgabe wohl 
kaum stellen, ich gehe also davon aus dass du in der Schule / im Studium 
das nötige Wissen gelehrt bekommen hast. Wenn du natürlich nie da warst 
Pech gehabt, setz dich auf deinen Hosenboden und hol es nach. Das Forum 
ist keine 
"Wir-machen-deine-Hausaufgaben-und-du-kassierst-das-Diplom-ohne-einen-Fi 
nger-zu-rühren"-Plattform!!!
#1970527
Lesenswert?

Pinie schrieb:
> jetzt müsst Ihr mir nochmal helfen mit den Flanken ich habe noch nie
> Flanken Programmiert das ist mein Problem :(

Flanken erkennen ist sehr einfach.
Hast du schon tausendmal gemacht

Es geht darum festzustellen, ob sich etwas verändert hat. Dazu merkt man 
sich den jetzigen Zustand. Sieht man dann später noch einmal nach und 
ist der Zustand dann verschieden vom jetzigen Zustand, dann gab es in 
der Zwischenzeit eine Flanke

zb
warten bis eine Flanke kommt
1
  uint8_t vorher;
2

3
  vorher = Pinzustand;
4

5
  while( Pinzustand != vorher )
6
    ;

oder in der Hauptschleife etwas tun, wenn eine Flanke detektiert wird
1
  uint8_t vorher, jetzt;
2

3
  vorher = Pinzustand;
4

5
  while( 1 ) {
6
     ....
7

8
     jetzt = Pinzustand;
9
     if( vorher != jetzt ) {
10

11
        mach was;
12
        vorher = jetzt;
13
     }
14

15
     ...
16
  }

ist immer das gleiche Schema: in einer Variablen einen Zustand merken 
und etwas später vergleichen, ob er noch vorliegt. Wenn nicht, dann gab 
es eine Schaltflanke. Zb
* ein Taster wurde gedrückt
* vorher waren noch keine Schuhe im Vorzimmer -> die Flanke "Frau ist 
nach Hause gekommen" ist eingetreten
* Auto vom Sohnemann stand vorhin noch in der Garage -> die Flanke "der 
ist schon wieder zu seiner Dulcinea gefahren" ist eingetreten
* vor 10 Minuten war dein Dach noch auf dem Haus -> die Flanke 
"Wirbelsturm" ist eingetreten.
* ....

Wie gesagt: Hast du im realen Leben schon tausende male gemacht in 
unzähligen Variationen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren