Hallo. Ich möchte hier kurz mein Projekt vorstellen, bei dem man einen AVR über die GPIOs von einem FT232R programmieren kann. Ausführliche Beschreibung: AVR-Mikrocontroller werden häufig zusammen mit dem USB-UART-Konverter FT232R von FTDI eingesetzt. Bevor der Mikrocontroller allerdings seinen Dienst verrichten kann, muss er erst programmiert werden. Dies geschieht meistens mit einem zusätzlichen Programmiergerät. Ein Alternative dazu bietet ein Bootloader im Mikrocontroller mit dem das Programm über die serielle Schnittstelle und somit über USB in den AVR geladen kann. Dies hat den Vorteil, dass das keine zusätzliche Hardware erfordert und somit auch beim Endanwender geschehen kann. Allerdings muss auch dieser Bootloader erst einmal in den AVR gelangen. An diesem Punkt setzt die hier vorgestellte Lösung an. AVR-Mikrocontroller können über ihre ISP-Schnittstelle mit einem SPI-ähnlichem Protokoll programmiert werden. Die Datenübertragung erfolgt seriell mit einer Taktrate, die von wenigen Hertz bis zum halben Controllertakt reichen kann. Eine solche serielle Schnittstelle kann mit einer speziellen Hardware erzeugt werden oder auch von einfachen IO-Pins. Auch der FT232R besitzt solche meist ungenutzte Pins (CBUS0 - CBUS3). Diese Pins werden mit den ISP-Pins des Mikrocontrollers verbunden. Die erreichbare Geschwindigkeit ist allerdings sehr niedrig. Pro ISP-Taktzyklus müssen 3 USB-Zugriffe auf den FT232R ausgeführt werden, um die Signale zu erzeugen und das Bit einzulesen. Allerdings vergehen zwischen 2 Zugriffen aufgrund der Beschaffenheit von USB 1 bis mehrere ms. Um ein Byte aus dem Controller zu lesen oder in ihn zu schreiben, werden 32 Taktzyklen benötigt. Ein Byte dauert somit in etwa 0,3 sec. Dadurch ist das Programmieren von größeren Dateien unverhältnismäßig langsam. Trotzdem bietet die Verwendung des FT232R zum Programmieren eines AVR-Mikrocontroller Vorteile. So muss der Controller vor dem Einbau nicht programmiert werden und es müssen keine zusätzlichen Steckverbinder verbaut werden. Wenn diese Funktion zusammen mit einem Bootloader verwendet wird, ergibt sich ein weiterer Vorteil. So kann ein minimaler Bootloader mit dem FTDI programmiert werden. die Übertragung des eigentlichen Programms geschieht dann in hoher Geschwindigkeit über die serielle Schnittstelle. So kann ein unprogrammiertes Bauteil ausgeliefert werden, ohne dass der Endanwender lange Programmierzeiten ertragen muss. Ein Blockschaltbild habe ich angehängt, genauso wie den Quellcode. Der ist bis jetzt nur unter Windows XP und mit mingw getestet, sollte aber auch mit anderen Betriebssystemen und Compilern funktionieren. Im FT232R müssen die verwendeten IO-Pins (CBUS0 - CBUS3) in den IO-Mode programmiert werden. Es würde mich freuen, wenn das jemand nachbaut und dann berichtet, wie es funktioniert hat. Bernhard
hier noch eine zip datei mit Quellcode, Projektdatei für programmers notepad, makefile, header files für den FT232 und eine fertig compilierte, ausführbare exe. Dann noch zum Programm: Es ist von Programmierinterface an avrdude angelehnt. Bis jetzt unterstützt read, verify und write von flash und zwar nur mit Intel hex files. außerdem das Programmieren der Fusebits. mehr ist bis jetzt noch nicht drin, aber es reicht, dass man ein Programm oder einen Bootloader in einen nagelneuen AVR bringt und die Fusebits entsprechend gesetzt werden können. Wenn noch mehr benötigt wird, kann ich das evtl. noch anpassen. Es kann auch sein, dass nicht alle Fehler 100 %ig abgefangen werden, aber der AVR kann zumindest nicht so leicht kaputt gehen. Bernhard
Danke Bernhard! Das ist eine super Idee! Hätt' ich das doch schon vor einem halben jahr gehabt... Bei der nächsten Layoutänderung kommt das bestimmt mit 'rein. Gruß Einhart
Hey Bernhard, es funktioniert nicht mit einem attiny2313 :(! error init programming (0x00) Die Idee ist perfekt, aber es funktioniert nicht :'(
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.