Archiv verlassen und diese Seite im Standarddesign anzeigen : Pure Verzweiflung :) ASURO Test Taster
Juten Tag zusammen.
Ich melde mich hier in purer Verzweiflung :)
also beim Selbsttest klappt das nicht so ganz mit den taster. und zwar :
k1 - backled/status/linker motor dreht
k3 - backled/untenled/linker motor dreht
druecke ich jedoch k6 und k1/k3 geschieht das was geschehen soll !
ende problem 1 !
ausserdem klappt anscheinend die linke reflexlichtschranke nicht ! auch keine ahnung warum !
widerstände sind ueberprueft.
kann man die widerstände im eingebauten zustand bestimmen ? wohl eher nicht oder ? hat bei fast allen geklappt. bei denen es nicht richtig geklappt hat, habe ich die farbstreifen zur hilfe genommen.
sorry fuer das wirre geschreibe, es ist schwierig so ein problem zu formulieren.
gruss tinsen
ps.: danke fuer jede antwort
radbruch
19.10.2011, 19:09
Hallo
Willkommen im RN-Forum und Glückwunsch zum asuro.
Gleich vorweg:
http://www.vogon.com/megadodo/graphics/dont_pan.gif (http://www.vogon.com/megadodo/)
Tasterprobleme beim Selbsttest sind zwar ärgerlich, aber wenn die anderen Funktionen, vor allem der Test der seriellen IR-Schnittstelle, funktioniert, ist das nicht weiter schlimm. Häufig sind die Toleranzen der beteiligten Tasterwiderstände zu groß, das kann man aber später mit einer angepassten Kalibrierung korrigieren:
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/TastenKalibrierungC
Die Widerstände sollte man über ihre Farbringe identifizieren können, clever ist natürlich, die Werte schon vor dem Einlöten mit einem Messgerät zu überprüfen.
ausserdem klappt anscheinend die linke reflexlichtschranke nicht ! auch keine ahnung warum !Welche meinst du damit? Unsere magische Zahl ist nicht die 42 sondern die 74, denn auf dieser Seite findet man den Schaltplan des asuro in der Anleitung mit der Bezeichnung der einzelnen Bauteile. Was bedeutet "klappt nicht"?
btw: http://www.forum-3dcenter.org/vbulletin/showthread.php?t=398915
http://www.forum-3dcenter.org/vbulletin/images/smilies/biggrin.gif
Gruß
mic
erstmal danke fuer die schnelle antwort ! mit dem tasterproblem muss ich mich morgen in ruhe befassen...
nur schnell zur erklaerung des odometerfehlers:
beim selbsttest muss die statusled ja flackern wenn man das rad dreht. rechts funktioniert das einwandfrei und links halt garnicht :) habe keine ahnung wo der fehler sein koennte
danke danke fuer die antwort
ausserdem klappt irgendwie die verbindung zum hyperterminal(win7) nicht... beim selbstest kein problem aber die normale verbindung unabhaengig von dem test klappt anscheinend nicht... hatte in nem andren forum auch son testprogramm fuer die taster gefunden! kriege es aber nicht zum laufen ! da vielleicht ein tipp oder eine seite wo man das mal detailiiert nachlesen koennte ?
Abnormal
19.10.2011, 22:03
Asuro-wiki, da findet man eigentlich alles. Die Inbetriebnahme des Asuros gestaltet sich zu beginn schwierig und kostet viele graue Haare. Daas Zeug ist halt "billig" und reizt alle Toleranzen großzügigst aus. Bei uns im Schulungszentrum werden zahlreiche dieser Bots zusammengebaut und nicht einer klappt auf Anhieb. Kann auch fallweise an den Schülern liegen... Nerven nicht wegschmeißen, drannbleiben, suchen und viel drüber lesen - dann wird das alles nach und nach...
radbruch
19.10.2011, 22:14
Hallo
beim selbstest kein problem aber die normale verbindung unabhaengig von dem test klappt anscheinend nichtWas ist eine "normale" Verbindung? Wenn der Echotest Zeichen+1 gut funktioniert sollte auch die Kommunikation funktionieren. (Beim Flashen muss man zuerst das Flashen starten, den Tranceiver über den asuro halten und dann erst den asuro einschalten.)
kriege es aber nicht zum laufenEs kann nicht laufen, weil es keine Beine hat. Ha ha. Du solltest deine Fragen besser formulieren.
Gruß
mic
ja das ist aber auch wirklich schwierig :) das mit dem einschalten habe ich auch herausgefunden, das flashen klappt auch. aber im terminal steht einfach nichts! auch wenn ich auf der tastatur rumklicke :) ich glaube ich mach da einfach etwas falsch. gibt es nicht ein einfaches tutorial wie man mal den kram vernetzt (terminal+asuro+kl. programm) ? ich werde es morgen mal mit der tasterkonfiguration probieren und dann meld ich mich nochmal hier ! danke danke fuer die geduld :)
radbruch
19.10.2011, 23:07
danke fuer die geduldDas war vermutlich erst die Spitze des Eisbergs. ;)
Im Terminal erscheint natürlich nur das was der asuro sendet:
#include "asuro.h"
// Die Funktion main() benötigt keine Parameter und gibt (theoretisch) ein int zurück
int main(void)
{
Init (); // initialisiert den asuro. Darf man nie vergessen!
SerWrite("\n\rHallo\n\r", 9); // \n und \r sind jeweils ein Zeichen
while (1) // Die Hauptschleife wird endlos ausgeführt
{
if (PollSwitch()>0) // Wenn eine gedrückte Taste erkannt wird...
{
StatusLED (RED); // ...soll die StatusLED rot leuchten.
SerWrite("\n\rEine Taste wurde gedrückt\n\r", 29);
}
else // Wenn nicht...
{
StatusLED (GREEN); // ... bleibt sie grün
SerWrite(".", 1);
}
}
return (0); // wird nie erreicht, ohne gibt's aber eine Kompilerwarnung
}(ungetestet)
Gruß
mic
so habe jetzt mal das tasterprogramm geflasht usw ! alles super geklappt ...
bis auf das im hyperterminal mal wieder nichts angezeigt wird ... ich habe keine ahnung warum !
beim selbsttest klappt es ja einwandfrei ! muss ich das programm einfach in zB firsttry einfuegen, make, speichern, flash und dann die jeweiligen taster druecken und gucken was gesendet wird oder ?
-- ASURO Testing --
LED Test
Line Test
Switch Test
Odometrie Test
Motor Test
Serial Test
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTT
radbruch
20.10.2011, 12:12
Hallo
Leider kann ich dir zum Kompilieren keine Tipps geben, weil ich eine andere Entwicklungsumgebung verwende. Ich habe die von mir erzeugte Hexdatei angehängt.
"firsttry einfuegen, make, speichern, flash und dann die jeweiligen taster druecken und gucken was gesendet wird oder?" sollte aber grundsätzlich funktionieren, wenn du nach dem Einfügen des Quellcodes und noch vor dem Kompilieren, den Quellcode speicherst! "Speichern vergessen" treibt selbst geübte Programmierer gelegentlich in den Wahnsinn.
Offensichtlich funktioniert die Verbindung vom asuro zum Terminal einwandfrei. Blinkt der Transceiver, wenn du eine Taste drückst? Kannst du mit einer Digicam erkennen, ob der Transceiver sendet, wenn du eine Taste drückst? Gegenprobe: Sieht die Digicam beim Selbsttest das Blinken der IR-Led auf dem asuro? Kannst du wirklich flashen?
Gruß
mic
also das programm ist aufn asuro ! wenn ich nun einen taster druecke, wird die statusled auf jedenfall rot ^^ das heist ja schonmal was gutes. leider dreht dann auch meine maus am computer am rad wenn ich einen taster druecke ^^
der asuro empfaenger schickt , der ir tranceiver blink zwar die led aber der sender nicht wenn ich mit ner digicam draufgucke... und im terminal wird ja eh nichts angezeigt !?
aber das mit der maus find ich witzig ^^ habe keine funkmaus oder tastatur aber beides spiel verrueckt
AHHHH :) jetzt seh ich was im Terminal ! die rate war auf 9600 beim com eingang gestellt, und im terminal hatte ich es 2400 stehen :) jetzt sagt er was :)
Hallo
...........Ÿ............®......................... ..............................
.................................................. ..............................
.................................................. ..............................
.................................................. ............¿.................
.............>....>..../>.............................?.................... .....
...........¯..................................¾..>..............................
.Ÿ......®......................................... ..............................
..............................................>.................................
........¿......................................... ..............................
.................................................. ..............................
..............................?................... ..............................
................................>.............>.............¿...................
...?....................?......................... ..............................
..>.................................................. ..¿.............n..........
...................¾..¾........................... ..............................
.............................¯.................... ..........................>...
.................................................. ..............................
............../................................................>................
.................................>....................................>.........
.....................®..
Eine Taste wurde gedrückt
Eine Taste wuúde gedrückt
Eine Taste wurde geckt
radbruch
20.10.2011, 12:48
wenn ich nun einen taster druecke, wird die statusled auf jedenfall rotDann kannst du alle anderen Tests vergessen. Da das Programm offensichtlich geflasht wurde ist die Hardware in Ordnung.
Den Zusammenhang mit Maus und Tastatur kann ich auch nicht erkennen. Vielleicht ist es ein Treiberproblem?
Wenn du unbedingt den asuro mit der seriellen Schnittstelle ansprechen willst, mußt du weiter nach der Fehlerursache suchen. Ansonsten stört das eigentlich wenig, denn die wichtigere Funktion der Schnittstelle ist das Senden von Daten vom asuro zum Terminal. Deshalb kannst du das Problem vorläufig ignorieren und vielleicht später mit etwas mehr Erfahrung nochmals genauer untersuchen.
Gruß
mic
P.S.: Prima. Und ich tipp mir hier die Finger wund...
mhh ja erstmal danke :) mit deinem Programm funktioniert es einwandfrei ! aber wenn ich einfach in die test.c das ganze kopiere, dann make, flash und uebertrage klappt wieder nichts ^^ irgendwie komisch alles !
aber danke danke fuer die geduld mit mir ^^
radbruch
20.10.2011, 13:10
Kopieren, SPEICHERN, maken, flashen
dann kommt das dabei raus
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c:5: error: parse error before "MyPollSwitch"
test.c:6: warning: return type defaults to `int'
test.c: In function `MyPollSwitch':
test.c:7: error: `uint16_t' undeclared (first use in this function)
test.c:7: error: (Each undeclared identifier is reported only once
test.c:7: error: for each function it appears in.)
test.c:7: error: parse error before "i"
test.c:19: error: `i' undeclared (first use in this function)
test.c: In function `SwitchTest':
test.c:30: error: `uint8_t' undeclared (first use in this function)
test.c:30: error: parse error before "i"
test.c:31: error: `uint16_t' undeclared (first use in this function)
test.c:33: error: `i' undeclared (first use in this function)
test.c:35: warning: implicit declaration of function `SerPrint'
test.c:36: warning: implicit declaration of function `PrintInt'
test.c:39: error: `adval' undeclared (first use in this function)
test.c:44: error: `j' undeclared (first use in this function)
test.c:46: error: `mval' undeclared (first use in this function)
test.c:53: warning: implicit declaration of function `Msleep'
test.c:67:2: warning: no newline at end of file
make: *** [test.o] Error 1
> Process Exit Code: 2
radbruch
20.10.2011, 13:22
Wir kommen weiter. Versuche mal den Quellcode von mir aus dem obrigen Beitrag.
meine (damen) und herren, herr tinsen darf einen ersten erfolg verbuchen :) wenn ich drueck wirds rot ^^ :)
naja sagen wir teilerfolg :) und im terminal "es wurde eine taste gedrückt"
#include "asuro.h"
int main()
{
Init();
int i=0;
for (i=0;i<100;++i)
{
BackLED (OFF, ON);
Msleep(200);
BackLED (ON, OFF);
Msleep(200);
}
BackLED (OFF, OFF);
while (1); //ansonsten endlos
return 0; //wird nicht erreicht
}
das probiere ich gerade mal ! msleep kriegt er nur nicht hin ! mach ich nur sleep gehen beide leds an und bleiben an
ich bin kurz vorm verstaendniss :D
radbruch
20.10.2011, 14:58
So vielleicht?
#include "asuro.h"
int main(void)
{
void Msleep(unsigned int dauer) // dauer in millisekunden
{
if(dauer) while(dauer--) Sleep(72); // Sleep(72) dauert 1 ms
}
int i=0;
Init();
for (i=0;i<100;++i)
{
BackLED (OFF, ON);
Msleep(200);
BackLED (ON, OFF);
Msleep(200);
}
BackLED (OFF, OFF);
while(1) {StatusLED(RED); Msleep(20); StatusLED(OFF); Msleep(200);} //ansonsten endlos
return 0; //wird nicht erreicht
}(ungetestet)
Spannenderweise kann ich das auch mit meiner v2.3er-Version fehler- und warnungsfrei kompilieren, weil die neue Funktion Msleep() lokal in main() ist? Wieder was gelernt.
Gruß
mic
ja so lüppt das ! versteh den void krams nicht ... sonst alles ok !
int main(void)
{
void Msleep(unsigned int dauer) // dauer in millisekunden
{
if(dauer) while(dauer--) Sleep(72); // Sleep(72) dauert 1 ms
}
radbruch
20.10.2011, 18:07
Das wird schon.
"void" ist nur ein Platzhalter für "nichts". Die Funktion main() benötigt keinen Parameter (nichts zwischen den Klammern) und liefert einen "int"-Wert an die aufrufende Funktion zurück. Darum das olbigatorische return(0); am Ende jedes Programms. Da aber bei den Microkontrollern kein übergeordnedes Betriebssystem existiert endet ein return irgendwo im Nirwana des Kontrollerspeichers.
Die neu definierte Funktion Msleep() gibt keinen Wert zurück, deshab das "nichts" vor der Definition. Allerdings benötigt sie einen vorzeichenlosen 16-Bit-Parameter "unsigned int" und auf den wird innerhalb der Funktion mit Namen "dauer" zugegriffen.
http://www.mikrocontroller.net/articles/C
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Gruß
mic
Alles klar danke !!! lesen bildet uebrigens ;) habs auch mal probiert und bin echt was weiter gekommen ^^
hier mal mein erstes Programm
#include "asuro.h"
int main(void)
{
Init();
int zahler;
while(1)
{
if (PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(200,200);
StatusLED(YELLOW);
FrontLED(ON);
BackLED(OFF,OFF);
SerWrite(" ALLES SUPER!",20);
}
else
for (zahler=0;zahler<15;zahler++)
{ MotorDir(RWD,RWD);
MotorSpeed(100,200);
StatusLED(RED);
FrontLED(OFF);
BackLED(ON,ON);
SerWrite(" AUA!",11);
}
}
return (0);
}
und danke nochmal fuer deine geduld ! danke danke
radbruch
20.10.2011, 20:58
Hallo
Der zweite Parameter von SerWrite() gibt die Anzahl der Zeichen in der Zeichenkette zwischen " und " an. \n ist ein Steuerzeichen und startet im Terminal die Ausgabe einer neuen Zeile (Newline). Mit Code-Tags bleibt die Struktur des Quellcodes erhalten:
#include "asuro.h"
int main(void)
{
int zahler;
Init();
while(1)
{
if (PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(200,200);
StatusLED(YELLOW);
FrontLED(ON);
BackLED(OFF,OFF);
SerWrite(" ALLES SUPER!",13);
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(100,200);
StatusLED(RED);
FrontLED(OFF);
BackLED(ON,ON);
for (zahler=0;zahler<15;zahler++)
SerWrite(" AUA!",5);
SerWrite("\n",1);
}
}
return (0);
}
Weiterhin viel Spass mit deinem asuro.
Gruß
mic
aso :) ja hatte das nicht richtig kopiert ! hatte 20 genommen, weil ich davor noch leerzeichen hatte damit das nicht direkt hintereinander kommt ! aber deine loesung ist natuerlich besser und das was ich gesucht habe :)
("\n",1) = einmal enter gedrueckt ?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.