mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fuses und EEPROM - zusammenhängender Speicherbereich ?


Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe folgendes Problem:

Programmiere einen Mega2561. Das Programm beschreibt u.a. das EEPROM.

Nach bestimmten Codemodifizierungen (rund um die EEPROM-Routinen) 
startet das Programm nicht mehr 8definitiv ein Boot-Problem).
Nehme ich die Änderungen zurück, ist alles wieder o.k. - der MC ist also 
hardwaretechnisch o.k..

Auch beobachte ich, dass der EEPROM - Inhalt durchgängig von xFF auf x00 
verändert worden ist, obwohl ich einen solchen Befehl nicht programmiert 
hatte.
Der Fehler trat definitiv dann auf, wenn ich die Sprungadresse "REPEAT:" 
(mit goto) in einer Function mit EEPROM Verarbeitung hatte (ja, ja, ich 
weiß, gotos sind out, aber ich wollte nur etwas austesten - keine Dauer 
Implementierung.)
Nach Ausschalten der Optimierung lief das Programm übrigends einwandfrei 
..

Ohne tiefer nach Fehlern zu forschen, eine generelle Frage:

Ist es möglich, durch falsch programmierte EEPROM Aufrufe sich die Fuses 
zu zerschießen ? Grenzen die Speicheradressen aneinander, oder sind sie 
gegeneinander geschützt ?

Danke.

Autor: dreilira (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
soweit mir bekannt, kann ein Mega/Tiny sich nicht selbst die Fuses 
verändern, das geht nur über einen externen Programmer ,ISP oder HV.

Gruß
Ralf

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dreilira schrieb:
> Hi,
> soweit mir bekannt, kann ein Mega/Tiny sich nicht selbst die Fuses
> verändern, das geht nur über einen externen Programmer ,ISP oder HV.
>
> Gruß
> Ralf

Was ist mit CKDIV8 ? Kann von außen und auch vom Programm gesetzt werden 
(wobei Porgramm vorrangig ist).

Grüße

Autor: SF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was ist mit CKDIV8 ? Kann von außen und auch vom Programm gesetzt werden
>(wobei Porgramm vorrangig ist).
Die Fuse CKDIV8 setzt nur das interne CLKPR – Clock Prescale Register. 
Dessen Inhalt kann später die Software verändern. Es ist aber nicht 
möglich, das die Software den Wert der CKDIV8 Fuse verändert!

>The CKDIV8 Fuse determines the initial value of the CLKPS bits. If CKDIV8
>is unprogrammed, the CLKPS bits will be reset to “0000”. If CKDIV8 is
>programmed, CLKPS bits are reset to “0011”, giving a division factor of 8
>at start up.

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.