Optiboot Pinkonfiguration für ATmega328P

Gast #6648538
Lesenswert?

Hallo,

ich habe den Optiboot-Bootloader (Version 8) für meine Anwendung so 
modifiziert, dass gleich nach dem Start einige Pins als Ausgänge 
konfiguriert werden und eine kurze Signalfolge ausgegeben wird.
Das funktioniert auch problemlos auf einem ATmega328P. Allerdings wird 
die Pinkonfiguration im Laufe des weiteren Bootprozesses irgendwo wieder 
rückgängig gemacht. Um die Pins im User-Programm (erzeugt mit 
Arduino-IDE) nutzen zu können, müssen sie erneut als Ausgänge 
konfiguriert werden. Das ist zwar nicht wirklich ein Problem, aber ich 
hatte gedacht, wenn sie schon mal passend konfiguriert sind, bleibt das 
auch so.

Vielleicht bin ich betriebsblind, aber ich finde im Bootloader keine 
Stelle, wo die DDR-Register erneut geschrieben werden. Geschieht das 
vielleicht standardmäßig in der Arduino-Anwendung? Kann man das 
irgendwie verhindern?
Gast #6648540
Lesenswert?

Ich würde es dabei belassen. Niemand erwartet, dass der Bootloader 
irgendwelche Register in einem nicht-standard Zustand hinterlässt. Das 
würde bloß Verwirrung stiften.

Jetzt magst du noch denken "ich weiß was ich gemacht habe, das kann mich 
nicht verwirren". Doch schon in wenigen Jahren wirst du es vergessen, 
wenn du dich nicht täglich damit befasst.

Bei der Entwicklung ist es wie im Straßenverkehr: Jede überraschende 
Handlung ist zu vermeiden.
Gast #6648548
Lesenswert?

Vancouver schrieb:
> Geschieht das
> vielleicht standardmäßig in der Arduino-Anwendung? Kann man das
> irgendwie verhindern?

Testweise:
In dem du loop() und setup() weglässt, und stattdessen eine eigene 
main()  verwendest.
Dann fasst das Arduino Framework keine Hardware mehr an.




Wobei ich dazu sagen möchte:
Der Bootloader hat nur einen Job.
Und sollte die Hardware so hinterlassen, wie er sie vorgefunden hat.
Gast #6648556
Lesenswert?

Stefan ⛄ F. schrieb:
> Niemand erwartet, dass der Bootloader
> irgendwelche Register in einem nicht-standard Zustand hinterlässt.

Ich gebe dir recht, wenn es sich um einen normalen Arduino handelt, der 
für verschiedene Anwendungen verwendet werden kann. In meinem Fall ist 
der Prozessor aber fest verbaut, und die Pins sind immer Ausgänge, 
anders funktioniert das Design nicht. Und da der Bootloader eh schon 
anwendungsspezifisch ist und für nichts anderes verwendet werden kann, 
würde mich eher die Neukonfiguration der Pins verwirren.
Gast #6648565
Lesenswert?

Also bleibts dabei:

Deine Anwendung geheim.
Deine Bootloader Modifikation geheim.
Schaltung natürlich auch geheim.

Also alles vollkommen unüberprüfbar für uns.
Und dennoch sollen wir dir sagen, was falsch läuft.

1. Mir scheint deine Erwartungshaltung "leicht" überzogen.
2. Ich gebe auf, dann dagegen ist nichts auszurichten.
Gast #6648595
Lesenswert?

Arduino Fanboy D. schrieb:
> Deine Anwendung geheim.

Oh Mann, jetzt geht das Herumgehacke schon wieder los.
Kann ich nicht mal eine einfache Frage zur Funktion eines Bootloaders 
stellen, ohne gleich Sourcecodes und Schaltpläne zu veröffentlichen? 
Nein, nichts davon ist "geheim", aber es tut hier einfach nichts zur 
Sache. Ich habe das Problem klar umrissen, und du hast die Frage doch 
schon beantwortet.
Nebenbei bemerkt tritt der Effekt auch beim originalen unveränderten 
Optiboot auf, nämlich am LED-Pin. Das ist also keine Besonderheit meines 
Designs. Du kannst dir den Optiboot-Sourcecode und das 
Arduino-Schaltungsdesign anschauen, wenn du meinst dass dir das hilft.

Trotzdem Danke für den Tip mit main().
#6648602
Lesenswert?

Arduino Fanboy D. schrieb:
> Testweise:
> In dem du loop() und setup() weglässt, und stattdessen eine eigene
> main()  verwendest.

Dauerhaft: in dem du nicht nur setup() und loop() weglässt, sondern 
gleich die ganze Arduino-Programmierumgebung. Dann musst du zwar das 
ein-oder andere selber programmieren, dafür weißt du dann auch, was 
wann, wo, und warum passiert.

Oliver

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