Ich habe zwei Arduino Uno R3, alte.
Habe mir 4 neue Atmega328ps geholt und auf den einen Uno als ISP dem anderen (mit frischem 328p) den Bootloader aufgespielt und dann Blink um zu sehen ob er funktioniert.
Funktioniert.
Wenn ich den Frischgeflashten dann am PC anschliesse finde ich ihm Ordnungsgemäss im Gerätemanager und Avrstudio erkennt ihn auch.
Will ich dann ein Programm aufspielen, gibts ein Out of Sync - Aufspiel-Abbruch.
Der als Programmer funktioniert ist ein China Klon, der andere ein Original.
Wenn du per ISP Blink drauf gespielt hast, ist der Bootloader wieder
platt.
Ja Ok, das könnte mein denkfehler sein, ich dachte nämlich der Bootloader hätte seinen eigenen Speicherplatz und wäre notwendig um überhaupt ein Programm draufzuspielen. Er scheint aber überflüssig zu sein wenn ich einen Hardware Programmer bzw anderen Arduino benutze, oder wie?
Er scheint aber überflüssig zu
sein wenn ich einen Hardware Programmer bzw anderen Arduino benutze,
oder wie?
Richtig!
Dann solltest du allerdings die Bootloader Fuses zurücksetzen, sonst kann Ungemach drohen wenn du die oberen 512 Byte nutzen willst.
Du kannst allerdings auch per ISP beides zusammen Hochladen.
Arduino erstellt automatisch eine zusätzliche Blink_with_Bootloader.hex gleich mit.
Ja Ok, das könnte mein denkfehler sein, ich dachte nämlich der
Bootloader hätte seinen eigenen Speicherplatz
Ja, soweit hast du richtig gedacht.
und wäre notwendig um
überhaupt ein Programm draufzuspielen.
Nein, das ist falsch. Ein Bootloader bietet nur einen zusätzlichen Weg, um ein Programm zum Target zu transferieren. Du musst begreifen, dass auch der Bootloader selber schon ein Programm ist.
Er scheint aber überflüssig zu
sein wenn ich einen Hardware Programmer bzw anderen Arduino benutze,
oder wie?
Ja. Der "Vorteil" des Arduino-Gedöhns, über einen Bootloader zu funktionieren, war schon immer eher fragwürdig und ist heutzutage praktisch irrelevant. Weil immer mehr Targets von Hause aus Bootloader bieten, die im Übrigen ohne die schrägen Kompromisse der Arduino-Lösung auskommen...
Danke für die Infos!
Ich habe zwischenzeitlich den Bootloader nochmal aufgespielt und dann wird er auch von der IDE erkannt.
Man sollte also auf den Bootloader verzichten und einfach über den Programmer flashen, dann werden keine Fuses gesetzt und es steht auch mehr Speicher zur Verfügung, Richtig?
Nun wenn ich die Fuses jetzt loswerden will muss ich mit einem High Voltage Programmer diese entfernen? (Habe ich hier https://forum.arduino.cc/t/how-can-i-reset-the-fuses/367520 gelesen)
Ja ich habe gerade nochmal nachgelesen das man dass mit einer 12V Batterie machen kann, hatte ich überspult.
Das Thema Fuses hat mir aber gerade noch gefehlt.
Ich wusste garnicht das es soetwas überhaupt gibt :)
Habe bis jetzt nur PIC Projekte nachgebaut die haben halt einen Quarz und der muss da halt hin. Ich habe mir zu den 4 328p auch gleich 4 Quarze bestellt weil ich garnicht wusste das die interne Clocks haben und usw.
Aber was ich jetzt nicht verstehe ist warum die Fuses die beim brennen des Bootloaders gesetzt worden sind so schlecht sind. Gut, sie sollen nur ein Kompromiss sein um wohl eine gewisse Kompatiblität oder so zu gewährleisten aber ich verstehe gerade nicht welcher Gefahr dieser 328p jetzt ausgesetzt ist.
Was ich vorhabe ist erstmal Arduino UNOs nachzubauen (mit 16MHZ Quarz) um damit zu experimentieren.
aber ich verstehe gerade nicht welcher Gefahr dieser 328p
jetzt ausgesetzt ist.
Angenommen, die Fuses stehen auf Bootloader
Angenommen der Bootloader ist gelöscht.
Es passiert jetzt:
Der Bootloader Einsprungspunkt liegt im oberen Bereich.
Genau da wird der erste Befehl nach dem Reset ausgeführt.
Steht da überall 0xff, dann wenig Problem, denn das ist ein NOP.
Und die 256 NOPs sind fix durch.
Dann erst startet das Programm.
Aber wehe dir, du nutzt den Bereich für deine Anwendung....
Dann ist die Fehlfunktion quasi sicher.
Da kannst du relativ sicher den richtigen Bootloader wählen und mitsamt seiner Fuses brennen.
Auch bei Auswahl von "no Bootloader" muss dann einmal "Bootloader brennen" angestoßen werden, damit die Fuses gesetzt werden.
Ja, habe es aber auch tatsächlich geschafft auf die Seite 290 von dem 328p Maual zu scrollen :) Trotzdem, nützliche Informationen, werde ich öfters nochmal reinschauen.
man könnte also
auch die Boards-Text passend umbauen.
Das halte ich für eine weniger gute Idee!
Ich rate dazu, die originalen Dateien auch original so zu belassen.
Aber was man gut tun kann, ist eine boards.local.txt neben die originale boards.txt zu legen.
Denn das ist das von Arduino vorgesehene Verfahren, um eigene Erweiterungen unter zu bringen, z.B. einen neuen/weiteren Menü Eintrag für den UNO
Merke:
Einträge in boards.local.txt überschreiben/überlagern Einträge in boards.txt
Gleiches gilt für die platform.txt bzw. platform.local.txt
Änderungen in den Originalen werden erst beim nächsten IDE Start übernommen.
Änderungen in den *.local.txt Dateien, bei jedem Kompiler Lauf.
Ich soll meine Fuses zurücksetzen weil der Bootloader diese gefährlich setzt
Ich soll dann aber wieder einen Bootloader flashen
Die Vorgehensweise die ich mir vorstellen kann ist das ich mit avrdude einfach den Chip komplett lösche und dann den Bootloader und das Programm brenne.
Dann sind aber die Fuses wieder mit dem Bootloader gesetzt.
Soll ich den Bootloader also mit den default Werten des Raw Chips ausstatten?
Soll ich den Bootloader also mit den default Werten des Raw Chips
ausstatten?
Dies Fuses müssen zur Taktquelle passen und widerspiegeln, ob ein Bootloader installiert ist, oder nicht. Die Defaultwerte nutzen den internen 8 MHz Oszillator geteilt durch 8 und ohne Bootloader. Für serielle Kommunikation taugt dieser Oszillator nicht.
Ja gut, darum geht es ja. Ich weiss ja garnicht welche Fuses und warum ich die setzen soll.
Also setz ich den zumindest einmal auf die 16MHZ ext. Crystal.
Den Rest halt Werkzeinstellung?
Ich soll dann aber wieder einen Bootloader flashen
Aus dem Kontext gerissen!
Du liest offensichtlich weder meine Texte, noch die Anleitungen welche
ich verlinke. (oder verstehst sie nicht)
Nicht böse werden Bitte, ich schätze es das du mir Hinweise gibst, aber Konkret blicke ich da nicht durch und muss dann immer erst die Fragen in meinem Kopf abarbeiten und überlese dann auch mal was weil ich eine im Kopf prioritierte Frage habe die nach Antwort sucht.
Wie man die setzt, zB mit dem MightyCore oder avrdude
ist inzwischen Klarer aber die Kritieren welche ich setzen muss und warum, sind immer noch Trübe.
Zb. -und das habe ich gefragt- welche der Fuses die der Ottonormalbootloader den ich über AVRstudio benutze setzt, sind denn kritisch?
Die Orientierungsantwort liegt bei default Werten (wobei der 16MHZ gesetzt werden muss bzw kann, läuft er auf intern kann der Quarz wohl drauf sein, schwingt aber nur zum Spass, vermute ich ganz stark)
Hausaufgaben habe ich gemacht indem ich erstmal die avrdude Befehle durchgegangen bin und mir die default Werte der Fuses gedumpt habe und ich jetzt auch weiss wie ich die setze.
(Stefan F. schrieb im Beitrag #7505952:
Schau dir den "Engbedded Fuse Calclulator" an, der zeigt dir unter
anderem auch die Standard Vorgaben.
Mit diesen habe ich die Hexwerte dann übersetzt.)
Und das hier habe ich zu schnell gelesen und war verwirrt das der 328p nicht dabei war und habe nur gelesen der Bootloader muss gesetzt werden auch wenn du kein Bootloader verwendest, es geht aber um das setzen der Fuses durch den Bootloader - ohne Bootloader (CPU overload protection enabled, entering sleep mode)
"Auch bei Auswahl von "no Bootloader" muss dann einmal "Bootloader
brennen" angestoßen werden, damit die Fuses gesetzt werden."
Die defaults sind auf jeden Fall ein guter Ausgangspunkt. Dann änderst du ggf. die Taktquelle und den DIV8 Teiler. Und wenn du einen Bootloader verwendest, stellst du dessen größe ein. Das war's.
Fuses die dir nichts sagen lässt du besser unverändert.
Die defaults sind auf jeden Fall ein guter Ausgangspunkt. Dann änderst
du ggf. die Taktquelle und den DIV8 Teiler. Und wenn du einen Bootloader
verwendest, stellst du dessen größe ein. Das war's.
Fuses die dir nichts sagen lässt du besser unverändert.
Dann wäre da wieder die Frage: Brauch ich den DIV8 Teiler? Kann ich den "zum Spass" setzen und sehen was passiert? Welchen der 8 verschiedenen Möglichkeiten der 16MHZ Quarz Konfiguration wähle ich aus? Das hat irgendwas mit Latenz zu tun...
Ich hatte nicht vor diese Fragen zu stellen, sie sind erstmal Irrelevant da ich überhaupt "noch" nicht weiss was und wofür brauch ich wann, die oder jene Konfiguration.
Da Fakto, sich über Fuses setzen zu informieren = Rattenschwanz
Du liest offensichtlich weder meine Texte, noch die Anleitungen welche
ich verlinke. (oder verstehst sie nicht)
Scheint am Verstehen zu klemmen, aber mir fehlen Ideen, wie man da
helfen kann.
Ich sehe keine verlinkten Anleitungen.
Ich habe Oben schon erwähnt das ich mit dem Thema Fuses überfordert bin.
Ich bin Dankbar einen Einblick dazu erhalten zu haben, das man diese mit Achtung zu behandeln hat, da sie nicht ungefährlich und äusserst relevant sind.
Aber, es gibt ja auch ein Missverständnis.
Ich muss meinen externen Programmer nicht benutzen um 328ps zu programmieren, die Intention war eigentlich bloss erstmal Fabrikneue 328ps mit Bootloader auszustatten.
Was ich nicht wusste ist, ist dieser erstmal mit Bootloader versehen, dann muss man ihn auch direkt über USB seriell verwenden. Praktischer wäre das natürlich ohne aber auch eben nicht weil man eben viel mehr Verständnis für den Chip aufbringen muss.
Insofern liegt meine Lösung jetzt einfach darin meine Chips ganz normal über USB zu programmieren.
Danke 👍
Ich habe Oben schon erwähnt das ich mit dem Thema Fuses überfordert bin.
Das könnte man alles lernen.
Ist auch gar nicht so wirklich schwierig.
Muss man sich allerdings mal drauf einlassen.
Aber solange du dich selber für überfordert erklärst, wird das dank Autosuggestion allerdings wahrscheinlich nix.
Ich habe Oben schon erwähnt das ich mit dem Thema Fuses überfordert bin.
Das könnte man alles lernen.
Ist auch gar nicht so wirklich schwierig.
Muss man sich allerdings mal drauf einlassen.
Aber solange du dich selber für überfordert erklärst, wird das dank
Autosuggestion allerdings wahrscheinlich nix.
Ist nicht so. Ich verstehe es nicht auf Anhieb und solange ich unsicher bin setze ich da auch Nix sondern orientiere mich an Anwendungsbeispielen die mir aber erstmal unter kommen müssen. Ich weiss jetzt schonmal dass, das Thema wichtig ist und habe mein Auge drauf und schaue was andere wann machen.
Ich werde mich auch mit dem Minicore befassen und es sind dort auch Infos die gewisse Sachen erläutern nur ab wann man eine Fuse wo setzt kommt doch eben stark auf den Anwendungsfall an und das wirft bei mir mehr Fragen auf als ich stellen möchte.
Also kurz, das Thema ist notiert und beschäftigt mich wird nur eine Weile dauern bis die Groschen fallen.