Liste der Anhänge anzeigen (Anzahl: 1)
Asuro Schalterproblem gelöst
So habe Heute Zeit gehabt mich mit dem Schalterproblem zu beschäftigen.
Nachdem ich traceroutinen in das Selftest Programm eingebaut hatte, war sofort klar was passiert ist.
Die Schalterfunktion hat für S1 33 zurüchgegeben, dadurch hat Asuro geglaubt S1 plus S6 ist gedrückt.
Warum?
Der richtige Wert wäre 32 für S1 und 1 für S6 , 33 = 32 +1.
Alles klar ?
Nach Änderung der Pollswitchfunktion von
return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));
auf
return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 62.0 + 0.5));
hat es dann gefunzt.
Ich habe mein Traceprogramm angehängt.
Richtige Werte sind:
S1 32
S2 16
S3 8
S4 4
S5 2
S6 1
Außerdem gibt das Programm noch den Wert für i in der Funktion weiter oben.
Also main.hex in den Asuro laden,Taste 1 bis 6 drücken, auf dem Terminalprogramm schauen welche Werte kommen, Taschenrechner nehmen in der obingen Formel das jeweilige i einsetzen und den geeigneten Multiplikator ermitteln.
Hoffe das hilft denjenigen, die Probleme mit den Schaltern haben.
btw.: mit dem Tesprogramm funktionieren die Funktionen die dem jeweiligen Schalter zugeordnet waren nicht mehr richtig.
Das stört aber nicht, weil es darum auch nicht geht, es soll lediglich überprüft werden, was intern passiert.
LG
Rubi
Liste der Anhänge anzeigen (Anzahl: 3)
Hi
Alzo
Hier sind die files die ich geändert habe.
Ich hoffe, ich habe jetzt nichts übersehen,
bin mir aber zu 99% sicher, das das alles war.
LG
Rubi
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
an einen Korrekturwert für den brüchtigten "Wert 63" kann man am einfachsten kommen, indem man sich anzeigen lässt, was der ADC nach den einzelnen Tasterbetätigungen zurückliefert. Ich habe hierzu die asuro.c leicht geändert (a. Anhang). Zusammen mit der mitgelieferten test.c sieht man dann im Terminal den Wert für i (Rückgabe des ADC) und was asuro.c daraus berechnet.
Bei mir (bzw. bei meinem asuro...) liefert der ADC z.B. 671 beim Druck auf Taste 1. Wenn ich dann in der Funktion PollSwitch() 60 statt 63 eintrage, dann liefert die Funktion für alle Tasten die korrekten Werte zurück (32(T1), 16(T2), 8(T3), 4(T4), 2(T5) und 1(T6)). Natürlich könnten man sich einen anderen Algorithmus ausdenken, der aus den Rückgabewerten des ADC die entsprechenden Werte 1-32 berechnet. Ich bezweifele aber, dass das deutlich kürzer wird, als das, was in der originalen asuro.c steht. Wozu also die Mühe...
Gruß
Holger