- LiTime Speicher und Akkus         
Ergebnis 1 bis 7 von 7

Thema: Asuro "kurzschließen" (wie ein Auto)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beiträge
    199

    Asuro "kurzschließen" (wie ein Auto)

    Anzeige

    Praxistest und DIY Projekte
    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:
    Zitat Zitat von aus Quizfragen von DoctorAsuro 1.0
    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!):
    Code:
    C:\>echo "Los geht's" >com4
    (mein USB-Transceiver hängt an COM4)

    Hier ein minimales Programm zum Testen:
    Code:
    #include <asuro.h>
    
    int main(void)
    {
      Init();
    
      StatusLED( OFF );
      BackLED(ON,ON);
    
      while (1) ;
    
      return 0;
    }
    Gruß, Hermann.
    myIrAsuro.Bild hier  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.11.2006
    Ort
    SH
    Alter
    37
    Beiträge
    69
    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.
    Code:
    :1000000012C02BC02AC056C028C027C026C025C099
    :1000100024C023C022C021C020C01FC01EC01DC0DC
    Die letzte Zeile heißt in jeder Asuro hex file
    Code:
    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
    Code:
    Connect to ASURO --> OK !
    Dann sendet es nocheinmal "Flash" an Asuro und beginnt dann Paketweise die Zeichen zu senden.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beiträge
    199
    Hallo,
    Zitat Zitat von Asuro-n00b
    ...
    Die letzte Zeile heißt in jeder Asuro hex file
    Code:
    00000001FF
    .
    Die sagt bestimmt dem Prozessor, dass das Programm fertig reingeladen ist.
    Ja.
    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/pmwik.../AsuroHexfiles
    Gruß, Hermann.
    myIrAsuro.Bild hier  

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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.
    (https://www.roboternetz.de/phpBB2/ze...=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?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beiträge
    199
    Zitat Zitat von radbruch
    Hallo

    Lustig was der Kleine so alles kann.

    ...
    [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 mußt 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.:
    https://www.roboternetz.de/phpBB2/ze...ag.php?t=29635
    Gruß, Hermann.
    myIrAsuro.Bild hier  

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.062
    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 =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen.
    Das übertragen Zeug ":1000000012C02BC02AC056C028C027C026C025C099 " ist sogenanter Intel-Hex-Code und steht auch so in den test.hex-Dateien.

    Folgender Aufbau:
    Code:
    :       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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus