MAX7313 Input Auswertung

Gast #6806136
Lesenswert?
• ▲
▼
Hallo,

Für mein kleines Projekt brauche ich an einem ESP8266 viele Eingänge und 
da möchte ich gern mit einem MAX7313 arbeiten, da ich diesen noch auf 
"Lager" habe.

Soweit so gut, ich kann die Ausgänge relativ einfach ansteuern, jedoch 
ist dies hier nicht von Nöten. Ganz im Gegenteil verhält sich das bei 
den Eingängen.
Wenn ich einen Auslesen möchte bekomme ich den Zahlenwert 255 für HIGH 
und 254 für LOW, sofern keine anderen Taster gedrückt sind. Und genau da 
ist mein Problem, wenn ich parallel Taster drücke kann ich keine 
eineindeutige Zuordnung machen, da der ausgegebene Zahlenwert immer 
weiter sinkt. Zum Beispiel wenn 3 Taster gedrückt sind und ich gern den 
Wert von einem Taster auslese, steht dieser nun bei 244.

Ich programmiere das Ganze in Arduino IDE mit der Library: 
https://github.com/eta-systems/MAX7313-Arduino

Hier ist noch das Datenblatt von dem IC: 
https://datasheets.maximintegrated.com/en/ds/MAX7313.pdf

Ich wäre sehr dankbar, wenn jemand ein Lösung für die Auswertung hat!

Gruß
Marcus
Moderator (Firma: Titel) Persönliche Seite #6806153
Lesenswert?
• ▲
▼
Marcus schrieb:
> Wenn ich einen Auslesen möchte bekomme ich den Zahlenwert 255 für HIGH
> und 254 für LOW
Also binäre 11111111 und 11111110.

> Zum Beispiel wenn 3 Taster gedrückt sind und ich gern den
> Wert von einem Taster auslese, steht dieser nun bei 244.
Also binäre 11110100

Was meinst du, welche 3 Taster sind somit betätigt?

Marcus schrieb:
> Hast du dafür eine gute Vorlage?
Mach dich drüber schlau, wie die Darstellung im Dezimalsystem und im 
Binärsystem aussieht. Der Computer hat intern nur die binäre Variante 
mit 0 und 1. Aber rechnet sie dir für die Anzeige auf dein Dezimalsystem 
mit 0,1,..9 um. Du musst also nur zurückrechnen, damit du weißt, was der 
Computer intern sieht.
Dann wird die Auswertung ganz einfach. Mein Tipp: das muss nicht soooo 
schnell gehen, denk ruhig mal ein, zwei Tage drüber nach...

Und dann hängst du noch einen Tag für das Thema Bitmanipulation 
dran.
#6806160
Lesenswert?
• ▲
▼
Marcus schrieb:
> Hast du dafür eine gute Vorlage?

Da gibt es millionen Möglichkeiten.

z.B If-Abfragen mit Bitmasken
1
if(data & 0x01){
2
 // tu etwas wenn Taste 1
3
}
4
if(data & 0x02){
5
 // tu etwas wenn Taste 2
6
}
7
if(data & 0x04){
8
 // tu etwas wenn Taste 3
9
}
10
if(data & 0x08){
11
 // tu etwas wenn Taste 4
12
}
13
....

oder Bitfields
1
typedef struct{
2
    uint8_t in1 :1;
3
    uint8_t in2 :1;
4
    uint8_t in3 :1;
5
    uint8_t in4 :1;
6
    uint8_t in5 :1;
7
    uint8_t in6 :1;
8
    uint8_t in7 :1;
9
    uint8_t in8 :1;
10
}Bitfield;
11

12
Bitfield Input;
13

14
if(Input.in1){
15
 // tu etwas wenn Taste 1
16
}
17
if(Input.in2){
18
 // tu etwas wenn Taste 2
19
}
20
if(Input.in3){
21
 // tu etwas wenn Taste 3
22
}
23
if(Input.in4){
24
 // tu etwas wenn Taste 4
25
}
26
....

Wenn die Bits invertiert sind also eine 0 da steht wenn der Taster 
gedrückt ist dann musst du die Abfragen eben invertieren also sowas wie:
1
if(!Input.in1){
2
 // tu etwas wenn Taste 1
3
}

Antwort schreiben

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.

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.