ATMega 328P zu langsam für Rotary Encoder?

Gast #6672426
Lesenswert?

Hi...

hab mal ne Frage - hatte dazu leider nichts gefunden oder falsch
gesucht..?!
Ich habe seit gestern den Transistortester GM328 (in Schwarz mit SMD
Bauteilen)
und habe festgestellt wenn man den Rotary Encoder sehr sehr schnell
dreht dann startet der tester neu oder kommt in den "Selection" mode.
ist das ein normales Phänomen oder ist möglicherweise was defekt? :(

Danke euch
#6673296
Lesenswert?

Roffeldipoffel schrieb:
> ist das ein normales Phänomen oder ist möglicherweise was defekt? :(

Ja.

Peter D. schrieb:
> Da hat einfach der Entwickler der Firmware es nicht besser gewußt. Ist
> also ein Softwarebug.

Das ist bewusst so gewählt, z.B.:

https://github.com/Mikrocontroller-net/transistortester/blob/1b0b709a1167d1024e73404b5fbcab07ad70fbef/Software/trunk/function_menu.c#L478
1
     if (rotary.incre > FAST_ROTATION) break;    // fast rotation ends voltage measurement

Heiner schrieb:
> Poste den Programmteil des Rotary Encoders, damit man sich ein Urteil
> bilden kann.

https://github.com/Mikrocontroller-net/transistortester/blob/master/Software/trunk/wait_for_key_ms.c
Gast #6673432
Lesenswert?

Martin H. schrieb:
> Das ist bewusst so gewählt, z.B.:

Aha ... verstehe ... das ist bewusst so gewählt dass der Controller
abstürzt bzw. neu startet.

Roffeldipoffel schrieb:
> habe festgestellt wenn man den Rotary Encoder sehr sehr schnell
> dreht dann startet der tester neu

Bei diesem Spaghetti-Code wird sich wohl jeder sofort mit
Begeisterung drauf stürzen eine Verbesserung einzubauen ....
#6673481
Lesenswert?

Martin H. schrieb:
> Das ist bewusst so gewählt, z.B.:
>
> 
https://github.com/Mikrocontroller-net/transistortester/blob/1b0b709a1167d1024e73404b5fbcab07ad70fbef/Software/trunk/function_menu.c#L478

Ach du grüne Neune, was ist DAS denn? Wer soll bei diesem #ifdef 
Dschungel durchsehen?

> 
https://github.com/Mikrocontroller-net/transistortester/blob/master/Software/trunk/wait_for_key_ms.c

Ohje! Geht's nur mir so oder empfinden das auch Andere als maximal 
verwirrend und aufgeblasen? Und dann noch so schöne Dinge drin wie ein 
halbes Dutzend Variationen von Wait . . .
Beitrag #6673495 wurde von einem Moderator gelöscht.
Beitrag #6673499 wurde von einem Moderator gelöscht.
#6673603
Lesenswert?

Falk B. schrieb:
> Ach du grüne Neune, was ist DAS denn? Wer soll bei diesem #ifdef
> Dschungel durchsehen?

'ne gescheite IDE zieht das gesamte Projekt rein und graut je nach 
Setting die nicht definierten Teile aus, bzw. faltet sie weg.
Das ist eine SW, die über zehn Jahre gewachsen ist, mit gefühlt zehn 
verschiedenen Displays läuft und alternativ diverse "User-Interfaces" 
wie eine Taste (kurz vorwärts, lang rückwärts) oder zwei Tasten (vor, 
zurück), oder den Drehencoder mit Taste, etc. hat.
Ich weiß aus eigener Erfahrung mit großen Projekten, dass man ungern den 
Kram vom Vorgänger refactored, insbesondere, wenn man ihn nicht 
durchschaut und daher lieber als Black-Box kapselt, z.B. mit #ifdef.
Wir wollen das Ding ja auch nicht weiterentwickeln, sondern einfach nur 
benutzen - es funktioniert.
Gast #6673611
Lesenswert?

Martin H. schrieb:
> Ich weiß aus eigener Erfahrung mit großen Projekten, dass man
> ungern den Kram vom Vorgänger refactored,

> insbesondere, wenn man ihn nicht durchschaut

Das ist der Punkt. Eine derart verwachsene Struktur offenbart, dass da 
Leute dran gearbeitet haben, die es besser nicht getan hätten.
Beitrag #6673766 wurde von einem Moderator gelöscht.
#6673825
Lesenswert?

Falk B. schrieb:
> Naja. Es gibt im Moment den Verdacht, daß die Kiste beim schnellen
> Drehen einen Absturz erleidet. Wenn das so ist, wäre das ein
> Programmierfehler. Der unübersichtliche Quelltext wäre eine Ursache.

Wie kommst Du auf Absturz? Das ist auch im Handbuch beschrieben, dito im 
Quelltext:
Schnelles Drehen wirkt als 4. Funktion "Escape", zusätzlich zu links, 
rechts und Taste. Und "Escape" beendet halt die Messung, genauso wie ein 
langer Druck auf die Taste.

Dein „Verdacht” beruht auf der Frage eines Nutzers nach einem Tag 
Benutzung, der das Handbuch nicht gelesen hat. Auf Seite 41 steht dort:

„Wenn der Tester mit einem Drehimpulsgeber ausgerüstet ist, kann die 
Menü-Auswahl auch mit einem schnellen Drehen des Encoders während der 
Anzeige einer vorausgegangenen Messung aufgerufen werden. Die 
Menüfunktionen können mit einem langsamen Drehen des Encoders in 
beliebiger Richtung ausgewählt werden. Die ausgewählte Menüfunktion kann 
aber nur mit einem längeren Tastendruck gestartet werden. Innerhalb 
einer Menüfunktion können Parameter durch eine langsame Drehung des 
Encoders ausgewählt werden. Eine schnelle Drehung des Encoders kehrt zur 
Menü-Auswahl zurück.”

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