mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm das sich signale merkt


Autor: Pinie (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pinie schrieb:
> ich bräuchte mal einen Rat bei einem Projekt wo ich zurzeit ein wenig
> hänge
Dann hast du ja schon was. Zeig das doch (am Besten als Anhnag in einer 
.c Datei), dann kann man darüber diskutieren.

Autor: Pinie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hange indem ich kein anfang finde

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gugst Du Entprellung

Dann machst Du eine Flanke und damit wird eine Variable hoch gezählt.

Bei jedem LED Durchlauf wir wieder eins abgezogen.

Fertig


Axel

Autor: Pinie (Gast)
Datum:

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

Autor: nerv (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LESEN: 
http://www.mikrocontroller.net/articles/Netiquette...

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!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

  vorher = Pinzustand;

  while( Pinzustand != vorher )
    ;

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

  vorher = Pinzustand;

  while( 1 ) {
     ....

     jetzt = Pinzustand;
     if( vorher != jetzt ) {

        mach was;
        vorher = jetzt;
     }

     ...
  }

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

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.