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?