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?
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.
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.
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.
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.
Arduino Fanboy D. schrieb: > In dem du loop() und setup() weglässt, und stattdessen eine eigene > main() verwendest. > Dann fasst das Arduino Framework keine Hardware mehr an. Cool... das wusste ich auch noch nicht. Ok, das probiere ich mal aus. Gracias...
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().
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
Vancouver schrieb: > ... viel bla bla bla .... > wenn du meinst dass dir das hilft. Ich habe doch kein Problem. Angeblich hast du eins. Es bleibt dabei: Arduino Fanboy D. schrieb: > dagegen ist nichts auszurichten.
Vancouver schrieb: > und du hast die Frage doch > schon beantwortet. Nein! Aber jetzt weiß ich die Antwort.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.