Forum: Mikrocontroller und Digitale Elektronik AVR-Studio - Brennvorgang vereinfachen


von HaraldDräger (Gast)


Lesenswert?

Hallo,

bisher brenne ich im AVR-Studio meine ATmegas auf folgende Weise:

Erst die Fuse-Bits, dann das Programm und dann die Lock-Bits.

Kann man diesen Prozess im AVR-Studio optimieren und alle drei Schritte 
voreinstellen und dann in einem Arbeitsgang ausführen/brennen?

von npn (Gast)


Lesenswert?

HaraldDräger schrieb:
> Hallo,
>
> bisher brenne ich im AVR-Studio meine ATmegas auf folgende Weise:
>
> Erst die Fuse-Bits, dann das Programm und dann die Lock-Bits.
>
> Kann man diesen Prozess im AVR-Studio optimieren und alle drei Schritte
> voreinstellen und dann in einem Arbeitsgang ausführen/brennen?

Ja, indem man alles (auch die Fuses und Lockbits) mit in den Quelltext 
schreibt. Und dann brennt man nicht das Hex-File, sondern wählt das 
*.elf-File aus. Dort ist nach der Compilierung alles enthalten.
Und wenn du noch einen Schritt weiter gehen willst, gehst du nicht über 
den Brenn-Dialog, sondern suchst in der Symbolleiste einen kleinen 
grünen Pfeil, und der heißt "Start without debugging (CTRL-ALT-F5)"
Damit brauchst du nur noch einen einzigen Klick für das Brennen.

von HaraldDräger (Gast)


Lesenswert?

Super, Danke für die schnelle Antwort und die Informationen!

npn schrieb:
> Ja, indem man alles (auch die Fuses und Lockbits) mit in den Quelltext
> schreibt.

In welcher Form kann man die Fuses und Lockbits in den Quelltext mit 
aufnehmen (oder wo kann man das nachgucken)?

von npn (Gast)


Lesenswert?

HaraldDräger schrieb:
> Super, Danke für die schnelle Antwort und die Informationen!
>
> npn schrieb:
>> Ja, indem man alles (auch die Fuses und Lockbits) mit in den Quelltext
>> schreibt.
>
> In welcher Form kann man die Fuses und Lockbits in den Quelltext mit
> aufnehmen (oder wo kann man das nachgucken)?

Du schreibst einfach in den Quelltext (main.c) die Werte
folgendermaßen rein:

FUSES=
{
    .low = 0xE2,
    .high = 0xD7,
    .extended = 0xF9,
};

LOCKBITS = (0xFC);

Die einzelnen Werte mußt du auch nicht mit irgendwelchen 
Fuse-Calculatoren berechnen, die auch noch eventuell die Bitwerte 
invertiert ausgeben.
Stell einfach im Programmierdialog unter Fuses die entsprechenden 
Auswahlfelder ein (BOOTSZ, BOOTRST usw...) und darunter siehst du dann 
die Inhalte der "Fuse Register". Diese Werte trägst du dann in deinen 
Quelltext ein. Genau das gleiche bei den Lockbits. In diesem Beispiel 
hat "0xFC" beim ATMega88 die Bedeutung "PROG_VER_DISABLED".
Das ist schon alles. Aber denk dran, im *.hex stehen diese Werte nicht 
drin, nur im *.elf!

von npn (Gast)


Lesenswert?

Achso, nachgucken kann man das in der GCC-Dokumentation. Das hattest du 
ja auch noch gefragt :-)

von HaraldDräger (Gast)


Lesenswert?

Super, vielen herzlichen Dank!!!!!!
Werde es gleich ausprobieren.

npn schrieb:
> Aber denk dran, im *.hex stehen diese Werte nicht
> drin, nur im *.elf!

Ja, werde aufpassen, Danke für den Hinweis!

von npn (Gast)


Lesenswert?

HaraldDräger schrieb:
> Super, vielen herzlichen Dank!!!!!!
> Werde es gleich ausprobieren.
>
> npn schrieb:
>> Aber denk dran, im *.hex stehen diese Werte nicht
>> drin, nur im *.elf!
>
> Ja, werde aufpassen, Danke für den Hinweis!

Und nicht vergessen, im Programmierdialog die Häkchen für Fuses und 
Lockbits zu setzen. Mußt du aber nur einmal am Anfang machen. Wenn du 
das Projekt schließt und später wieder öffnest kannst du gleich loslegen 
mit:

- Quelltext ändern

- kleinen grünen Pfeil drücken
  (wenn der Quelltext geändert wurde, wird automatisch
  vor dem Programmieren das Projekt neu übersetzt,
  sonst nicht)

- fertig!

von abc (Gast)


Lesenswert?


von HaraldDräger (Gast)


Lesenswert?

Supi, Danke, funktioniert prima - bin begeistert!

Kann man auch noch den Controllertyp in den Quelltext übernehmen?

von npn (Gast)


Lesenswert?

HaraldDräger schrieb:
> Supi, Danke, funktioniert prima - bin begeistert!
Freut mich, daß es klappt :-)
>
> Kann man auch noch den Controllertyp in den Quelltext übernehmen?
Da bin ich im Augenblick überfragt.

von HaraldDräger (Gast)


Lesenswert?

npn schrieb:
>> Kann man auch noch den Controllertyp in den Quelltext übernehmen?
> Da bin ich im Augenblick überfragt.

Ist auch nicht so wichtig, hätte mich einfach interessiert.


Noch mal vielen Dank für deine Hilfe!!!

von npn (Gast)


Lesenswert?

HaraldDräger schrieb:
> npn schrieb:
>>> Kann man auch noch den Controllertyp in den Quelltext übernehmen?
>> Da bin ich im Augenblick überfragt.
>
> Ist auch nicht so wichtig, hätte mich einfach interessiert.
Den Controllertyp stellst du ja sowieso in den Projekt-Einstellungen 
ein, insofern ist das Einfügen in den Quelltext auch nicht nötig.
>
> Noch mal vielen Dank für deine Hilfe!!!
Gerne doch! :-)

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.