Hallo! Ich arbeite an einem Projekt bestehend aus einer Platine mit zwei ATmegas (1280 und 164P), die über das HW SPI Interface miteinander verbunden sind. Beide Controller sind mit einer modifizierten Version des AVR109 Bootloaders ausgestattet, die das Übertragen von Daten mittels SPI unterstützt. Bei einigen Platinen ist im laufe der letzten Monate jeweils der 164P ausgefallen. Durch erneutes Einspielen des hex-Files mittels Bootloader, der davon nicht betroffen war, konnte dieser aber wieder zum Laufen gebracht werden. Ich vermute daher, dass es zu einem Fehler im Flash Programmspeicher gekommen ist. Aus urheberrechtlichen Gründen kann ich leider weder Schaltpläne noch Teile des Programms posten. Der 164P ist an PB4 bis PB7 (SPI Slave Interface) über 100R Serienwiderstände mit dem SPI Master Interface des 1280 verbunden. Eine zusätzliche Leitung an PC7 signalisiert die Sendebereitschaft des 164P. Es gibt keine weiteren Schaltungsteile, die bekannt für größere Störungen sind, wie Relais und dergleichen. Die meisten Portleitungen gehen zu Optokopplern. Der Reset wird über einen Transistor, der als Schalter ausgeführt ist, aktiviert. Auf dieser Leitung selbst ist kein Kondensator gegen Masse. Über einen Spannungsteiler >50k wird eine andere Spannung an Port PA7 gemessen, die auch nach dem Wegfall der Versorgung noch für einige ms anliegen könnte. Beide Bootloader initialisieren zunächst sämtliche I/O Ports und warten dann eine gewisse Zeit auf das Startzeichen "S". Wird dieses nicht empfangen, started der Programmcode mittels JMP Befehl von Adresse 0. Aus Sicherheitsgründen, damit die SW auch mittels Programmer aktualisiert werden kann, ist die SPIEN Fuse aktiviert. Könnte es sein, dass der 164P versehentlich (aufgrund der Port-Initialisierung) in den seriellen Programmiermodus geht und sich dadurch das vorhandene Programm zerstört. Könnte es andere Ursachen für das "Vergessen" geben? Ist der 164P evtl. empfindlich auf Latch-Up Effekte? Sollte der Brown-Out Detektor aktiviert werden? Vielen Dank, Andreas
Das der Fehler im Flash liegt, ist mehr als Unwahrscheinlich. Es sein denn du hast einen hineingeschrieben. Brown-Out-Detection aktivieren ist sicher kein Fehler. Ein Reset alleine genügt nicht?
Hallo, was meinst Du mit "ein Reset alleine genügt nicht"? Viele Grüße, Andreas
Andreas schrieb: > Könnte es andere Ursachen für > das "Vergessen" geben? Ich habe gerade einen ähnlichen Fall an einem ATMega1284P. Nach längerer Abschaltzeit (morgens) startet er auch nicht mehr. Der Programmspeicher ist jedoch ok. Sobald ich das Programmiergerät anschließe (USB ISP MKII) läuft die Software los als ob nichts gewesen wäre. Ich habe momentan die serielle Schnittstelle (FTDI-Baustein an USB) im Verdacht. Von dort aus wird zurückgespeist. Ich habe im ausgeschalteten Zustand immer noch ca 1,25V an der Versorgungsspannung des AVR. Werden deine beiden ICs von derselben Versorgung gespeist oder gibt es da auch noch irgendwelche IOs die über die Eingangsschutzdioden zurückspeisen können? Gruß Anja
Hallo, beide ICs hängen an derselben 3,3V Versorgung. Nur der oben erwähnte PA7 könnte noch längere Zeit Spannung haben, das habe ich allerdings noch nicht nachgemessen. Vielleicht sollte ich noch erwähnen, das die Schaltung seit letztem Winter im Freien läuft (in einer Metallkiste eingebaut), und sich die Ausfälle im Sommer gehäuft haben (Zufall?). Viele Grüße, Andreas
Ich meinte ob es nicht genügt nur einen Reset zu machen damit er wieder läuft. Denn das sich der Flash löscht kann ich nicht glauben.
Ich habs bei mir gerade nochmal verifiziert: Der ATMega1284P startet bei mir dann nicht wenn die zurückgespeiste Versorgung oberhalb von ca 1,5V liegt. Bei Abziehen des USB-Ports vor dem Einschalten habe ich dann zuverlässiges Starten. Andreas schrieb: > Ausfälle im Sommer gehäuft haben (Zufall?). Mein Auto verbraucht im Sommer auch weniger als im Winter. Gruß Anja
Hallo, ich habe einiges ausprobiert, die Controller wieder zum Laufen zu bringen, u.a. mehrere Resets, aber alles ohne Erfolg. Erstaunlicherweise lief der Bootloader und ich konnte das hex-File neu einspielen. Seitdem funktioniert es wieder, aber wie zuverlässig kann ich noch nicht sagen. Viele Grüße, Andreas
Ach ja noch was: bei mir ist BODLEVEL = 4 (also 4,2V) (FUSEE = 0xFC) Also eigentlich sollte bei mir der RESET beim POWER-ON anliegen. Gruß Anja
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.