www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Simpelstes Prog funktioniert nicht ATMega32


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

Ich habe folgendes Programm geschrieben:
#include <stdint.h>
#include <avr/io.h>

int main( void )
{
  DDRA=255;
  PORTA=0;
  DDRD=0;
  PORTD=0;
  while(1){
    PORTA=PIND;
  }
    
  return 0;
}
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

Autor: Andreas Riegebauer (blackpuma)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Riegebauer (blackpuma)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Autor: nixversteh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
asm volatile ("nop" ::);
Nicht, daß da wieder was wegoptimiert wird.
Sieht auch im "AutoStep" besser aus...

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: nixversteh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das Fuse-Bit "CKOPT" 'programmed'? (scheiß Denglisch)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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:
>
> asm volatile ("nop" ::);
> 
> 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.