PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuros Taster funktionieren nicht / geben einen komischen Wert aus.



Jung
15.09.2012, 14:00
Hallo ersteinmal ich bin neu hier und das ist mein erster Beitrag also entschuldigt bitte wenn ich fehler mache / verbessert mich danke.

Ich habe ein Problem mit den Tastern beim Asuro und habe so im Internet nichts gefunden was mir weiter geholfen hat. Wenn ich irgentwas mit den Tastern porgrammiere ist es als ob die Taster garnicht funktionieren. Wobei wenn ich den Selbsttest lade jede Funktion von jedem Taster richtig funktioniert. Zb. habe ich aus der Bedienungsanleitung ein Beispiel abgeschrieben:
23251

Hier sollte beim drücken einer Taste die StatusLED Rot werden, was aber nicht funktioniert.

Darauf hin habe ich mit hilfe dieser Seite (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/TastSensorTestC) aus dem AsuroWiki die Werte aus den einzelnen Tastern ausgelesen. Jedoch finde ich Persönlich diese Werte höchst merkwürdig:
23252

Ich hoff das mir jemand weiterhelfen kann. Dafür schonmal im vorraus vielen Dank!

Che Guevara
15.09.2012, 14:34
Hi,

ich habe zwar keinen Asuro, aber bei deinem ersten Bild, indem du das Programm abgeschrieben hast, ist ein Schreibfehler: In der Else-Bedingung setzt du die LED wieder auf Rot anstatt auf Grün ;)
Bei den anderen Fragen kann ich dir aber leider nicht helfen.

Gruß
Chris

Jung
15.09.2012, 15:30
Hei, Vielen Dank für den Tipp :)
Ich hab den Fehler behoben jedoch war dies leider nicht der Fehler den ich suche.

(abgeändertes Programm)
23257

Valen
16.09.2012, 12:33
...

Ich habe ein Problem mit den Tastern beim Asuro und habe so im Internet nichts gefunden was mir weiter geholfen hat. Wenn ich irgentwas mit den Tastern porgrammiere ist es als ob die Taster garnicht funktionieren. Wobei wenn ich den Selbsttest lade jede Funktion von jedem Taster richtig funktioniert. Zb. habe ich aus der Bedienungsanleitung ein Beispiel abgeschrieben:
23251

Hier sollte beim drücken einer Taste die StatusLED Rot werden, was aber nicht funktioniert.

...Erst mal, ein oft gemachtes Fehler ist vergessen die Dateien zu speichern vordem du es kompilierst. Dann werden deine Änderungen nicht in den Hex Datei gelangen.

Zweites, mit welcher Tastern versuchst du das Programm zu testen? K6 könnte ein Fehl-wert ausgeben.Wo durch den PollSwitch wert nicht größer ist als 0, obschon ein Taster eingedruckt war. Und deshalb nicht Rot leuchtet, sondern Grün bleibt. K1 sollte sicher ein wert ausgeben das größer ist als 0.


..
Darauf hin habe ich mit hilfe dieser Seite (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/TastSensorTestC) aus dem AsuroWiki die Werte aus den einzelnen Tastern ausgelesen. Jedoch finde ich Persönlich diese Werte höchst merkwürdig:

...
Diese Werten sind alle mögliche Kalibrier-werten die in dem PollSwitch Formel eingebaut werden können. Wobei das richtige Bit der Taster in das PollSwitch Antwort auch stimmt. Bei deine werten für K1 werden nur 62, oder 63 das richtige antwort geben. Aber K3 wird nicht die richtige wert geben wen 62 als Kalibration-wert eingebaut wird. Deshalb passt nur 63.

Aber die Frage ist wohl, welcher Formel gehört zu das Programm und diesen Werten. Weil die Formel von die Originalen Lib auf den Asuro-CD, und die in dem AsuroLib 2.7 (oder 2.80rc1) nicht gleich sind. Und das Tasterkalibration Programm macht auch nicht ganz klar wo in welcher Datei man welcher Konstante genau ändern muss. Ich vermute aber das es die Wert MY_SWITCH_VALUE ist in Asurolib_280rc1\lib\inc\myasuro.h.

HeXPloreR
16.09.2012, 12:56
die whilebedingung hat in deinem abgeschrieben beispiel ein (; ) das original nicht....damit bewirkst du das es für die while schleife keine bedingungen gibt...
bei der Init (); <- ist es übrigens der gleiche Fehler...Funktionen werden nicht mit ( ; ) abgeschlossen

Ich finde auch, der OrigianlCode sehr "eng" und damit unleserlich verfasst!

Hoffe dss hilft?

viele Grüße

EDIT: Das ; hinter Init() scheint aber dort hin zu gehören, warum weiß ich jetzt leider auch nicht. Ich bin der Meinung es ist ja auch eine Funktion, daher dürfte nicht, oder liege ich falsch? Kann mir noch denken das sie vielleicht void ist bzw der Grund genau der Fehler ist den ich beim while bemängelte - das wird es sein.
(erste Schreibfehler berichtigt)

Valen
16.09.2012, 13:32
die whilebedingung hat in deinem abgeschrieben beispiel ein (; ) das original nicht....damit bewirkst du das es für die while schelife keine bedingen gibt...
...
](*,) Sollte ich gesehen haben.

Jung
17.09.2012, 17:02
Ja das war es vielen dank für die schnelle Hilfe (auch ein Dank an Valen).

Ja das ";" hinter "while(1)" war der Fehler. :)

Und ja ein ";" muss hinter "Init()" stehen sonst bekomme ich einen Fehler beim kompilieren ... warum kann ich dir gerade auch nicht sagen.

Sternthaler
17.09.2012, 20:27
Ich grüße euch.

Nur so am Rande, aber wichtig: Herzlich willkommen im Forum Jung.

Das mit dem ';' kann ich mal versuchen zu klären:
In C wird grundsätzlich hinter jedes Kommando ein ; angegeben. Damit ist es dann erlaubt, dass Kommandos in einer Zeile stehen und der Compiler das auch trennen kann.

Also z.B.:

a = 5; Init (); b = 9; if (a == b) StatusLED (GREEN);

Eine große Falle ist das "if (...)" oder auch "while (...)" und "else" und auch "for (...)"
Hinter diesen, und einigen anderen Befehlen wird GENAU ein einziger weiterer Befehl erlaubt.
Also:


if (1 == b)
StatusLED (GREEN);
else
StatusLED (RED);


Das ist ja bestimmt allen bekannt.

Um nun mehr in das If und Else zu stopen gibt es die {}


if (1 == b)
{
StatusLED (GREEN);
TuDies ();
TuDas ();
}
else
{
StatusLED (RED);
TuAnderes ();
SeiZufrieden ();
}


Auch dass ist ja bekannt.

Hier ist also der EINE Befehl das { }-Paar.
Nur hinter diesen "Befehl" muss man kein ; setzen. (Darf man aber.)

So erklärt sich auch, warum beim:


while (1);

nichts funktioniert.
Hinter while (..) ist genau ein Befehl nämlich Nix.
Und dann das fürchterlich schmale Semikolon. Und schon ist der Compiler zufrieden, meckert nicht rum und man selbst ist häufig zu blind das zu finden. :confused:
Deshalb schreibe ich grundsätzlich gar nichts hinter diese Befehle mit nur einem erlaubten Folgebefehl.
Bei mir würde ein gewünschtes While ohne Funktion immer so aussehen:

while (1)
;Dann sieht man, dass da nichts passieren SOLL.



Nun aber viel Erfolg mit den Tasten und dem Asuro

Gruß Sternthaler

Valen
17.09.2012, 20:47
Das Bericht von Sternthaler soll eigentlich ein 'Kleber' Thema in das Forum werden.

HeXPloreR
17.09.2012, 20:47
Hallo Sternthaler.

Wirklich gute kurze Erklärung.
Ich versuche auch grade meinen Schreibstil zu finden bzw verbessern. Da das wirklich recht einfach hinzu bekommen ist werde ich gerne mit freundlicher Genehmigung diese Schreibweise adaptieren. Und natürlich macht es manchmal Sinn den Editor in Schrift und Syntax Highlighthing an die eigenen Ansprüche anzupassen...

Viele Grüße

Sternthaler
17.09.2012, 21:30
@Valen
Ich galube ich bin nicht mehr der Jüngste :-k.
Was ist denn nun schon wieder ein "Kleber"?

@HeXPLoreR
Ich erlaube dir unbedingt deine eigene Schreibweise zu finden. Und selbstverständlich darfst du bei mir abschreiben was die Tastatur hergibt! Beschwer dich dann aber nicht wenn ich nur dummes Zeug tippe :D.

Ich wünsche euch eine Gute Nacht
Gruß Sternthaler

HeXPloreR
17.09.2012, 21:37
Glaub nen "Kleber"Thema ist so etwas wie die "bitte zuerst lesenThemen" die IMMER oben im Forum als erstes zu sehen sind egel ob es neuere gibt die darüber liegen müßten... angeklebt eben ;) ...so wie diese Tabellenfunktion bei excel...


EDIT: ach ja, Danke und gute N8 auch.

Valen
17.09.2012, 22:23
Ein Kleber ist ein "Sticky" Thema in Englische Forums. Das wird immer oben in den Thema Ordnung gefunden. Eine normales Thema wird nach gewissen Zeit unten von den Seite verschwinden. Weil neue Berichten an andere Themas zugefügt werden, oder neue Themas geöffnet werden.

Keine ähnnung was die richtige Übersetzung von das Wort ist. Ich habe meine eigene freie Übersetzung gemacht.

Sternthaler
24.09.2012, 19:45
Hallo HeXPLoreR, hallo Valen,

danke für eure Info zum Kleber bzw. Sticky.
Wäre ich nie drauf gekommen.

Gruß Sternthaler