Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Flash Tool Probleme
hoefflch
29.03.2006, 19:47
Hallo,
Ich habe einen Asuro Roboter.
Wenn ich im "Asuro Flash Tool" meine Datei (die schon vorprogrammierte test.hex von First Try)senden will kommt:
Open Com1-->OK!
Bulding RAM -->OK!
Connect to Asuro-->OK!
Sending Page 000 of 024-->tttttttttt
TIMEOUT !
ASURO dead -->FLASH damaged !!
Über den Hyper Terminal kann ich aber die "Asuro Testings" empfangen.
Außerdem ist das mit "Sending Page 000 of 024" noch nie gegangen.
Kann mir jemand hierbei helfen?
Danke für die Antworten im voraus.
Christian
Hallo hoefflch,
also Probleme mit dem Transceiver kommen beim Asuro leider recht häufig vor. Insbesondere bei Laptops ist die Spannung am seriellen Port wohl ungenügend. Hast Du schon mal hier im Forum gesucht (üblicherweise bei https://www.roboternetz.de/phpBB2/viewforum.php?f=25 )? Wenn der Test mit dem weißen Blatt funktioniert, gibt einige Standardantworten:
1. Abstand und Winkel des Transceivers zum Asuro variieren.
2. Batterien überprüfen.
3. Fremdlichteinflüsse überprüfen (insbesondere wohl Neonröhren).
4. Beim Flashen das Fenster des Flash-Tools variieren (https://www.roboternetz.de/phpBB2/viewtopic.php?t=17930).
5. Du kannst in der Datei AsuroFl.ini, die vom FlashTool angelegt wird, den Eintrag für "#MaxTry for flashing" deutlich hochsetzen - dann wird das Flashen nicht mehr so früh abgebrochen.
Schau Dich einfach nochmal bissl im Forum um und probier die verschiedenen Vorschläge. Wenn es nicht klappt, kannst Du Dich ja nochmal melden.
Viel Glück
kanal28
hoefflch
30.03.2006, 15:23
Hallo Kanal28,
Danke ich werde nochmal genauer im Forum schauen.
Der Test mit dem weißen Blatt hat bei mir noch nicht geklappt.
Christian
Hi,
ich hab mir auch vor einiger Zeit den ASURO-Roboter zugelegt und hab dazu einige Fragen und zwar:
1. Wo kriegt man den kompletten Schaltplan von dem Roboter her?
2. Ich kann zwar C programmieren, aber mit dem Mikrocontroller-C komm ich nicht so richtig klar. Außerdem kann ich auch keine Bücher finden, in denen die Programmierung von Mikrocontrollern einigermaßen verständlich erklärt wird (hab zwar schon zwei Bücher, aber versteh nix)
Jetzt hab ich mal gesehen, dass man auch die Atmel-Controller mit einer Basic verwandten Sprache namens Bascom auch programmieren kann.
Weiss einer von euch was über diese Sprache?
Und ist es möglich den Asuro-Roboter auch mit dieser Sprache zu programmieren?
greetz Tobi
Hallo nero81,
1. Der Schaltplan befindet sich im Handbuch ab Seite 74.
2. Also wenn Du C programmieren kannst, sollte der Asuro auch kein Problem sein. Ich finde das Tutorial hier http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial ziemlich gut.
Zu Bascom kann ich Dir nix weiter sagen. Aber das ist hier wohl auch sehr verbreitet. Das sollte auch mit dem Asuro funktionieren, Du kannst dann halt nicht die originalen Routinen verwenden - aber da hat sich wohl schon mal jemand an eine Umsetzung gemacht (einfach mal im Forum oder im Netz suchen...).
Gruß
kanal28
Hi Kanal28,
danke für die schnelle Antwort.
Allerdings muss ich sagen, dass ich mir dieses Tutorial schon einmal runtergeladen habe und relativ wenig damit anfangen kann.
Da steht halt nur, wie man z.B auf Ports zugreift, die Datenrichtung bestimmen kann, Status der Bits abfragen, Pull-Up-Wiederstände aktivieren, Pulsweitenmodulation usw....
Aber ich weiss nicht, wozu dass alles gut ist. z.B wie funktioniert denn dass, dass man die beiden Schrittmotoren vom Asuro unterschiedlich ansteuern und mit unterschiedlicher Geschwindigkeit zum laufen kriegt.
Oder wie funktioniert es, dass ein Sensor, wenn er gegen einen Gegenstand fährt ein Signal zum Controller sendet und dass C-Programm dann entscheidet, dass der Roboter stehen bleiben soll?
Oder kann es auch sein, dass obwohl ich ein wenig in C Pogrammieren kann mir einfach noch nicht über einige elektronische Grundlagen im klaren bin und mir deshalb nichts darunter vorstellen kann.
Was ich mir halt wünsche mal zu finden ist ein Buch, in dem die Welt der Mikrocontroller und deren programmierung auch für kids einfach und verständlich erklärt ist.
Hallo nero81,
ja gut, ich verstehe Dein Problem. Ging mir anfangs auch so (und das ist nicht lange her - habe im Januar mit dem Asuro das erste Mal mit Robotik zu tun gehabt). Habe einfach angefangen - man findet im Internet ja viel. Ich würde Dir empfehlen, in kleinen Schritten anzufangen. Du musst ja nicht gleich den Asuro vollständig neu programmieren - benutze einfach die vorhandenen Funktionen. Für den Anfang reicht es ja, wenn Du weißt, dass die Funktion MotorSpeed() die Geschwindigkeit und MotorDir() die Richtung einstellt - das ist normales C. Die einzelnen Funktionen sind im Handbuch erklärt - das sollte man lesen! Benutze einfach die Beispielprogramme auf der CD und versuche in kleinen Schritten eigene Änderungen auszuprobieren.
Wenn dann die ersten eigenen Programme funktionieren, kannst Du ja mal in die asuro.c schauen und Dir die Details anschauen (vielleicht erstmal mit StatusLED() anfangen ;-) ) - immer einen Blick auf den Schaltplan und gerne später auch in das Datenblatt des ATmega8 (die Datenblätter von ATMEL sind echt gut, finde ich). Der Asuro ist eigentlich noch übersichtlich genugt, dass man ihn sich langsam erschließen kann. Mit der Zeit findest Du dann schon raus, dass die Motoren des Asuro (das sind keine Schrittmotoren) einzeln über Pulsweitenmodulation (https://www.roboternetz.de/wissen/index.php/Pulsweitenmodulation) angesteuert werden und, dass Kollissionen mit der Funktion PollSwitch(), die die Taster abfragt, erkannt werden (später geht das dann auch per Interrupt). Also ich würde sagen: Nur Mut!
Letztlich ist es aber sicher Geschmackssache, wie man einsteigt (und Grundkenntnisse in Elektronik und Programmierung sind sicher hilfreich).
Gruß
kanal28
PS: Kennst Du das Buch hier http://www.rowalt.de/mc/avr/avrbuch/index.htm? Das sieht vielversprechend aus - kenne aber nur die Webseite. Dass es ein Buch speziell zum Asuro gibt, sollte ich vielleicht auch noch erwähnen (habe ich aber auch nicht): http://asuro.pytalhost.de/pmwiki/pmwiki.php?n=Main.MehrSpassMitAsuroBand1
Hi Kanal28,
die Bücher sehen echt vielversprechend, ich werd mir sie mal näher anschauen.
Aber was ich noch sagen wollte: Klar verwende ich in meinen eigenen Programmen die Funktion wie Init() oder MotorDir(FWD,FWD) usw..,
aber ich möchte auch wissen, was hinter diesen Funktionen steckt um dann mal eigene zu schreiben.
Aber ich kann mir halt im moment noch so wenig unter so großen Quelltexten wie z.B der unter vorstellen
#include <inttypes.h> // Allgemeine Bibliotheken
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
uint8_t taster(void) { // Tasterabfrage durch kurzes Umschalten auf Eingang
uint8_t status, ret_val;
status=PORTD&0x68; // Alten Status merken
DDRD=DDRD&0x97; // Bits auf Eingang schalten
PORTD=PORTD|0x68;
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
ret_val=PIND&0x68; // Bits einlesen
PORTD=(PORTD&0x97)|status; // Alten Status wieder herstellen
DDRD=DDRD|0x68; // Bits wieder auf Ausgang schalten
return ret_val;
}
void warte(uint16_t t) { // Funktion "Warteschleife"
uint16_t i, j;
for (i=0;i<t;i++) { // Verschachtelte Schleife mit Befehl NOP="Tue nichts", damit
for (j=1;j<200;j++) { // die Schleife nicht wegoptimiert wird.
asm volatile ("nop");
}
if (taster()!=0x68) // Abbruch bei gedrücktem Taster
break;
}
}
int main (void) {
uint8_t tasterwert;
DDRB=0xFF; // Port B auf Ausgang
PORTB=0xFF; // Alle Ausgänge auf 1
DDRD=0xFF; // Port D auf Ausgang
PORTD=0xFF; // Alle Ausgänge auf 1
for (;;) { // Endlosschleife
PORTB=~PORTB; // Alle Ausgänge invertieren
PORTD=~PORTD;
warte(4000); // Warten
tasterwert=taster();
if (tasterwert!=0x68) {
PORTB=0xFF;
PORTD=0xFF;
}
while (tasterwert!=0x68) {
if (bit_is_clear(tasterwert,6)) // Taster 1 abfragen (gedrueckt = Bit geht auf 0)
cbi(PORTB,7); // Zugehörige LED an
else
sbi(PORTB,7); // Zugehörige LED aus
if (bit_is_clear(tasterwert,3)) // Taster 2 abfragen (gedrueckt = Bit geht auf 0)
cbi(PORTB,0); // Zugehörige LED an
else
sbi(PORTB,0); // Zugehörige LED aus
if (bit_is_clear(tasterwert,5)) // Taster 3 abfragen (gedrueckt = Bit geht auf 0)
cbi(PORTB,1); // Zugehörige LED an
else
sbi(PORTB,1);
tasterwert=taster();
if (tasterwert==0x68) {
PORTB=0xFF;
PORTD=0xFF;
}
}
}
}
Gruss Tobi
5. Du kannst in der Datei AsuroFl.ini, die vom FlashTool angelegt wird, den Eintrag für "#MaxTry for flashing" deutlich hochsetzen - dann wird das Flashen nicht mehr so früh abgebrochen.
kanal28
Sehr gute Idee, man muss aber die .ini auf schreibgeschützt setzen, sonst wird sie beim programmstart neu überschrieben.
Als weitere Hilfe zum erfolgreichen Flashen dienten mir die Hülsen der Pall-Mall Stix :)
Handhabung: siehe Bild!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.