Hallo, habe folgendes Problem: 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. Grüße
Melden sich beide am PC mit dem gleichen COM-Port an? Ist bei dem Original der Reset via USB aktiviert?
Darth G. schrieb: > und auf den einen Uno als ISP dem > anderen (mit frischem 328p) den Bootloader aufgespielt und dann Blink um > zu sehen ob er funktioniert. Wenn du per ISP Blink drauf gespielt hast, ist der Bootloader wieder platt.
Georg G. schrieb: > Melden sich beide am PC mit dem gleichen COM-Port an? Nein, ich trenne auch den einen, wenn ich den anderen anschliesse > Ist bei dem Original der Reset via USB aktiviert? Das weiss ich nicht Arduino F. schrieb: > 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?
Darth G. schrieb: > 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.
:
Bearbeitet durch User
Darth G. schrieb: > 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)
Darth G. schrieb: > Nun wenn ich die Fuses jetzt loswerden will muss ich mit einem High > Voltage Programmer diese entfernen? Du hast doch einen ISP Programmer! Was gefällt dir an dem nicht?
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.
Ok, ich habe mal gelesen https://www.mikrocontroller.net/articles/AVR_Fuses 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.
:
Bearbeitet durch User
Darth G. schrieb: > ist warum die Fuses die beim brennen > des Bootloaders gesetzt worden sind so schlecht sind. Die sind nicht schlecht! Die sind für den Betrieb mit Bootloader genau so nötig. Du willst ohne Bootloader, also müssen auch die betreffenden Fuses wieder auf Auslieferungszustand. Darth G. schrieb: > 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.
Darth G. schrieb: > Ja ich habe gerade nochmal nachgelesen das man dass mit einer 12V > Batterie machen kann, hatte ich überspult. Du brauchst keine HV Programmierung, wenn du den Chip noch per ISP erreichen kannst.
Danke für die schlüssige Erklärung, da war es ja gut das ich den Fehler gemacht habe, irgendwann hätte ich wohl den 328p gefetzt. Fuses in den Auslieferungszustand verstehe ich noch nicht wie ich das einfach so mache, beim googeln komme ich da auf zu überfordernde Threads.
Schau dir den "Engbedded Fuse Calclulator" an, der zeigt dir unter anderem auch die Standard Vorgaben. Eventuell hilft dir auch mein Artikel zum Thema: http://stefanfrings.de/avr_verfused/
Darth G. schrieb: > Fuses in den Auslieferungszustand verstehe ich noch nicht wie ich das > einfach so mache, beim googeln komme ich da auf zu überfordernde > Threads. Du könntest das lernen! Es ist alles gut dokumentiert. Es sind nur deine eigenen freiwilligen Begrenzungen, welche dich hindern. Oder es dir einfach machen: (mit der Arduino IDE) https://github.com/MCUdude/MightyCore 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.
:
Bearbeitet durch User
Arduino F. schrieb: > Darth G. schrieb: >> Fuses in den Auslieferungszustand verstehe ich noch nicht wie ich das >> einfach so mache, beim googeln komme ich da auf zu überfordernde >> Threads. > Du könntest das lernen! Das will ich ja auch aber ich lande beim googeln immer in den Hi Volt Threads > Es ist alles gut dokumentiert. Ich suche halt einfach nach einem Skript das die default Werte vom 328p wieder einbrennt aber da finde ich irgendwie nichts - aus Gründen... > Es sind nur deine eigenen freiwilligen Begrenzungen, welche dich > hindern. > > Oder es dir einfach machen: (mit der Arduino IDE) > https://github.com/MCUdude/MightyCore > > Da kannst du relativ sicher den richtigen Bootloader wählen und mitsamt > seiner Fuses brennen. Da ist der 328p aber nicht aufgelistet > Auch bei Auswahl von "no Bootloader" muss dann einmal "Bootloader > brennen" angestoßen werden, damit die Fuses gesetzt werden. Stefan F. schrieb: > Schau dir den "Engbedded Fuse Calclulator" an, der zeigt dir unter > anderem auch die Standard Vorgaben. > > Eventuell hilft dir auch mein Artikel zum Thema: > http://stefanfrings.de/avr_verfused/ 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.
> > Da ist der 328p aber nicht aufgelistet > Achso, sehe gerade Atmega32, also der 328p gehört wohl zur Familie...
Darth G. schrieb: > Achso, sehe gerade Atmega32, also der 328p gehört wohl zur Familie... Nein! Der ATmega328 ist in der Arduino IDE als Arduino UNO oder Arduino Nano bekannt.
Darth G. schrieb: > der 328p gehört wohl zur Familie... Nein! Zumindest: passt nicht. Vom gleichen Autor: (mit ATMEGA328P) https://github.com/MCUdude/MiniCore/tree/master -- tja--- Darth G. schrieb: > Das will ich ja auch aber ich lande beim googeln immer in den Hi Volt > Threads Mein Rat: Erst die Dokus lesen, dann können dich die Tutorials/Foren nicht mehr so derbe verwirren.
:
Bearbeitet durch User
Darth G. schrieb: > Ich suche halt einfach nach einem Skript das die default Werte vom 328p > wieder einbrennt aber da finde ich irgendwie nichts - aus Gründen... Du willst keine default-Werte, sondern die für Dich passenden Einstellungen. Die A*-IDE setzt diese beim 'Brennen' des Bootloaders, man könnte also auch die Boards-Text passend umbauen.
Manfred P. schrieb: > 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.
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
Darth G. schrieb: > 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?
Darth G. schrieb: > 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)
Arduino F. schrieb: >> 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. Wenn ich sowas befingere, lege ich zuvor eine Sicherungskopie an, die dann z.B. Boards.txt_20230930 heißen würde. > Aber was man gut tun kann, ist eine boards.local.txt neben die originale > boards.txt zu legen. Danke für Deinen Hinweis auf .local, diese Variante hatte ich übersehen. Darth G. schrieb: > Ich weiss ja garnicht welche Fuses und warum ich die setzen soll. Hattest Du nicht weiter vorne etwas von Fuse-Calculator geschrieben? Ansonsten musst Du leider das Datenblatt durchkauen, was recht zäh werden kann. Arduino F. schrieb: > 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.
Arduino F. schrieb: > Darth G. schrieb: >> 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: > 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." Danke für den Support, ich schätze das.
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.
Stefan F. schrieb: > 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 Manfred P. schrieb: > Arduino F. schrieb: >> 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 👍
Darth G. schrieb: > Ich sehe keine verlinkten Anleitungen. Hier: Arduino F. schrieb: > Vom gleichen Autor: (mit ATMEGA328P) > https://github.com/MCUdude/MiniCore/tree/master Darth G. schrieb: > 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. Darth G. schrieb: > Insofern liegt meine Lösung jetzt einfach darin meine Chips ganz normal > über USB zu programmieren. Dann ist ja auch ok...
Arduino F. schrieb: > Darth G. schrieb: >> Ich sehe keine verlinkten Anleitungen. > Hier: > Arduino F. schrieb: >> Vom gleichen Autor: (mit ATMEGA328P) >> https://github.com/MCUdude/MiniCore/tree/master > > Darth G. schrieb: >> 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.
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.