Forum: Mikrocontroller und Digitale Elektronik Simpelstes Prog funktioniert nicht ATMega32


von Dirk (Gast)


Lesenswert?

hallo,

Ich habe folgendes Programm geschrieben:
1
#include <stdint.h>
2
#include <avr/io.h>
3
4
int main( void )
5
{
6
  DDRA=255;
7
  PORTA=0;
8
  DDRD=0;
9
  PORTD=0;
10
  while(1){
11
    PORTA=PIND;
12
  }
13
    
14
  return 0;
15
}
Wenn ich es per ISP hochlade funktioniert es nicht. Wenn ich es per JTAG 
im AutoStep ausführe funktioniert es. Wenn es mit JTAG laufen lasse 
(Run) funktioniert es wieder nicht. confused

Wenn ich nach dem Run auf pause drücke befinde ich mich im disassembler 
bei data or unknown opcode.

Was mach ich falsch???

Danke für eure HIlfe

von Andreas R. (blackpuma)


Lesenswert?

Ich weiß nicht wie es beim ATMega ist aber bei PIC musst du ein Config 
word mitgeben in dem steht welcher Oszillator, Watchdog on oder off, 
usw...

von Dirk (Gast)


Lesenswert?

Ja das macht man im AVR-Studio über eine GUI
(Fuse-Settings (häkchen bei:
 OCDEN
 JTAG
 SPIEN
 Bootflash section size = 2048
 BODLEVEL=1
 Ext. Crys/Res Hi Freq 16kCK+4ms)

Einstellungen in den Proj. Options:
device: atmega32
Freq: 16000000Hz
Opt -Os


Ich verstehe das einfach nicht -hmmm

von Andreas R. (blackpuma)


Lesenswert?

Ja das kann ich bei meinem IDE MPLAB auch einstellen aber machen tut er 
es net. Ich muss im Code das reinschreiben.

von Johannes M. (johnny-m)


Lesenswert?

Andreas Riegebauer wrote:
> Ja das kann ich bei meinem IDE MPLAB auch einstellen aber machen tut er
> es net. Ich muss im Code das reinschreiben.
Beim AVR ist das aber anders! Die Fuses werden separat programmiert.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Vielleicht mal bei Port D die die Pullups einschalten? PORTD = 0xff;

von nixversteh (Gast)


Lesenswert?

Hmmm... JTAG hört sich an wie MEGA16 oder größer.
Hab's mal spaßeshalber auf 'nen MEGA32 geworfen und kann die Aussage 
"funktioniert nicht" nicht nachvollziehen.
Ich habe allerdings auch keine Pegel an die Port's angelegt/geprüft.
Ergänze Deine "while"-Schleife mal um folgenden Befehl:
1
asm volatile ("nop" ::);
Nicht, daß da wieder was wegoptimiert wird.
Sieht auch im "AutoStep" besser aus...

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

aaaalso

Es scheint wohl daran zu liegen das der ATMega 32 zumindest was den XTAL 
Eingang angeht nicht mehr ganz in Ordnung ist..

Benutze ich den internen Oszilator funktioniert das Programm, schalte 
ich auf Ext. crystal hi freq um funktioniert das Programm nicht mehr.

Mit einem anderen Mega funktioniert es auch mit dem ext. crystal.

Ich habe mal mit dem DSO XTAL2 (gelb) und XTAL1 (blau) aufgezeichnet; 
jeweils an einem ATMega an dem es funktioniert und an dem es nicht 
funktioniert. Man sieht in der Ampl. schon einen deutlichen Unterschied, 
aber ich finde so schlecht sieht das CLK Signal jetzt auch wieder nicht 
aus.

Naja vllt. liest das ja nochmal jmd. der dazu was sagen kann.
(Warum das CLK singal bei dem nicht funktionierenden zu schlecht ist, 
woran man das erkennt etc. Wie ich den ATMega / XTAL Eingang kaputt 
gemacht haben könnte...)

Trotzdem danke für eure Lösungsansätze

von nixversteh (Gast)


Lesenswert?

Ist das Fuse-Bit "CKOPT" 'programmed'? (scheiß Denglisch)

von Johannes M. (johnny-m)


Lesenswert?

nixversteh wrote:
> Hmmm... JTAG hört sich an wie MEGA16 oder größer.+
Wie, Du hast nichtmal den Betreff gelesen?

> Ergänze Deine "while"-Schleife mal um folgenden Befehl:
>
1
> asm volatile ("nop" ::);
2
>
> Nicht, daß da wieder was wegoptimiert wird.
Nö. Das ist unsinnig. Da wird nichts wegoptimiert.

@Dirk:
Die Bilder deuten tatsächlich darauf hin, dass CKOPT nicht programmiert 
sein könnte.

von Dirk (Gast)


Lesenswert?

For resonators, the maximum frequency is 8 MHz with CKOPT unprogrammed 
and
16 MHz with CKOPT programmed.

ist ein Crystal ein Resonator?
dann sollte es ja wirklich geproggt werden...
Hab ich noch nie gemacht ;)

Aber auch das proggen von CKOPT ändert nichts..

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Da schwingt garnichts, die Amplitude muesste 5V betragen => Fuses und 
Quarz pruefen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.