Hallo Zusammen,
ich habe folgende Hardware zwei Boards jeweils mit einem Mega128 zur
Programmierung verwenden ich AVR Studio mit GCC.
Programmiersprache C.
Ich habe folgendes programmiert
1 | main {
|
2 | unsigned int r;
|
3 | DDRB |= (1<<DDB0);
|
4 | DDRB |= (1<<DDB1);
|
5 | DDRB |= (1<<DDB2);
|
6 | DDRB |= (1<<DDB3);
|
7 | DDRB |= (1<<DDB4);
|
8 | DDRB |= (1<<DDB5);
|
9 | DDRB |= (1<<DDB6);
|
10 | DDRB |= (1<<DDB7);
|
11 | for(;;) {
|
12 | if(r==30000){
|
13 | PortB ^= (P1<<PB0);
|
14 | PortB ^= (P1<<PB1);
|
15 | PortB ^= (P1<<PB2);
|
16 | PortB ^= (P1<<PB3);
|
17 | PortB ^= (P1<<PB4);
|
18 | PortB ^= (P1<<PB5);
|
19 | PortB ^= (P1<<PB6);
|
20 | PortB ^= (P1<<PB7);
|
21 | }
|
22 | r++;
|
23 | }
|
24 | }
|
Beim ersten Board habe ich nur eine ISP Schnittstelle daher kann ich nur
den Mega programmieren, aber das Programm läuft.
Spiele ich nun das gleiche Programm auf mein zweites Board läuft das
Programm nicht los.
Habe nun dank der vorgesehenen JTAG Schnittstelle den JTAGICE2 mal
verwendet und das programm im Debug Mode laufen lassen.
Hierbei muss ich feststellen das das Programm läuft bis zur Stelle
"DDRB |= (1<<DDB7);" dann gibt es zwei Möglichkeiten.
1 Möglichkeit:
Der Ablauf bricht ab und Beginnt wieder am Anfang zu 99% der Fall.
2 Möglichkeit:
Die Bits 0 bis 6 werden gesetzt wie programmiert beim Bit7 springt das
Programm weiter jedoch werden alle Bits zurückgesetzt oder gesetzt
fünfzig fünfzig.
Dann läuft aber auch das Programm.
An was kann das liegen and Pin ist ein Transistor angeschlossen der ein
Relai schaltet.
Beim ersten Board habe ich einen Treiberbaustein der eine LED ansteuert
da ich dieses als Testboard verwende.
Fuse Bits sind auf beiden Boards gleich.
Hat jemand eine Idee
Danke
TOM