ATMEGA1280 springt nach Reset nicht an Programmanfang

Gast #815906
Lesenswert?

Hallo,

nachdem ich schon 2 Tage mit diesem Problem kämpfe, wollte ich fragen ob 
mir hier jemand helfen kann.

Ich habe einen ATMEGA1280 und programmiere in in C mit dem AVR Studio 
und GCC.

Mein Problem: Nach einem Reset springt der MC an irgendeine Stelle und 
tut nichts, anstatt an den Programmanfang zu springen. Ich verwende 
keinen Bootloader.

Wie müssen hier die Fuse Bits richtig gesetzt werden? Boot vector, Boot 
flash section??

Wie bringe ich dem MC bei dass er nach dem Reset das Programm frisch 
startet?

mfg
Stefan
Gast #815928
Lesenswert?

Stefan,

benutzt du avrstudio um die fuses zu setzen ?
ist immer gut, du gibst deine verwendete toolchain mit an...

Wenn alle fuses richtig gesetzt sind, könnte auch ein "unsauberes" power 
on der versorgungsspannung dafür sorgen das der ProgramCounter irgendwo 
steht.
Ergo, einen spannungsmonitor verwenden (z.B. etwas wie ZSM560, oder 
maxim, oder TI, oder von Atmel...), der die *Reset leitung erst 
freigibt, wenn Vcc sicher in einem vernünftigen Bereich steht.

Ist generell bei jedem uC-Design zu empfehlen.

Gruss, tom.
Moderator Persönliche Seite #815958
Lesenswert?

Einen Sprung auf einen nicht initialisierten Bootloader würde man
im praktischen Leben gar nicht bemerken.  Die CPU kann nämlich gar
nicht einfach ,,nichts tun'', sondern sie wird sofort beginnen, den
Flash zu lesen und die entsprechenden Befehle abzuarbeiten.  Die
0xFFFF des nicht initialisierten ROMs wirken dabei wie NOPs, sodass
der PC nach kurzer Zeit bei 0 angekommen sein wird und ganz normal
mit der Abarbeitung des Programms beginnt.
Gast #815966
Lesenswert?

@Andreas: Um ehrlich zu sein keine Ahnung, ich vermute die FUSE Bits 
sind nicht richtig gesetzt, habe BOOTSZ=00 (default), wenn ich den Boot 
Reset Vector an oder ausschalte bewirkt es keine Änderung.

Muss ich im C ähnlich wie in Assembler einen Jump nach dem Rest an den 
Anfang des Programmcodes setzten?

Tut mir leid bin noch ziemlicher MC Neuling
Gast #816660
Lesenswert?

Reset wird über einen Taster ausgelöst, der am WD angeschlossen ist, 
beobachtet man die Spannung der Reset Leitung funktioniert das auch 
korrekt, geht auf GND und dann wieder stabil auf 3,3V.

Kann mir jemand kurz die korrekte Einstellung der Fuse Bits erläutern, 
die nötig sind, damit der MC normalerweise nach dem Reset ins Programm 
einsteigt?


Vielen Dank
Moderator Persönliche Seite #816726
Lesenswert?

Stefan wrote:

> Kann mir jemand kurz die korrekte Einstellung der Fuse Bits erläutern,
> die nötig sind, damit der MC normalerweise nach dem Reset ins Programm
> einsteigt?

Jede beliebige, sofern sie in der Lage ist, dass der Controller auch
taktet.

Was soll der Sinn eines Resets sein, wenn danach nicht das Programm
abgearbeitet wird?

Du musst den Fehler schon woanders suchen, sehr wahrscheinlich in
deiner Hardware.  Du lässt dir aber jedes Stückchen an Information
über deine Umgebung aus der Nase ziehen, so wird das nichst, so kann
dir keiner helfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren