Hallo zusammen,
ich stehe auf dem Schlauch.
Beim Anlegen der Versorgungsspanung 12V (10µF auf 12V Seite) vor 78L05
(100nF auf 5V Seite) startet das Programm auf dem Mega8 nicht. An jedem
der 3 PWM Ausgänge sind LEDs angeschlossen. Deren Glimmen (das Programm
läuft zu diesem Zeitpunkt nicht) deutet darauf hin, dass
1 | OCR1A = 0;
|
2 | OCR1B = 0;
|
3 | OCR2 = 0;
|
4 | if(OCR1A == 0){TCCR1A &= ~(1<<COM1A1);}
|
5 | else{TCCR1A |= (1<<COM1A1);}
|
6 | if(OCR1B == 0){TCCR1A &= ~(1<<COM1B1);}
|
7 | else{TCCR1A |= (1<<COM1B1);}
|
8 | if(OCR2 == 0){TCCR2 &= ~((1<<WGM20) | (1<<WGM21));}
|
9 | else{TCCR2 |= ((1<<WGM20) | (1<<WGM21));}
|
alle OCRx auf Null sind, jedoch die Ausgänge nicht abgeschaltet sind.
Dieser Teil befindet sich bereits in void main(), dort kommt der Mega8
also nicht an.
Ich habe Test durchgeführt mit 100nF zwischen GND und Reset, dann
zusätzlich mit 10k Pullup an Reset, brachte keine Abhilfe. Nur nach
manueller Betätigung des Reset Tasters (Reset an GND) startet und läuft
das Programm.
16MHz externer Quarz mit 18 pF Lastkapazitäten.
Watchdog ist aus.
CKOPT ist aktiviert (also starke Pegel). Der Quarz schwingt auch, sobald
Spannung anliegt, nur das Programm wird nicht gestartet.
SUT_CKSEL steht auf "Ext. Crystal/Resonator High Freq.; Start-up time:
258 CK + 64 ms".
Das seltsame: Warte ich eine Weile (geschätzt 2 Minuten) nach Anlegen
der Spannung, startet der Mega8 von selbst. Das verzögerte
selbstständige Starten geht etwas schneller, wenn bei SUT_CKSEL z.B.
"Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms"
ausgewählt ist.
Das angehängte Bild zeigt die Spannung am Resetpin (gelb) und die
Versorgungsspannung (blau). Bei dem 2V Spannungsplateau verbleibt die
Spannung übrigens auch kurz, wenn ich die Versorgungsspannung trenne.
Im Programm habe ich am Beginn von void main() schon mit
long_delay(1)..usw erfolglos experimentiert.
Hat jemand eine Idee, warum ich den Mega8 beim Anlegen der
Versorgungsspannung fast jedes Mal manuelle resetten muss, damit er
läuft?