PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Schalterproblem gelöst



Rubi
19.05.2005, 19:53
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

flaxo
20.05.2005, 03:00
hallo Rubi

ich habe deine testroutine ausprobieren wollen, aber leider hat sie irgendwie nicht funktioniert... es kam zwar die überschrift, aber danach nix mehr, egal auf welchen der taster ich drückte. könntest du die sourcen auch hier zum download einstellen, nur so dass ich dahinter sehe? das wär nett...

Rubi
20.05.2005, 05:15
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

_Holger_
20.05.2005, 14:26
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

Jango
20.05.2005, 17:37
Hatte dasselbe Problem (neben kalten Lötstellen, die die Fehlersuche auch nicht vereinfachen, ich noob ;)
Mit Hilfe deines Programmes, bzw einer "61" scheint jetzt auch bei mir alles soweit zu klappen. (Bei "60" gingen die Tasten alleine prima, aber taste 1+6 ergab zusammen dasselbe wie nur Taste 1)


bye,
Jango, den das Roboterfieber und die Mikroelektronik gepackt hat ;D

waste
20.05.2005, 20:34
Bei mir war das gleiche Problem. Ich mußte auch eine "61" programmieren. Die Ursache sind die schlechte Qualität der verwendeten 1%igen Widerstände. Ich habe mal einige nachgemessen, es waren welche mit bis zu 4% Fehler dabei. Das sollte nicht sein. Die verwendeten 5%igen Widerstände sind da sogar noch besser.

Gruß Waste

waste
20.05.2005, 21:31
Ich muß mich korrigieren, R12 hat sogar einen Fehler von 12%. Anstatt 12k hat der nur 10,7k und das soll ein 1%er sein!

Gruß Waste

Rubi
21.05.2005, 09:50
Hallo

Ich muß das auch nocheinmal sagen, solche 1% Wiederstände habe ich
auch noch nie gesehen.
Eventuell tausche ich sie aus,...

Schade irgendwie, das hat der Asuro wrklich nicht verdient.

LG
Rubi