Was ist eine einfache Möglichkeit, einen ATtiny-Mikrocontroller in C ohne ISP zu programmieren?

Ich verstehe, dass die "rohste" Methode zum Programmieren eines AVR-Mikrocontrollers wahrscheinlich mit einem ISP wie dem AVRISP mkII ist.

Ich bin jedoch auf der Suche nach einer Methode, bei der ich kein 40-Dollar-Werkzeug für ein einmaliges Projekt kaufen muss.

Ich habe einen Computer, einen Arduino Uno und einen Raspberry Pi zur Verfügung.

Ich bin nicht wirklich daran interessiert, die Arduino IDE zu verwenden und Skizzen zu schreiben. Ich möchte in den Low-Level-Code einsteigen, der in C möglich ist, vorzugsweise mit einer IDE wie Atmel Studio.

Soweit ich weiß, verfügt der Arduino Uno über einen ATmega16U2, der über USB an einen Computer angeschlossen wird, mit dem der ATmega328P programmiert wird.

Agiert der ATmega16U2 hier als ISP? Wenn ja, kann ich damit den ATtiny programmieren? Ich bin den Schaltplan durchgegangen und er zeigt, dass der mega16u2 einen ICSP-Header hat, aber über TX/RX-Leitungen mit dem mega328 verbunden ist.

Kaufen Sie besser ein store.atmel.com/PartDetail.aspx?q=p:10500053#tc:description . Dank mir später.
UsbAsp-Klon ist bei ebay für etwa 5 $ erhältlich, wenn Sie Arduino nicht jedes Mal als Programmierer anschließen möchten.

Antworten (3)

  • Agiert der ATmega16U2 hier als ISP?

Nein, dieser Chip fungiert als USB -> RS232 TTL-Adapter. Auf dem 328P-Chip ist ein serieller Bootloader installiert, der Befehle über RS232 akzeptiert, um den Chip zu programmieren.

Sie können den ArduinoISP-Sketch auf dem Arduino installieren (in der Arduino IDE enthalten), der den Arduino dann in einen ISP verwandelt, der über AvrDude (Befehlszeilenprogramm) gesteuert werden kann, um den ATTiny über ISP zu programmieren.

Es gibt viele Tutorials und Beispiele in den Arduino-Foren und auf dem Playground.

"RS232 TTL" widerspricht sich. RS232 ist explizit ein UART mit +/- 15 V. TTL UART ist wahrscheinlich das, was Sie meinen.
Eindrucksvoll. Etwas OT, aber wurde der 16u2 vor dem Versand mit einem ISP oder so programmiert? Wenn der Bootloader des 328P-Chips manuell gelöscht wird, bedeutet dies auch, dass der Arduino keine Skizzen auf normale Weise laden kann, es sei denn, Sie verwenden einen ISP, um den Bootloader neu zu laden?
@glglgl RS-232 wird in dieser Situation in Verbindung mit TTL (wie es überall verwendet wird ) verwendet, um ein RS-232-System zu definieren, das TTL-Spannungspegel verwendet. UART ist kein RS-232, kann aber Signale mit RS-232-Timings erzeugen. Das "U" bedeutet "Universal". Oh, und Pedanten werden hier nicht geschätzt.
@ tgun926 Ja und ja.
@ Majenko "Oh, und Pedanten werden hier nicht geschätzt." Das sagst du. Bei der Entwicklung ist es wichtig, präzise zu sein.
RS232 TTL ist ein häufig verwendeter Ausdruck, um RS232 mit TTL-Signalpegeln zu beschreiben. Es unterscheidet sich von RS232 ohne die angegebene TTL. Andere gebräuchliche Ausdrücke sind TTL-232, TTL-Serien usw. Keine ist zu 100 % perfekt, da es keine offizielle Bezeichnung dafür gibt. Und überhaupt, es ist EIA-232, NICHT RS-232: P Sehen Sie, ich kann genauso pedantisch sein!

Sowohl Arduino als auch der Raspberry Pi können mit AVRDUDE als ISP-Programmierer verdrahtet werden .

Sie können einen 5x2 10-Pin-Header verwenden und Ihren eigenen Programmierer verdrahten, wie zum Beispiel:

Geben Sie hier die Bildbeschreibung ein

Das wurde aus Sparkfuns Tutorial zur Mikrocontroller-Programmierung entnommen . Im gesamten Tutorial geht es darum, Code auf einen Mikrocontroller zu bekommen. Der verwendete Mikrocontroller ist ein AVRMega, aber das Gleiche gilt für einen Tiny.

Verwenden Sie den Serial Port Programmer , mit unterstützender Hardware sollte es weit weniger als 40 $ kosten.

Dieser Programmierer wird spezifisch für AVRs sein, so dass die Sache mit dem „einmaligen Projekt“ für dieses Stück Hardware nicht ganz zutrifft.

So bringen Sie den Code physisch auf die Platine. Es gibt mehrere Möglichkeiten, den Code zu kompilieren und hochzuladen, indem Sie einen Ihrer bevorzugten Editoren, Makefiles und dergleichen verwenden.