mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA1280 springt nach Reset nicht an Programmanfang


Autor: Stefan (Gast)
Datum:

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

Autor: tom (Gast)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, bei halbwegs vernünftigem Anstieg der Betriebsspannung
funktioniert der Power-On-Reset eines AVR absolut brauchbar.

Außer der Toolchain wäre der Hardwareaufbau noch interessant.
,,Vergessene'' Stützkondensatoren können seltensame Effekte
hervor rufen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich verwende das AVR Studio zusammen mit dem JTAGICE mkII um die FUSE 
Bits zu setzen.
Die Reset Leitung hängt an einem externen Watchdog(MAX708), der VCC 
überwacht.

mfg
Stefan

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist diese "irgendeine Stelle" zufällig immer die gleiche und zwar exakt 
am Anfang der Bootsektion?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Mega1280 braucht keinen externen Watchdog, der Vcc überwacht. 
Schalte mal den internen Brown-Out Detektor an.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Stefan (Gast)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Woher weisst du, dass er nach Reset an der falschen Stelle startet?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei normalem Start (dh VCC an/aus) schalte ich 2 LEDs an, nach einem 
Reset gehen diese nicht an...

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wird der Reset denn ausgelöst?

Autor: Stefan (Gast)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schnell läuft der 1280?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Über QuartzOszi mit 8MHz

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:
> Bei normalem Start (dh VCC an/aus) schalte ich 2 LEDs an, nach einem
> Reset gehen diese nicht an...

Hängt dieses Anschalten von irgendwelchen Bedingungen ab?
Nicht initialisierte Variablen wären dann eine Möglichkeit.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, habe jetzt meine komplette externe Beschaltung des Reset Pins 
entfernt und den Reset Pin mit 10k an VCC gezogen, auch so funktioniert 
der Reset nicht.

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Stefan,

testest du den Reset mit angeschlossenem ISP oder JTAG Programmer?
Versuch doch mal dein Programm zu flashen, den Programmer trennen und 
dann den Reset. Nur so ne Idee...

Gruss Nico

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.