Hallo Community,
ich habe vor mir einen ATMega128 liegen, dieser ist über einen Original
Atmel JTAGICE mk2 an meinem PC, worauf AVRStudio4 läuft.
Da ich das erste mal mit diesem Debugger arbeite vermute ich den Fehler
dort, allerdings ist die Hardware auch gerade frisch, deshalb kann ich
dort Fehler nicht 100% ausschliessen.
Kommunikation zwischen AtMega128 und PC läuft über JTAG, funktioniert
auch einwandfrei, ich kann im Debug-Fenster Ausgänge per Hand setzen und
die Hardware schaltet diese dann auch.
Nun wollte ich alles durchtesten und habe folgendes kleine Testprogramm
geschrieben:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | volatile unsigned int Counter;
|
5 | volatile unsigned int i;
|
6 |
|
7 | ISR( TIMER0_OVF_vect )
|
8 | {
|
9 | Counter++;
|
10 |
|
11 | if( Counter == 10000 ) {
|
12 | i++;
|
13 | PORTC=(1<<i);
|
14 | if (i==7) i=0;
|
15 | Counter = 0;
|
16 | }
|
17 | }
|
18 |
|
19 | int main()
|
20 | {
|
21 | Counter = 0;
|
22 | DDRA=0xff;
|
23 | DDRB=0xFF;
|
24 | DDRC=0xff;
|
25 | PORTA=0x01;
|
26 | PORTB=0x01;
|
27 | PORTC=0;
|
28 |
|
29 |
|
30 |
|
31 | TCCR0 = ( 1 << CS02 ) | ( 1 << CS00 ); // Teiler: 1024
|
32 | TIMSK = ( 1 << TOIE0 ); // Overflow Interrupt einschalten
|
33 | sei(); // Interrupts an
|
34 |
|
35 | while( 1 ){}
|
36 |
|
37 | }
|
Dieses soll einfach nur den PortC der Reihe nach durchschalten.
Bei Debuggen passiert folgendes (Ich gehe mit F11 Schritt für Schritt
jede Zeile durch):
Programm läuft bis zum sei();. Drücke ich dann ein weiteres Mal F11
bleiben die Schaltflächen im AVR-Studio grau, es passiert gar nichts und
nach ein paar Sekunden macht anscheinend der Prozessor einen Reset, der
Programmzeiger ist wieder am Anfang und ich kann von vorne beginnen.
Wo liegt mein Fehler?