ATmega328 mit Optiboot nicht kompatibel mit Arduino?

Ich habe kürzlich eine Reihe von ATmega328-Chips gekauft, die mit dem Optiboot (Arduino Uno) für einige Projekte geladen sind, an denen ich arbeite, aber ich habe etwas Seltsames mit ihnen bemerkt. Ich habe bereits viele Arduino-Boards in meiner Sammlung, aber dieses Mal wollte ich ein sehr Barebone-Arduino-basiertes Projekt mit einer kleinen Anzahl von Komponenten machen.

Denken Sie an etwas wie Arduino Sleep Watchdog Battery .

Bei allen Chips habe ich auch ZTT 16 MHz Resonatoren bestellt .

Aber wenn ich den ATmega328 einschalte und eine LED an D13 anschließe, schaltet sich der ATmega328 ein und blinkt die LED, aber mit immer höherer Geschwindigkeit, und dann hört es nach etwa drei Sekunden auf zu blinken.

Ich dachte, dass es an meiner Verkabelung gelegen haben könnte, und versuchte, die ATmega328-Chips in meinen anderen Arduino-Boards zu verwenden, und bemerkte dasselbe. Da ich dachte, dass es vielleicht nur ein schlechter Chip sein könnte, habe ich drei Chips in verschiedenen Boards getestet, alle mit dem gleichen Problem. Nur für den Fall, dass ich eine schlechte Komponente hatte, die die Chips durchbrennt, keiner der ATmega328-Chips hat eine Komponente berührt, die ein anderer fehlerhafter Chip hat.

Wenn ich versuche, eine Skizze hochzuladen, erhalte ich die Fehlermeldung „Nicht synchronisiert“, und das Hochladen schlägt fehl.

Alle Chips scheinen von SparkFun /LBE zu stammen . Einer der Chiplieferanten sagte mir, dass es eine schlechte Charge von SparkFun gibt, aber ich kann nichts finden, was das belegen könnte.

Da ich dachte, dass der Bootloader beschädigt sein könnte, richtete ich einen anderen Arduino als ISP-Programmierer ein, aber er gab mir immer wieder Fehler und gab die Chip-Signatur als ATmega168 zurück (nachdem ich das Etikett abgezogen habe, habe ich bestätigt, dass der Chip wirklich ein ATmega328P-PU ist), aber Da dies mein erster Versuch war, einen ISP-Programmierer zu verwenden, führte ich dieses Problem auf einen Benutzerfehler (ich) zurück und bestellte einen gebrauchsfertigen ISP-Programmierer (noch zu erhalten).

Wie kann ich dieses Problem beheben?

Hast du es mit einem Kristall versucht? Soweit ich gesehen habe, sind Resonatoren in einigen Fällen möglicherweise nicht präzise genug für die serielle Kommunikation. Trotzdem würde es nicht das Hauptproblem erklären. Hat einer von ihnen auch mit dem internen Oszillator gearbeitet?
Ich habe es mit Kristallen und Resonatoren versucht und beide hatten das gleiche Problem, ohne einen Kristall scheinen die Chips die geladene Skizze nicht auszuführen, und ich nahm an, dass dies daran liegt, dass die Flags beim Brennen des Bootloaders gesetzt werden mussten, ich habe dieses Tutorial befolgt und konnte den Bootloader nicht mit dem internen Oszillator arduino.cc/en/Tutorial/ArduinoToBreadboard laden
Ich habe einen Chip in einem ATmega168-Board mit einem 16-MHz-Quarz getestet und es zeigte sich das gleiche Problem. Ich habe auch einen der anderen Chips in einem Board getestet, das einen 8-MHz/12-MHz-Quarz hatte, und es hatte auch das gleiche Problem. Ich glaube also nicht, dass das Problem mit dem Quarz / Oszillator zusammenhängt.
Die Sparkfun-Schnecken sollten nun Geschichte sein; Die Chips waren überhaupt keine Atmegas, sondern eine Stromversorgungskomponente und wurden nach Entdeckung des Problems mit einem Scherzzertifikat verklebt verkauft. Außerdem waren sie oberflächenmontiert, nicht DIP. Als Sie eine atmega168-Signatur gelesen haben, haben Sie ein '168-basiertes Arduino als ISP verwendet? Wahrscheinlich haben Sie mit dem Bootloader gesprochen, nicht mit der ISP-Skizze. Natürlich ist es möglich, dass 168er betrügerisch als 328Ps bezeichnet werden, aber ich wäre nicht geneigt, dies zu vermuten, bis Sie einen bekannten 328P-Isp haben und in derselben Steckdose arbeiten, in der der unbekannte fehlgeschlagen ist.

Antworten (1)

Das Problem war die geladene Firmware. Nach dem erneuten Brennen der Firmware auf alle Chips scheint alles zu funktionieren.

Komisch, dass alle von mir bestellten Chips den gleichen korrupten Bootloader hatten.