-
Ach ja stimmt, das hast du schonmal erwähnt.
Aber an der If-Abfrage kann es auch nicht liegen, weil wenn er wirklich immer innerhalb der Abfrage hin und her springt, dann würde es nicht so schnell sein, dass die StatusLED gelb wird.
Denn wenn die erste und einzige Bedingung erfüllt ist, leuchtet die LED für DREI SEKUNDEN rot. Und so lange die LED rot ist arbeitet der Prozessor auch nicht weiter, weil die Sleep-Funktion ja aktiv ist.
Mich wundert es aber auch, dass das Programm anläuft und dann mitten drin das Flackern der StatusLED eintritt ohne, dass sich einer der Motoren dreht. :-k
Gibt es eine Liste mit Fehlercodes vom Asuro, die er eventuell ausgibt?
In der Anleitung habe ich keine gefunden. Eventuell weist gelbes Leuchten der StatusLED ja auf einen Fehler hin.
-
eigentlich gibt es keine fehlercodes vom asuro, er macht nur das was das programm ihm sagt. die fehlercode datei müsstest du schon selbst starten...
ich vermute, dass die batterien so schwach sind (oder so billig oder so leer) dass der prozessor einen BrownOutReset macht (dieser tritt dann uaf, wenn die batteriespannung DEUTLICH unter einen bestimmten wert kommt und der prozessor nicht mehr genug strom bekommt. kann passieren, wenn z.B. die motoren gestartet werden sollen, da diese ja recht viel strom brauchen).
nahc dem reset startet der prozessor neu (die spannung erholt sich, die motoren laufen ja nicht mehr) und startet den bootloader, der dann die (noch nicht ganz wieder auf vollem niveau liegende) batteriespannung misst und als zu niedrig befindet. also: blink,blink....
wäre mal interessant ob der asuro WÄHREND dem blinken über die infrarotschnittstelle VLVLVLVLVL ausgibt. dann wäre es mit sicherheit die spannungsmessung im bootloader.
-
Die Akkus dauern noch 45 min [-( ....
Der Asuro hielt einfach mitten im Zimmer an ohne einen zuvorherigen Tastendruck (was bei dem Asuro ja nichts zu bedeuten hat) und die StatusLED fing an gelb zu blinken.
Zu den Batterien, ich glaube die waren von dem Laden wo es AL(L)DI(e) guten Sachen gibt...
Für meinen alten MP3 Player und für Fernbedienungen reichten die immer allemal..... :-b
-
Ich habe gerade die vollen Akkus in den Asuro und wollte das Programm drauf flashen aber bei jeden mal compilieren erscheint folgender fehler:
C:\ASURO_src\FirstTry/test.c:4: undefined reference to `init'
Dies passiert sogar bei der neusten lib. ich nutze das ganz neue WinAVR vom 1.1.07
-
in deinem programm muss
Init();
und nicht
init();
stehen. groß- und kleinschreibung ist wichtig!
-
Sorry hatte ich total übersehen.
Aber die große Ernüchterung folgt sogleich.....
Der Asuro reagiert immer noch falsch auf die Taster.
Ein Baufehler ist inzwischen ausgeschlossen da ich mehere "Experten" in Sachen löten und Elektrotechnik bereits gefragt (genervt) habe.
Alle fragwürdigen Lötstellen habe ich inzwichen nachgelötet auch wenn diese hinten an den Odometriesensoren waren.
Kann mir vll irgendwer ein Code schreiben indem alle TAster ausser der K1 abgefragt werden (Der Tipp wurde ganz zu Anfang gegeben).
Ich frage deshalb hier so peinlich da ich es nicht nachvollziehen kann (nach der Anleitung) wie man nur einzelne Taster abfragt.
Wenn mir keiner ein Code schreiben will kann ich ja verstehen aber kann mir denn wenigstens jemand eine Anleitung dafür geben wie ich den schreiben muss???? Ich bin ein ziemlicher Anfänger in Sachen C wie man an meinem kleigeschriebenen Init ja vll auch merken kann.
Danke für eure bisherige Hilfe und ich hoffe das ihr mir auch weiterhin helfen könnt.
-
also:
pollswitch gibt einen wert zurück.dieser ist die summe aller gedrückten taster.
der erste taster ist 1
der 2. ist 2
der 3. ist 4
der 4. ist 8
der 5. ist 16
der 6. ist 32
wenn pollswitch also einen wert, sagen wir mal 43 zurückgibt, sind die taster 6,4,2 und 1 gedrückt. (32+8+2+1=43).
es gibt für jede zahl, die pollswitch zurückgibt nur eine mögliche tasterkombination!!
such im forum, es gibt massen von threads dazu.
tipp: wenn du nur abfragen willst ob ein taster gausser dem ersten gedrückt wurde, dann frag doch ab ob pollswitch()>1 ist. der erste taster hat den wert 1, und wird dadurch ignoriert. alle anderen taster haben höhere werte.
-
Aha verstehe leider hat genau das jemand in meinem Programm schon irgendwer vor mir getan....(wie gesagt ich habe es hier im Forum gefunden).
Damit ist auch meine letzte Idee gescheitert.
Ich werde versuchen ein Video zu machen und es hochzuladen damit ihr das Verhalten mal beurteilen könnt vll liegt ja etwas ganz anderes vor als das nachdem wir hier alle Momentan suchen.
Ich hoffe auf weitere Hilfe denn ich möchte gerne mein Weihnachtsgeschenk bald funktionierend wissen um dann eigene Programme zu schreiben.
-
das problem ist eins der bekanntesten des asuros. du kannst mal versuchen den wert zu erhöhen:
PollSwitch()>1 //Der erste taster wird ignoriert
PollSwitch()>2 //Die ersten beiden Taster werden ignoriert
PollSwitch()>3 //die ersten beiden taster werden ignoriert, auch wenn sie gleichzeitig gedrückt wurden
PollSwitch()>4 //Dir ersten 3 Taster werden ignoriert...
und so weiter...
je höher der wert, desto mehr taster werden ignoriert, aber desto fehlerunabhängiger ist die abfrage.
-
mit diesem kleinen Programm hatte ich meine Schalter getestet:
Code:
#include "asuro.h"
int main(void)
{
int n;
Init();
Encoder_Init();
StatusLED(OFF);
SerWrite("\n\rSchalter Test\n\r",17);
while(1)
{
n=PollSwitch();
switch(n) // Ausgabe auf der Konsole
{
case 1 : SerWrite("\n\rK6\n\r",6); break;
case 2 : SerWrite("\n\rK5\n\r",6); break;
case 4 : SerWrite("\n\rK4\n\r",6); break;
case 8 : SerWrite("\n\rK3\n\r",6); break;
case 16 : SerWrite("\n\rK2\n\r",6); break;
case 31 : SerWrite("\n\rK1\n\r",6); break; // mein ASURO!!
}
while(n>10)
{
Msleep(500);
StatusLED(GREEN); // grüne Status LED für die Zehner
n-=10;
Msleep(500);
StatusLED(OFF);
}
while(n>0)
{
Msleep(500);
StatusLED(RED); // rote Status LED für die Einer
n-=1;
Msleep(500);
StatusLED(OFF);
}
}
return 0;
}