Forum: Mikrocontroller und Digitale Elektronik ATmega164P läuft nach einiger Zeit nicht mehr


von Andreas (Gast)


Lesenswert?

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

von Hubert G. (hubertg)


Lesenswert?

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?

von Andreas (Gast)


Lesenswert?

Hallo,

was meinst Du mit "ein Reset alleine genügt nicht"?

Viele Grüße,
Andreas

von Anja (Gast)


Lesenswert?

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

von Andreas (Gast)


Lesenswert?

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

von Hubert G. (hubertg)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Andreas (Gast)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.