ATtiny85. Wie brenne ich einen Bootloader? Was ist der Prozess?

8

Ich möchte alle sechs E / A-Pins eines ATtiny85 verwenden, dh auch den Reset-Pin als E / A-Pin verwenden. Ich habe jedoch festgestellt, dass ich den ATtiny nicht mehr mit einem programmieren kann, wenn ich den RESET-Pin deaktiviere ISP-Programmierer.

Ich fand jedoch heraus, dass es Bootloader für ATtiny gibt, die es mir, soweit ich weiß, ermöglichen, den ATtiny über USB zu programmieren, ohne den RESET-Pin zu benötigen.

Meine Frage ist : Wie brenne ich einen solchen Bootloader (wie zum Beispiel einen Mikronukleus ) auf den ATtiny85? Und wie muss ich den ATtiny danach an USB anschließen ( so? )? Wie programmiere ich es danach? Denken Sie daran, dass ich in Bezug auf das Brennen von Bootloadern und das Ändern von Sicherungen ein absoluter Neuling bin.

Außerdem verwende ich die ArduinoISP-Skizze als meinen ISP-Programmierer, da ich keinen echten ISP-Programmierer habe, aber soweit ich das lese, ist das kein Problem.

EDIT: Ich habe dieses Ding, das ich für ein paar Dollar bei eBay gekauft habe, und ich weiß nicht, wie und ob ich es verwenden muss: Geben Sie hier die Bildbeschreibung ein

Calin
quelle
Das Brennen eines Bootloaders entspricht dem Brennen eines anderen Programms. Wenn Sie jedoch eine schlechte Sicherung einsetzen und die Rücksetzsicherung austauschen, bleiben Sie dabei, bis Sie entweder einen anderen Chip oder einen Hochspannungsprogrammierer erhalten. Daher würde ich empfehlen, dass Sie Ihren USB-Bootloader testen, bevor Sie die Sicherung austauschen. Ihr Software-USB-Code enthält wahrscheinlich eine Empfehlung für eine Schaltung zur Annäherung an die elektrische USB-Schnittstelle.
Chris Stratton

Antworten:

1

Ich habe gerade mein Arduino-Plugin mit der vollständigen Integration von TinySafeBoot (TSB) für ATtiny84A, ATtiny85 und ATmega328P fertiggestellt.

Das Projekt finden Sie hier:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Sie können es so verwenden, wie es jetzt ist, und dann den Reset-Pin als Analogeingang verwenden. Achten Sie nur darauf, dass die Spannung niemals unterschreitet 0.6 * VCC.

Alternativ können Sie die Sicherungen so ändern boards.txt, dass dieser Pin verfügbar ist:
Gehen Sie zu den Arduino-Einstellungen und klicken Sie auf den Link zu preferences.txt(Mine :) /Users/stefan/Library/Arduino15/preferences.txt. Navigieren Sie in diesem Ordner zu /packages/atflash/hardware/avr/0.1.0. Öffnen Sie die boards.txtund gehen Sie zum Abschnitt
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Ändern Sie die Zeile
ATTSB85.bootloader.high_fuses=0xdf
in
ATTSB85.bootloader.high_fuses=0x5f

Starten Sie Arduino neu und brennen Sie den Bootloader über das Arduino-Menü.


Wenn Sie auch dann noch einen Pin von ATtiny85 erhalten möchten: Sie können den Bootloader so ändern, dass nur ein Pin für RX und TX verwendet wird (siehe TSB-Website). Aber warum all die Mühe? Nehmen Sie einfach den ATtiny84A. Es hat 14 statt 8 Pins und kostet fast das gleiche.

Stefan

stexx
quelle
2
  • Ja, es gibt USB-Schnittstellen für ATtiny85. Schauen Sie sich einfach eines der offenen Hardware-Designs an, z . B. Digispark .
  • Für eine USB-Schnittstelle sind zwei Pins erforderlich. Die Verwendung eines Pins zum Speichern eines Pins erscheint mir daher nicht als kostengünstig.
  • Ich stimme @FAD zu, dass Sie keinen USB-Stack wirklich benötigen und einfach eine Zeitverzögerung beim Booten mit den UART-Pins machen könnten.
  • HVSP (die Hochspannungsprogrammierung) ist nicht schwer zu machen. Wenn Sie bereits mit ArduinoISP vertraut sind, können Sie ScratchMonkey ausprobieren , das denselben Ansatz (mit einem 12-V-Netzteil und einem Transistor) für die HVSP-Programmierung verwendet.
Mikrotherion
quelle
Die USB-Schnittstelle kann z. B. mit einem Jumper heruntergefahren werden, wenn nicht programmiert wird, oder sie kann für eine Verwendung verwendet werden, die die Programmierung nicht beeinträchtigt. Die Neuprogrammierung erfolgt normalerweise unmittelbar nach einem Reset.
AMADANON Inc.
1

Richtig, wenn Sie den Reset-Pin als E / A verwenden, benötigen Sie einen speziellen Programmierer, von dem ich glaube, dass er Hochspannung (12 V, wenn ich mich erinnere) oder ähnliches liefertUm eine 12-V-Quelle an diesen Pin anzulegen, um ihn in den Programmiermodus zu zwingen, programmieren Sie mit einem normalen Programmierer (oder einem anderen Arduino). Was Sie jedoch suchen, ist so etwas wie das, was im Arduino gemacht wird. Das Arduino wird mit einem speziellen Bootloader über den ISP programmiert. Wenn Sie also den Mikrocontroller mit Strom versorgen, wird dieser Bootloader zuerst ausgeführt und überprüft einige Millisekunden lang die UART-Pins auf Aktivitäten. Wenn er etwas Gültiges sieht, wechselt er in den Programmiermodus, wo er auf den neuen Code wartet Um über UART (nicht ISP) zu kommen und dies in den Programmspeicherort zu schreiben, übergibt der Bootloader die Codeausführung einfach an das vorhandene Programm, falls vorhanden.

Hier ist eine einfache Erklärung der Funktionsweise: Angenommen, die Flash-Größe Ihres Mikrocontrollers beträgt 1 KB und der Bootloader 100 KB, sodass Ihr Programm an Position 101B + gespeichert werden kann und seine maximale Größe (1 KB-100B) beträgt. Wenn der Bootloader startet und keine Aktivität an den UART-Pins vorhanden ist, springt er zum Speicherort Ihres Programms (bei 101B). Wenn Programmieraktivität erkannt wird, beginnt er mit dem Lesen des neuen Codes und überschreibt den Flash ab 101B (also hat er gewonnen). t sich selbst überschreiben).

Und Sie benötigen den USBASP, um den Bootloader zum ersten Mal zu programmieren. Und Sie programmieren den ATtiny85 nicht über USB, da dieser Chip USB nicht unterstützt. Sie verwenden jedoch einen USB-zu-Seriell-Chip / Modul, der das serielle Protokoll über USB emuliert. Einige atmel-Mikrocontroller verfügen über eine integrierte serielle Unterstützung, andere können durch Softwareemulation erfolgen.

  • Und wie Chris vorgeschlagen hat, deaktivieren Sie den Reset-Pin erst, wenn Sie testen und überprüfen, ob Ihr Bootloader funktioniert.
Fahad Alduraibi
quelle
obdev.at/products/vusb/index.html
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams, das ist cool, und es sind bereits Bootloader implementiert. Meine Informationen waren damals irgendwie alt :). Es ist jedoch immer noch das gleiche Konzept, aber die direkte Kommunikation mit dem PC anstelle der USB-seriellen Emulation. Danke
Sie können einen Bootloader auch über ein Arduino (UNO oder Äquiv.) Auf ein ATtiny brennen. Hier sind einige Anweisungen: highlowtech.org/?p=1695 oder wenn Sie ein Video bevorzugen: youtube.com/watch?v=qz-YMPY4_z0
Sourcery
Hier ist eine schöne Seite über das Programmieren von ATtiny4 5 9 10 20 und 40 mit SPI von einem Arduino, es ist also nicht ATtiny85, aber ich dachte, es ist verwandt. Eine Sache, die im Blog erwähnt wird, ist, dass, wenn Sie den Reset-Pin als E / A verwenden, Sie nur eine 12-V-Quelle benötigen, um den Programmiermodus auszulösen, und Sie ihn trotzdem auf die gleiche Weise programmieren können, also keinen speziellen Programmierer, wie ich zuvor dachte. junkplusarduino.blogspot.com/p/attiny10-resources.html
Fahad Alduraibi
@FAD, die 4/5/9/10 sind völlig andere Bestien als die ATtiny85. Es ist wahr, dass sie das gleiche Programmierprotokoll (TPI) für Hochspannungs- und reguläre Spannungsprogrammierung sprechen, aber das gilt ausdrücklich NICHT für andere ATxxx-Mikrocontroller.
Microtherion
0

Ich habe dieses Ding, das ich für ein paar Dollar bei eBay gekauft habe, und ich weiß nicht, wie und ob ich es verwenden muss:

es ist unendlich besser als dein arduinoisp.

google avrdude / avrdudess.

dannyf
quelle