Hau dir ins Programm gleich noch eine Möglichkeit rein, wie du erkennen
kannst, dass der µC resettet wird.
Einfach am Anfang in main irgendein Licht einschalten und nach 1 Sekunde
wieder ausschalten (_delay_ms dafür benutzen).
Damit ist dann auch sichergestellt, dass du es nicht übersehen kannst,
wenn dir dein Schaltvorgang die Versorgungsspannung des µC in die Knie
zwingt und der µC resettet wird (was dann ebenfalls dazu führen würde,
dass du optisch nie sehen würdest, dass am PORTA die 0x05 anliegen, weil
das einfach zu schnell geht vom Durchschalten bis zum Reset)
Also zb ungefähr so
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <util/delay.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | DDRA = 0xff;
|
8 |
|
9 | PORTA = 0x07;
|
10 | _delay_ms( 1000 );
|
11 |
|
12 | PORTA = 0x01;
|
13 |
|
14 | // Timer 0 konfigurieren
|
15 | TCCR0 = (1<<CS01); // Prescaler 8
|
16 | // Overflow Interrupt erlauben
|
17 | TIMSK |= (1<<TOIE0);
|
18 |
|
19 | // Global Interrupts aktivieren
|
20 | sei();
|
21 |
|
22 | while(1)
|
23 | {
|
24 | /* Sonstige Aktionen */
|
25 | }
|
26 | }
|
27 |
|
28 | ISR (TIMER0_OVF_vect)
|
29 | {
|
30 | PORTA = 0x05;
|
31 | }
|