www.mikrocontroller.net

Forum: Projekte & Code SPIUSB - AVR über GPIOs von FT232R programmieren


Autor: Bernhard Mayer (bernhard84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernhard Mayer (bernhard84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessantes Konzept!

Autor: Einhart Pape (einhart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: CDU-Hasser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Bernhard,

es funktioniert nicht mit einem attiny2313 :(!

error init programming (0x00)

Die Idee ist perfekt, aber es funktioniert nicht :'(

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.