Forum: Mikrocontroller und Digitale Elektronik Funktionen im Bootloader werden ohne Aufruf ausgeführt


von Michael (Gast)


Lesenswert?

Hallo,

ich habe zwei Funktionen zum schreiben und lesen des Flashspeichers im 
BOOTLOADER eine ATMega128 platziert. Wenn ich nun das Programm mittels 
AVR Studio in den Mikrocontroller lade, werden die Funktionen schon 
einmal ausgeführt ohne das ich das Programm gestartet habe. Die Fuse 
BOOTRST ist aus. Woran könnte das liegen?

Vielen Dank und viele Grüsse

Michael

von Peter D. (peda)


Lesenswert?

Michael wrote:

> Woran könnte das liegen?

Fehler in Zeile 13 ?


Peter

von Michael (Gast)


Lesenswert?

Um in Erfahrung zu bringen warum irgendein Code ausgeführt wird, weil er 
im BOOTLOADER steht, bevor das Programm startet, soll ich diesen hier 
hereinstellen oder was meinst du mit dieser Antwort?

von Olaf S. (olaf2001)


Lesenswert?

Michael wrote:
> soll ich diesen hier hereinstellen

Gut aufgepaßt. Der µC verhält sich richtig, daran besteht kein Zweifel. 
Das Problem muß in deinem Code liegen - und ohne den zu sehen...

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Also, der Code ist im Anhang. Nachdem der Code in den Speicher 
gedownloaded wurde vom AVR Studio steht im Flash an der Stelle 0x0192 
schon der Wert 0xAA.

Diese beiden Funktionen wurden in den BOOTLOADER gelegt.

ReadFlashByte                    CODE      0001DFFE
WriteFlashByte                   CODE      0001E054

Wenn ich die Funktion WriteFlashByte in der main auskommentiere, dann 
wird die Speicherstelle nicht überschrieben.

von Peter D. (peda)


Lesenswert?

Michael wrote:
> Also, der Code ist im Anhang. Nachdem der Code in den Speicher
> gedownloaded wurde vom AVR Studio steht im Flash an der Stelle 0x0192
> schon der Wert 0xAA.

Nein, es steht erst einige ms später drin, nachdem das Programm 
ausgeführt wurde.

Ein MC hat keinen Startbutton, Programme werden ausgeführt, sobald 
Spannung anliegt.
Auch jeder SPI-Zugriff macht implizit einen (externen) Reset.

Wenn Du also Fuse, Lockbits, Flash, EEPROM lesen, schreiben ausführst, 
wird jedesmal das Programm gestartet (= 9 Schreibzyklen verbraucht).

Ein unbedingtes Schreiben nach jedem Reset ist sehr schlecht für den 
Flash (begrenzte Zahl an Schreibzyklen).


Peter

von Michael (Gast)


Lesenswert?

Hallo,

die main brauche ich nur zum testen. Später wird das noch anders.
Ich hatte vergessen den Flash vor dem beschreiben zu löschen, deshalb 
stand es noch so drin. Jetzt funktioniert es. Danke

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.