Forum: Mikrocontroller und Digitale Elektronik Softwaremässige Flankenerkennung


von Discjockey M. (djmanuel)


Lesenswert?

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

von Karl M. (Gast)


Lesenswert?

Guten Morgen,

wahrscheinlich wurden diese Links nicht angezeigt:

# https://www.mikrocontroller.net/articles/Entprellung
Siehe *Komfortroutine (C für AVR)* von Peter Dannegger

# Beitrag "Universelle Tastenabfrage"
# Beitrag "Re: Universelle Tastenabfrage"

Aber dein Problem ist nicht eine Flankenerkennung, das ist sehr einfach, 
sondern die Tastenentprellung.

von Discjockey M. (djmanuel)


Lesenswert?

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

von Karl M. (Gast)


Lesenswert?

Leider bist du da auf dem Holzweg !

Discjockey M. schrieb:
> Hardware (Kondensator)

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
Noch kein Account? Hier anmelden.