Softwaremässige Flankenerkennung

OP #4584540
Guten Tag,
Ich bin relativ neu hier im Forum, und hoffe mal, dass mein Post hier am 
richtigen Ort gelandet ist ;)

Zu meinem Problem:
Ich bin gerade an einem Projekt mit einem ATMega328 (Programmiere mit 
AtmelStudio 6.2) und wollte nun für meine 6 Tasten eine Flankenerkennung 
einbauen, aber dies scheint mir noch nicht so gelungen. Ich habe 
inzwischen schon so einiges Probiert, das Internet durchsucht, aber 
nichts gefunden.

Das Spezielle ist auch noch: Bei betätigung der Tasten tut sich nichts 
(habe testweise eine Software geschrieben, die mir auf einem Display 
anzeigt, welche Taste gedrückt wird und dies für ca 1 Sek auf dem 
Display behält.
Eine Ausnahme macht sich da aber die Taste 2, die einfach ganz normal 
mit der Flankenerkennung funktoniert. Nun frage ich mich, woran der 
Fehler liegt, da laut meinem Logischen vorstellungsvermögen die Software 
funktionieren Sollte.

Hier meine Funktion:
1
unsigned int tastemomvor = 0;
2

3
unsigned int tastenabfrage(void){
4
  unsigned int tastemom = 0;
5
  if(!TASTE1){
6
    tastemom = tastemom | 1 ;
7
  }
8
  if(!TASTE2){
9
    tastemom = tastemom | 2;
10
  }
11
  if(!TASTE3){
12
    tastemom = tastemom | 4;
13
  }
14
  if(!TASTE4){
15
    tastemom = tastemom | 8;
16
  }
17
  if(!TASTE5){
18
    tastemom = tastemom | 16;
19
  }
20
  if(!TASTE6){
21
    tastemom = tastemom | 32;
22
  }
23
  if(tastemomvor == tastemom){
24
    return 0;
25
  }
26
  tastemomvor = tastemom;
27
  return tastemom;
28
}

Ich hoffe mal, dass mir jemand helfen kann, denn sonst muss ich mein 
Projekt schlussendlich ohne Flankenerkennung fertigstellen :/

Vielen Dank, DJManuel
OP #4584595
Guten Tag,

Das Problem mit der Entprellung habe ich schon per Hardware 
(Kondensator) gelöst, es geht mir hier bei dieser Flankenerkennung eher 
darum, dass wenn man eine Taste gedrückt hält, dass die weiteren 
Funktionen, die ich mit den Tasten ausführe nicht 10 mal hintereinander 
ausgeführt werden, sondern nur 1 mal pro Tastendruck.

Vielen Dank für die Links, ich werde mir diese heute mal durchlesen und 
mich wieder melden, ob's geholfen hat ;)

Gruss DJManuel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.