  |
| |
|
| Autor |
Nachricht |
HermannSW
Fleißiges Mitglied


Anmeldungsdatum: 18.12.2006
Beiträge: 195
Wohnort: Eberbach

|
Hi,
ich hatte schon ab und zu bemerkt, daß der Asuro auch mal früher als 3 Sekunden nach dem Einschalten mit dem eigentlichen Programm startete.
In den Hilfstexten zu DoctorAsuro 1.0 von Arexx-Henk fand ich nun die Antwort:
| aus Quizfragen von DoctorAsuro 1.0 hat folgendes geschrieben:: |
| Nur ... Infolge eines Softwarefehlers im ASURO-Bootloaderprogramm wird die orangefarbene SystemLed manchmal lediglich eine einzelne Sekunde und keine drei Sekunden aufleuchten. Sobald das ASURO-Bootloaderprogramm fehlerhafte Signale empfängt, startet das System das Benutzerprogramm bereits nach einer Sekunde und nicht nach 3 Sekunden. Diese Bedingung kann auftreten falls keine Registertaste aktiviert wurde. DoctorAsuro schickt dem ASURO zur Überprüfung der Kommunikation jede Sekunde eine Infrarotnachricht. Das Bootloaderprogramm wird diese Nachricht als falsches Flashkommando an das Bootloaderprogramm interpretieren und sofort das Benutzerprogramm starten. |
Und so kann man seinen Asuro einfach "kurzschließen" (sofort nach dem Einschalten des Asuro ausführen!):
C:\>echo "Los geht's" >com4 (mein USB-Transceiver hängt an COM4)
Hier ein minimales Programm zum Testen:
#include <asuro.h>
int main(void)
{
Init();
StatusLED( OFF );
BackLED(ON,ON);
while (1) ;
return 0;
} |
_________________ Gruß, Hermann.
myIrAsuro. |
|
|
 |
Asuro-n00b
Stammmitglied


Anmeldungsdatum: 12.11.2006
Beiträge: 69
Wohnort: SH Alter: 23

|
Hey klasse hab meinen Asuro auch gerade über RS232(bei mir Com1) "kurzgeschlossen".
Interessant, weiß jemand wie man rausbekommt welchen Code das Flashprogramm zu Anfang sendet, damit der Asuro es nicht als "Fehlerhaften Code" wertet?
Edit:
Ich hab's rausgefunden.
Wenn man im Flashprogramm auf "Programm" klickt, dann sendet es sehr schnell hintereinander das Wort "Flash".
Das konnte ich über einen zweiten Tranceiver rausfinden. Dabei war auch gut zu beobachten, wie er den Programmcode an Asuro sendet.
Leider nur komische Zeichen. In der hex-Datei sind nur Zahlen enthalten.
:1000000012C02BC02AC056C028C027C026C025C099
:1000100024C023C022C021C020C01FC01EC01DC0DC
Die letzte Zeile heißt in jeder Asuro hex file
00000001FF .
Die sagt bestimmt dem Prozessor, dass das Programm fertig reingeladen ist.
Was sind das für Zeichen, die das flashtool da sendet? Ist das Maschinencode?
Wenn ein "t" gesendet wird, hat das Flashtool keine Rückmeldung bekommen und sendet es daher noch einmal.
Die Zeichenfolge pro gesendete page beträgt bei mir zwischen 62-65 Zeichen.
Edit:
Der Asuro antwortet sobald er "Flash" empfangen hat mit "ASURO" (er gibt sich also zu erkennen ) Das Flash-Programm schreibt dann
Connect to ASURO --> OK !
Dann sendet es nocheinmal "Flash" an Asuro und beginnt dann Paketweise die Zeichen zu senden. |
|
|
|
 |
HermannSW
Fleißiges Mitglied


Anmeldungsdatum: 18.12.2006
Beiträge: 195
Wohnort: Eberbach

|
Hallo,
| Asuro-n00b hat folgendes geschrieben:: |
...
Die letzte Zeile heißt in jeder Asuro hex file
00000001FF .
Die sagt bestimmt dem Prozessor, dass das Programm fertig reingeladen ist. |
Ja.
| Zitat: |
| Was sind das für Zeichen, die das flashtool da sendet? Ist das Maschinencode? |
Ja, für mehr Informationen siehe:
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AsuroHexfiles |
_________________ Gruß, Hermann.
myIrAsuro. |
|
|
 |
radbruch

Anmeldungsdatum: 27.12.2006
Beiträge: 3834
Wohnort: Stuttgart Alter: 47

|
Hallo
Lustig was der Kleine so alles kann. Mit einer IR-Fernbedienung kann man ihn auch "kurzschliesen".
Am Ende der Übertragung kommt noch ein "ok", vermutlich vom asuro.
(http://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=287985#287985)
Gruß
mic
[Edit]
Einfache Versuche den Startzeitunterschied zu messen scheiterten daran, dass kein mir bekannter Timerwert das Init() von asuro.c überlebt. Eigenlich müste ja ein Timer im Bootlader gestartet werden um die IR-Kommunikation zu ermöglichen und um die Start-Wartezeit zu messen. Aber wo ist der Wert gespeichert und wie greift man nach dem eigentlichen Programmstart darauf zu? |
_________________
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life! |
|
|
 |
HermannSW
Fleißiges Mitglied


Anmeldungsdatum: 18.12.2006
Beiträge: 195
Wohnort: Eberbach

|
| radbruch hat folgendes geschrieben:: |
Hallo
Lustig was der Kleine so alles kann. |
| Zitat: |
...
[Edit]
Einfache Versuche den Startzeitunterschied zu messen scheiterten daran, dass kein mir bekannter Timerwert das Init() von asuro.c überlebt. Eigenlich müste ja ein Timer im Bootlader gestartet werden um die IR-Kommunikation zu ermöglichen und um die Start-Wartezeit zu messen. Aber wo ist der Wert gespeichert und wie greift man nach dem eigentlichen Programmstart darauf zu? |
Auf S. 109(114) der Datei Doc/AVRInstructionSet.pdf von der Asuro-CD findet man in Abschnitt 7.6.6 The .initN Sections, wie man etwas direkt nach einem Reset noch vor Aufruf von main() ausführen lassen kann [__init()].
Außerdem musst Du ja auch nicht die Asuro-Library für diesen Zweck verwenden, man kann auch ganz ohne Asuro-Library sinnvolle Dinge programmieren, siehe z.B.:
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=29635 |
_________________ Gruß, Hermann.
myIrAsuro. |
|
|
 |
damaltor
Robotik Einstein


Anmeldungsdatum: 28.09.2006
Beiträge: 3536
Wohnort: Jena Alter: 23

|
die zeile
:000...1FF bedeutet, dass der programmcode hier zuende ist. darum 0000. das 1FF ist die prüfsumme zu 0000 oder?
das hexfile selbst ist schon maschinencode. es wird in der hexadezimalen form übertragen, da gibts halt auch die buchstaben A-F =) |
_________________ kleinschreibung ist cool!
damaltor |
|
|
 |
Sternthaler

Anmeldungsdatum: 29.05.2005
Beiträge: 989

|
Hallo zusammen.
Das übertragen Zeug ":1000000012C02BC02AC056C028C027C026C025C099 " ist sogenanter Intel-Hex-Code und steht auch so in den test.hex-Dateien.
Folgender Aufbau:
: Konstant
10 Anzahl Datenbytes (HEXZ-Zahl, also dezimal 16 Byte)
0000 Adresse, an die das Erste Datenbyte zu speichern ist
00 (fast) konstant. Hier gibt es noch ein paar andere Codes
12 C0 2B C0 2A C0 56 C0 28 C0 27 C0 26 C0 25 C0 Daten: 16 * 2 Nibbel (Halbbyte)
99 Prüfsumme (Bin nicht sicher, meine aber mit 'Anzahl Datenbyte')
: Konstant
00 0 Datenbytes
0000 Adresse, hier ohne Bedeutung
01 <--- Stopcode
FF Prüfziffer
|
_________________ Lieber Asuro programieren als arbeiten gehen. |
|
|
 |
|
|
|
|
  |
|
|
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum nicht herunterladen
|
Alle Zeiten sind GMT + 1 Stunde
|