- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 7 von 7

Thema: Atmega2560 spinnt bei Programmausführung.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    shedepe
    Gast
    ISP Programmer bieten auch immer die Möglichkeit an der Speicherinhalt mit einem Hexfile zu vergleichen (also zu verifizieren wie Atmelstudio das nennt). Das würde ich mal ausprobieren um zu überprüfen ob wirklich das im Speicher steht was drin sein soll. Bei häufigem Flashen kann man durchaus an die Grenzen der Haltbarkeit des Speichers kommen.

    Weiterhin würde ich noch mal vorsichtshalber alle Fuses überprüfen. Manchmal macht man ja auch da Blödsinn.
    Wie viel Strom zieht eigentlich die äußere Peripherie. Da könnte man je nach Arduino Board durchaus an die Grenzen des Spannungsreglers kommen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Verifizieren der Daten im Flash ist immer ok. Das Board ist neu und wurde keine 100x geflasht, davon 50x die letzten paar Tage. Wollte damit die Designschwächen meiner Lochrasterplatinen aussschließen.
    Und es war billiger als 2 neue 1284 für meine alte Platine.

    Stromversorgung kommt vom Stepdown Regler, max 2A, 5V direkt aufs Arduino Shield/Board, die Spannungsregler am Board werden umgangen. Gemessen waren es 4.97 am Board. Vor und gleich nach dem Stepdown Regler sind zusätzliche Elkos verbaut, 20cm Kabellänge weiter am Board gibt es nichts außer der original Beschaltung. Werde dort am Shield noch zusätzlich 100nF und Elko einbauen.

    Brownout hatte ich wegen EEPROM so hoch gesetzt, werde es mal rausnehmen.

    Fuses sind ok, habe beim Quarz >8Mhz mit 64t gewählt oder auch den Full Swing, kein Unterschied.
    Clockdiv8 ist aus.
    EEsave ist an.
    Bootloader ist aus.
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  3. #3
    shedepe
    Gast
    Ok, dann sind wir an dem Punkt angelangt an dem man ohne genauere Informationen nur raten kann.
    Dazu gehören Schaltplan und Programmcode des minimal Programms (komplett)

    Deine Fehlerbeschreibung (also 1-5) hören sich mehr nach (Wenn es nicht die Brownoutdetection ist)
    1. Kaputter Flashspeicher -> sollte aber wegen Verifikation nicht sein -> du könntest aber die Verfikation noch mal zu einen späteren Zeitpunkt nach einigen Minuten Betrieb drüber laufen lassen
    2. Falsche Interruptvektoren -> Der Code springt irgendwo hin

    Verwendest du eine Sourcecodeverwaltung bzw. Versionierung wie z.B. git ?
    Bist du damit schon mal auf einen funktionierenden Stand zurückgesprungen. Ich hatte auch schon mal den Fall bei dem ich dachte das alte Hexfile müsste eigentlich funktionieren.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Hallo shedepe,

    war beim zusammenstellen der Codefiles zum reinstellen als ich im Code bei den Interrupts den Kommentar "geht nicht??" entdeckte, dachte sofort an deinen Hinweis
    2. Falsche Interruptvektoren -> Der Code springt irgendwo hin
    und ging das noch mal mit dem Datenblatt durch. Interruptvektoren stimmen, falsche Interrupts fange ich mit Fehlermeldung ab.
    Hatte verschwitzt dass ich kurz vorm Urlaub die Interrupt Pins ändern musste (deswegen ging es ursprünglich nicht), und gerade entdeckt dass damit ein Interrupt von Register EICRB ins EICRA gewandert ist!
    Jetzt gehen die ersten Motortests richtig, und zumindest diese 3 Tests waren ohne Watchdog Meldung

    Was mich wundert dass der Compiler nichts gemeldet hat, schließlich gibt es in EICRB kein ISC30 zu setzen, und ich habe den extra so eingestellt das zu jedem Mist eine Warnung kommt.

    Und man sieht dass Kommentare im Code super sind wenn das Hirn vergesslich wird
    Dabei hatte ich diese Stelle auch schon oft kontrolliert, aber das falsche Register bis jetzt nicht bemerkt.

    Dann werde ich morgen den Roboter mit altem Notfallakku in die Wildnis entlassen, mal sehen wie es dort funktioniert.

    LG Werner
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Zitat Zitat von damfino Beitrag anzeigen
    Was mich wundert dass der Compiler nichts gemeldet hat, schließlich gibt es in EICRB kein ISC30 zu setzen, und ich habe den extra so eingestellt das zu jedem Mist eine Warnung kommt.
    EICRB und ISC30 sind nur Makros. Für den Compiler wird ein Bit in einem Register gesetzt. Der Compiler weiß nichts über die Funktionen der einzelnen Bits der Register. Du kannst grundsätzlich jedes Bit in jedem Register setzen, ohne dass der Compiler meckert - auch wenn das Bit dort gar keine Funktion hat.

    Gruß, askazo

Ähnliche Themen

  1. PWM auf dem ATMEGA2560
    Von Mithrandir im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 08.03.2014, 22:12
  2. Atmega2560 : PWM beeinflusst ADC
    Von sportfreak im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 21.01.2010, 17:59
  3. Atmega2560 und RTC PCF8583
    Von hhopf im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 25.07.2008, 07:17
  4. ATMEGA2560 Beispielprogramm
    Von mattschach im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 06.01.2008, 15:58
  5. atMega2560 in Bascom
    Von ceekay im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.08.2005, 21:08

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress