Forum: Mikrocontroller und Digitale Elektronik atmega88 läuft nicht zuverlässigt an


von Meiermann (Gast)


Lesenswert?

Hallo,

ich nutze einen Atmega88 um ein Rechteck zu generieren. Da ich noch 
Änderungen am Programm vornehme steckt auch noch der AVRISP mkII am 
Board.
Die Spannungsversorgung kommt von einem DC/DC-Wandler 2405 und ist 
stabil auf 5.3V (der ist ganz ohne andere Bauteile etwas unterfordert, 
mit einer Betriebsanzeige-LED sink die Spannung dann auf 5V). Als 
Taktquelle nutze ich einen Quarzoszi 10MHz auf XTAL1.

Vor einiger Zeit habe ich immer wieder Probleme gahabt, dass ca. 2ms 
dann auch die Rechtecke kommen, dann 16ms nicht, dann wieder 
Rechtecke...
Zufällig ist meine Start-Up-Zeit auch auf 16 ms eingestellt. Änderte ich 
diese, war auch die zeitliche Lücke zwischen den Rechtecken solange wie 
die Start-Up-Zeit, also ist der Mega nach einigen Durchläufen wieder in 
den Reset gegangen.

Nach einem Tausch des Reset-Pull-Ups von 10k auf 3k lief der Mega dann 
problemlos (im Zuge einer allgemeinen Bauteilüberprüfung zur 
Fehlersuche).

Jetzt, nach einigen Tagen Pause läuft der Mega nicht mehr an und gibt 
nur einen Hi-Pegel aus. Ziehe ich mehrmals die Stromversorgung (oder 
drücke ich im AVR-Studio den Button 'Read Signature') läuft der Mega 
auch wieder an und liefert Rechteck(e). Beim nächsten Reset wird wieder 
neu gewürfelt. Auf ca. 10 fehlgeschlagene Startversuche kommt ein 
erfolgreicher Anlauf.

Überbrücke ich Reset mit einer Drahtbrücke auf V+ stellt sich keine 
Veränderung mehr ein.

Der Quarzoszi läuft jedesmal, die Versorgungsspannung sieht im Oszi auch 
'glatt' aus.

Bisher habe ich solche Probleme noch nie gehabt und 10k Ohm Pull-Up 
hatte bisher auch immer funktioniert.

Was kann die Ursache sein?

Gruß,
Olaf

von Chris (Gast)


Lesenswert?

Meiermann schrieb:
> Da ich noch Änderungen am Programm vornehme [...]
Wenn sich an der Hardware nichts geändert hat, würde ich die 
Fehlerquelle wohl bei der geänderten Software vermuten.

Versuch es doch mal mit einem absoluten Minimalprogramm, dass lediglich 
einen Pin endlos toggelt. Wenn der Mega88 dann immer noch das gleiche 
Verhalten zeigt, versuche einen anderen und schaue was der macht.

von Meiermann (Gast)


Lesenswert?

Derzeit habe ich nur die Minimalversion laufen: Ein 16-Bit-Timer, 
Interrupt
1
ISR(TIMER1_COMPA_vect)
2
{
3
  PORTC &= ~(1<<Rect_Puls);    // Port-Pin-C (Puls) ausschalten
4
}
und
1
ISR(TIMER1_COMPB_vect)
2
{
3
  TCCR1B = 0;
4
  OCR1A = DatenBank[ BankNum ].CompA;
5
  OCR1B = DatenBank[ BankNum ].CompB;
6
  TCNT1 = DatenBank[ BankNum ].TimerWert;
7
  TCCR1B = DatenBank[ BankNum ].TimerMode;
8
  PORTC |= (1<<Rect_Puls);    // Port-Pin-C (Puls) einschalten
9
}

Im Hauptprogramm initialisiere ich nur die Struct-Werte (Datenbank), 
lege die Werte für den ersten Timer-Durchlauf fest und gehe dann in eine 
Endlosschleife.

Ein ganz altes Programm ohne Interrupts nur mit Assembler 
Bit-Setzen/Löschen und NOPs dazwischen verhält sich auch nicht anders 
(was das Anlaufverhalten angeht).

Zwischenzeitlich habe ich mal alle Lötpunkte abgesaugt und neu 
verlötet...

Ich könnte zwar eine ganz neue Platine beginnen, mit neuen Bausteinen, 
aber auf Dauer wäre es doch besser den Fehler zu finden...

von Paul (Gast)


Lesenswert?

Ist der Watchdog deaktiviert?

von Chris (Gast)


Lesenswert?

Meiermann schrieb:
> Ein ganz altes Programm ohne Interrupts nur mit Assembler
> Bit-Setzen/Löschen und NOPs dazwischen verhält sich auch nicht anders
> (was das Anlaufverhalten angeht).

Hm, ok. Das spricht doch dann eher für ein Hardwareproblem. Dann lade 
doch bitte mal dein Schaltbild hoch und ggf. Bilder vom Aufbau.

von Meiermann (Gast)


Lesenswert?

Einen Watchdog nutze ich nicht.
Aufbau ist derzeit immernoch Lochraster, ganz unspektakulär mit 
Quarzoszi an XTAL1 und einem DCDC-Wandler.

Ich habe in der Zwischenzeit mal einen anderen Maga auf Steckbrett 
aufgebaut, der hat diesen Defekt nicht, und dann alles nochmal auf einer 
zweiten Platine, auch komplett mit Peripheriebauteilen und allem, dieser 
Aufbau funktioniert fehlerfrei.

Scheint also wirklich ein Hardwaredefekt zu sein. Wäre wirklich 
interessant die genaue Ursache zu kennen, allerdings sehe ich auch 
nicht, wie ich da dran kommen könnte.

Gruß,
Olaf

PS:Sorry für die späte Antwort.

von Peter D. (peda)


Lesenswert?

Meiermann schrieb:
> Zufällig ist meine Start-Up-Zeit auch auf 16 ms eingestellt.

Ist für Quarzbetrieb etwas knapp.
Nimm besser die längste (64ms + ).

Meiermann schrieb:
> Nach einem Tausch des Reset-Pull-Ups von 10k auf 3k lief der Mega dann
> problemlos

Ein Widerstand allein läßt den Reset immer noch ne gute Antenne sein.
Entweder direkt an VCC (wenn kein ISP nötig) oder den Klassiker: 10k an 
VCC, 100nF an GND.


Peter

von Eingehirner (Gast)


Lesenswert?

10MHz erscheinen mir etwas viel, ist das für deine AVR-Version noch 
zulässig? (Es gibt welche, namentlich die L-Versionen, die nur 8MHz 
vertragen...) Ansonsten kann es bei 10MHz auch einfach eine zu lange 
Leitung zwischen Quarz, Kondensatoren und µC sein. Mir klingt dein 
Problem jedenfalls danach, daß sich der µC evtl. manchmal "verhaspelt".

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Meiermann schrieb:

> Aufbau ist derzeit immernoch Lochraster, ganz unspektakulär mit
> Quarzoszi an XTAL1 und einem DCDC-Wandler.

Mehr nicht? Keine 100nF-Kondensatoren über die Versorgungsspannungen?

Gruß,

Frank

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.