Ich benutze einen Boarduino und ein 30- reihiges Brotbrett , um meinen ATtiny zu programmieren. Ich lade eine nicht allzu komplizierte Skizze namens ArduinoISP (standardmäßig in der Arduino IDE enthalten) und habe plötzlich einen funktionierenden Programmierer. Atmel verkauft einen netten Programmierer für 30 bis 40 US-Dollar, und es gibt viele Kits, mit denen man günstigere machen kann.
Ich war sehr glücklich, als ich meinen funktionierenden Programmierer bekam und die kleinen LEDs zum Blinken brachte. Jetzt ist mein armer Boarduino jedoch fest im Dienst des Programmierers.
Soweit ich weiß, hält dieser Programmierer die Reset-Taste gedrückt und sendet und empfängt dann auf den MOSI- und MISO-Pins. Ich denke, dass das SCK nicht verwendet oder zumindest nicht benötigt wird. (SCK wird gemäß dem ATtiny-Datenblatt benötigt, mein Programmierer funktioniert nicht ohne es, und ich kann den Ort nicht finden, von dem ich dachte, dass ich es gelesen habe, er wird nicht benötigt.)
Warum brauche ich einen Hardware-Programmierer, um nur seriell zu übertragen? Ich meine, nehmen wir an, ich bin bereit, die Reset-Taste mit meinem Finger zu drücken, anstatt einen IC zu verwenden. Alles, was übrig bleibt, ist serielles Senden und Empfangen. Alles, was ich brauche, sind drei Drähte, GND, RXD und TXD. Heck, wenn ich die "DTR" -Leitung oder was auch immer habe, können Sie sogar die Reset-Taste mit dem seriellen Kabel gedrückt halten.
Warum gibt es all diese Hardwarelösungen, die auch ausgefallene Software erfordern (wie AVRdude oder AVR Studio oder was auch immer)?
Ich meine, ich könnte ein kleines USB-Kabel verstehen, das den Mikrocontroller als Massenspeichergerät darstellt und Sie Binärdateien zum Programmieren ziehen lässt (wie dieses ARM-Entwicklungsboard ). Nur Hardware unter Verwendung von Standardsoftwaretreibern.
Ich könnte auch eine reine Softwarelösung verstehen (Modulo-Verkabelung vom USB zum Chip, mit etwas wie dem FTDI-Chip, um die Verkabelung zu vereinfachen). Das gesamte ausgefallene Programmierprotokoll würde von der Software auf dem Computer verwaltet, und die Hardware wäre nur ein paar Drähte.
Warum haben wir sowohl (komplizierte) Software als auch Hardware? Ich meine, soweit ich das beurteilen kann, ist das Programmieren von Mikrocontrollern ziemlich einfach, aber als ich gerade anfing, war ich wirklich besorgt darüber, wie ich jemals einen Chip von Mouser oder Digikey kaufen würde, ohne einen Guru dafür zu bezahlen, einen Bootloader zu programmieren für mich.
Ich bin mir sicher, dass es einen guten Grund gibt (es ist nicht so, dass ich die Software geschrieben oder mit der Herstellung des Drag-and-Drop-USB-Programmiergeräts begonnen habe), aber als Neuling habe ich keine Ahnung, was es ist.
quelle
Antworten:
Sie haben recht, das Programmieren von AVRs ist ziemlich einfach. Es ist nur ein benutzerdefiniertes Protokoll, das auf SPI implementiert ist und mit niedriger Spannung ausgeführt wird. SCK wird benötigt.
Das Programmieren älterer PICs (und nicht ISP-AVR-Programmierung) erfordert jedoch hohe Spannungen und ein anderes benutzerdefiniertes Protokoll. Dies erfordert einen speziellen Hardware-Programmierer.
Andere Geräte sind komplexer. Die meisten ARM-Mikrocontroller müssen über JTAG programmiert werden, hier wird der Speicher direkt geschrieben und der Prozessor wird angewiesen, in den Flash zu schreiben. Auch hier ist jedes Gerät anders.
quelle
Ich habe viel recherchiert und bereite mich darauf vor, mit AVRs zu spielen, habe aber noch nie einen benutzt. Das mag also falsch sein, aber:
Die meisten billigen Programmierer unterstützen die AVR-Hochspannungsprogrammierung nicht. Dies ist erforderlich, wenn der Controller mit Sicherungsbits nicht programmierbar ist oder wenn Sie schwerwiegende Fehler gemacht haben und ihn auf die Standardeinstellungen zurücksetzen müssen.
quelle
Die meisten billigen AVR-Programmierer synchronisieren nur serielle Schnittstellen mit einer Reset-Leitung. Sie können einen FT232 verwenden, um das Serial Peripheral Interface (SPI) zu bitbangen. Der FT232 ist für asynchrone serielle Nicht-Synchronisierung ausgelegt.
Sie könnten einfach einen Bootloader wie arduino hochladen, der es Ihnen ermöglicht, Code über die asynchrone serielle Schnittstelle unter Verwendung des ft232 im normalen Modus oder über eine beliebige asynchrone serielle Schnittstelle unter Verwendung von Pegelwandlern nach Bedarf hochzuladen. Vergessen Sie jedoch nicht, den richtigen Bootloader für Ihre Taktrate zu verwenden und die Sicherungsbytes richtig einzustellen.
quelle
Viele programmierbare Geräte haben in der Vergangenheit verlangt, dass sie unter Verwendung von relativ genau getakteten Signalsequenzen programmiert werden. Wenn man nur einen bestimmten Gerätetyp programmieren wollte, war die erforderliche Hardware in vielen Fällen recht einfach. Da jedoch unterschiedliche Geräte unterschiedliche Anforderungen stellten, war der Aufbau eines universell einsetzbaren Programmiergeräts etwas schwieriger.
Heute könnte man wahrscheinlich mehr als 50% der programmierbaren Geräte mit nur einem USB-E / A-Kabel und PC-Software programmieren, aber "Hardware" -Programmierer haben immer noch einen erheblichen Geschwindigkeitsvorteil. In der Regel dauert es mindestens 1-2 Millisekunden, bis der PC auf ein von einem USB-Gerät empfangenes Signal reagiert und eine Antwort sendet. Wenn eine Programmiersequenz erfordert, dass ein Gerät wiederholt gefragt wird, wann es für den nächsten Datenblock bereit ist, und dieser dann gesendet wird, verlängert die Verwendung eines einfachen E / A-Kabels die für die Verarbeitung jedes Blocks erforderliche Zeit um ein oder zwei Millisekunden. Abhängig von der Art des fraglichen Geräts kann dies die für die Programmierung erforderliche Gesamtzeit im Vergleich zu einem Programmierer um eine Größenordnung verlängern. Dabei kann abgewartet werden, bis ein Gerät bereit ist, was es tun soll, wenn es fertig ist.
Persönlich mag ich den Ansatz, mit Flash ausgestattete Geräte ab Werk mit einem Bootloader im Speicher auszuliefern, der mit einem Minimum an Programmierhardware verwendet werden kann. Wenn das Gerät die Flash-Programmierung unter Softwaresteuerung unterstützt, kann ein solcher Ansatz die Produktion vereinfachen, ohne dass die Kosten für das Silizium über die sehr kurze Grenzzeit hinaus erhöht werden, die erforderlich ist, um das werkseitige Testprogramm im Bootloader zu haben, nachdem alles andere erledigt wurde .
quelle