Werbung
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:
![]()
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/pmwik...astSensorTestC) aus dem AsuroWiki die Werte aus den einzelnen Tastern ausgelesen. Jedoch finde ich Persönlich diese Werte höchst merkwürdig:
![]()
Ich hoff das mir jemand weiterhelfen kann. Dafür schonmal im vorraus vielen Dank!
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.
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...
Darauf hin habe ich mit hilfe dieser Seite (http://www.asurowiki.de/pmwiki/pmwik...astSensorTestC) aus dem AsuroWiki die Werte aus den einzelnen Tastern ausgelesen. Jedoch finde ich Persönlich diese Werte höchst merkwürdig:
...
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.
Geändert von Valen (16.09.2012 um 12:39 Uhr)
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)
Geändert von HeXPloreR (16.09.2012 um 16:20 Uhr)
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.:
Eine große Falle ist das "if (...)" oder auch "while (...)" und "else" und auch "for (...)"Code:a = 5; Init (); b = 9; if (a == b) StatusLED (GREEN);
Hinter diesen, und einigen anderen Befehlen wird GENAU ein einziger weiterer Befehl erlaubt.
Also:
Das ist ja bestimmt allen bekannt.Code:if (1 == b) StatusLED (GREEN); else StatusLED (RED);
Um nun mehr in das If und Else zu stopen gibt es die {}
Auch dass ist ja bekannt.Code:if (1 == b) { StatusLED (GREEN); TuDies (); TuDas (); } else { StatusLED (RED); TuAnderes (); SeiZufrieden (); }
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:
nichts funktioniert.Code:while (1);
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.
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:
Dann sieht man, dass da nichts passieren SOLL.Code:while (1) ;
Nun aber viel Erfolg mit den Tasten und dem Asuro
Gruß Sternthaler
Lieber Asuro programieren als arbeiten gehen.
Das Bericht von Sternthaler soll eigentlich ein 'Kleber' Thema in das Forum werden.
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
Lesezeichen