-
        

Ergebnis 1 bis 9 von 9

Thema: "Soft-Reset?" und "Finger-Interrupt?"

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119

    "Soft-Reset?" und "Finger-Interrupt?"

    Anzeige

    Hallo,

    beim Testen meiner Software habe ich ab und zu das Problem entdeckt, dass der Asuro scheinbar einen Reset erlebt. Das ganze spielt sich folgendermaßen ab:

    Zu Beginn frage ich in einer Schleife die Tasten ab und lasse die Status-LED als Hinweis fröhlich blinken. Erst nach einem Tastendruck geht es weiter in das Hauptprogramm und damit in die Endlosschleife - es gibt softwareseitig keine Möglichkeit, dass das Programm wieder an den Start (also die "Tastendruckschleife" ...) springen kann.

    Im laufenden Betrieb (ich vermute in Zusammenhang mit Tastendruck durch Kollision mit einem Hindernis) passiert es dann plötzlich, dass der Asuro wieder in besagter Schleife landet und die LED fröhlich blinkt. Ein Hardware-Reset durch Kurzschluss o.ä. müsste sich doch auch die kurze Bootloader-Phase mit der gelben Status-LED bemerkbar machen, oder?

    Gibt es auch einen Software Reset im Atmega? Bspw. durch Zugriff auf ungültige Speicherbereiche oder sowas? Mir gehen die Ideen aus ...

    Danke für Tipps und Gruß,
    Florian

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119
    Ich habe jetzt entsprechend den Tipps hier: http://www.mikrocontroller.net/topic/42716 CKOPT im Atmega aktiviert und bislang keine Probleme. Mal sehen, ob das auf Dauer hilft ...

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119
    Mist ... zu früh gefreut.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119
    Mein Asuro löst den Switch-Interrupt aus, wenn man mit dem Finger großzügig unter die Platine in der Nähe der Taster langt (anfasst, evtl. etwas rubbelt). Ist das normal? PollSwitch() sagt, keine Taste, aber für einen Interrupt langts scheinbar ...

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    der interrupt ist sehr empfindlich... es kann schon sein dass ein finger reicht.

    einen softreset gibt es nicht, poste aber mal deinen programmcode. evtl kann man was sehen...

    CKOPT bedeutet in verbindung mit einem quarz oder schwinger, dass die schwingung "rail-to-rail", also mit maximaler amplitude, ausgeführt wird. das braucht mehr strom als wenn CKOPT aus ist, ist aber in störungsreichen umgebungen (wie dem asuro: batteriebetrieben, in bewegung, und die extrem störenden motoren) hilfreich. es sollte also eingeschaltet bleiben, sofern du das bisschen strom nicht sparen musst... ansonsten hat es eigentlich keinen weiteren einfluss.
    kleinschreibung ist cool!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119
    Code komplett posten ist schlecht, das ist einerseits zu umfangreich und andererseits möchte ich mein Diplomzeugs noch nicht veröffentlichen.

    Aber mein main() sieht so aus:

    Code:
    int main(void)
    {
        asuroConInit();
        
        for(;;)
        {
    		asuroConUpdate();
    
         } //infinite loop
         return 0; //unreachable ...
        
    }
    Da die Initialisierung sowie das Warten auf den Tastendruck in "asuroConInit()" stattfindet und das sonst nirgends aufgerufen wird, dürfte es sich wirklich um einen Reset handeln... und somit vermutlich um ein Hardwareproblem.

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    sehr eigenartig. nochmal zum verständnis: der asuro resettet zum beginn des programms, aber nicht zum beginn des bootloaders?

    ich tippe auf spannungsschwankungen, welche den prozessor in einen zu niedrigen bereich bringen. dadurch word der programmzähler auf 0000 zurückgesetzt, an dieser stelle ist das userprogramm. mit einem hardreset würde die adresse des bootloaders eingelesen werden, welche in der nähe des endes des speichers liegt.

    schüttel ihn mal ein wenig... tritt das dann auch auf?
    kleinschreibung ist cool!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    38
    Beiträge
    119
    Schütteln probiere ich morgen mal ..

    Evtl. ist es auch der Bootloader - da die ganze Zeit eine UART-Kommunikation läuft, bekommt man es evtl. nur nicht mit. Der Bootloader springt ja (so weit ich gelesen habe...) bei für ihn falschen Daten direkt zum Programm weiter.

  9. #9
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    hmm ich glaube der bootloader wartet eine halbe (ganze?) sekunde ob richtige daten kommen, und springt dann weiter...
    kleinschreibung ist cool!

Berechtigungen

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