Skip to main content Link Menu Expand (external link) Document Search Copy Copied

ISP-Programmieradapter für serielle Schnittstelle

Die Programmierung von Controllerboards erfolgt in der Regel über die ISP-Schnittstelle, die über einen passenden Adapter mit dem PC kommuniziert. Bei älteren PCs, die keinen USB-Anschluss besitzen, ist die Kommunikation über die serielle RS232-Schnittstelle möglich. Die verwendete Adapterschaltung beruht auf dem von Claudio Lanconelli entwickelten Adapter SI-Prog.

Schaltbild

Schaltbild

Beide Anschlüsse – RS232 beim PC und ISP (In System Programmer) beim Mikrocontroller – sind auf eine serielle Datenübertragung ausgelegt. In Detail unterscheiden sich die Übertragungsprotokolle jedoch erheblich. Daher wird die RS232-Schnittstelle völlig anders betrieben als beispielsweise in Verbindung mit einem Modem. Im Wesentlichen werden die Statusleitungen der RS232-Schnittstelle verwendet, um das Übertragungsprotokoll der ISP-Schnittstelle nachzubilden. Die nachfolgende Tabelle gibt die Signalzuordnung ab:

Signalzuordnung

Die Anschlüsse von PC und Controllerboard unterscheiden sich auch hinsichtlich der auftretenden Spannungspegel. Bei der RS232-Schnittstelle liegt der Spannungsbereich bei 3 bis 12V, der ISP-Port ist dagegen für TTL-Pegel mit 0 bis +5V ausgelegt. Bei den Leitungen vom PC zum Mikrocontroller wird die vom seriellen Port gelieferte Spannung durch die Zener Dioden (kurz Z-Dioden) auf 5,1V begrenzt. Die Widerstände R1 und R2 beschränken den entnommenen Strom. Bei der umgekehrten Übertragungsrichtung (von Controller zum PC) ist keine Zusatzbeschaltung erforderlich. Um nach der Datenübertragung den Mikrocontroller neu zu starten wird über einen Feldeffekttransistor der Reset-Anschluss kurz mit Masse verbunden und der Controller damit rückgesetzt. Der Widerstand R3 dient als Schutz vor einer statischen Ausladung. Die wenigen Bauelemente lassen sich auf einem Stück Universalleiterplatte unterbringen. Wer über ausreichende Bastelerfahrung verfügt, kann für die RS232-Schnittstelle auch einen Stecker mit Gehäuse verwenden und dort die komplette Adapterschaltung unterbringen.

Software zum Betrieb des Adapters

Für die Kommunikation zwischen PC und Controller stehen verschiedene Programme zur Verfügung. Ein gängiges Programm ist AVRDUDE, was einerseits in die WinAVR-Programmierumgebung integriert ist, andererseits auch unter Linux zur Verfügung steht. Hierbei ist die Option

 c ponyser -P COM1

zu verwenden. Falls die COM1-Schnittstelle bei Ihnen schon belegt ist, müssen Sie die Nummer der seriellen Schnittstelle noch aktualisieren (z.B. COM2).

Mit diesen Anpassungen können Sie nun Programme auf den Controller übertragen. Allerdings trat bei dem verwendeten Board mit dem Programm AVRDUDE noch einen Problem auf: Nach der Übertragung eines Programmes wird der Mikrocontroller nicht neu gestartet. Das geladene Programm kann man trotzdem starten, indem man den Stecker des Programmieradapters vom Controllerboard löst, aber das ist natürlich auf Dauer keine Lösung. Daher wird nachfolgend beschrieben, wie dieses Problem softwareseitig behoben werden kann. In der Konfigurationsdatei avrdude.conf muss man zuerst den Abschnitt suchen, in dem die Anschlußbelegung des Programmieradapters „ponyser“ (für PonyProg, seriell) definiert ist:

# serial ponyprog design (dasa2 in uisp)
# reset=!txd sck=rts mosi=dtr miso=cts

programmer
  id    = "ponyser";
  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
  type  = serbb;
  reset = ~3;
  sck   = 7;
  mosi  = 4;
  miso  = 8;
;

In dieser Schnittstellendefinition ist eine weitere Zeile hinzuzufügen:

  rdyled = ~3;

Der so korrigierte Abschnitt sollte wie folgt aussehen:

# serial ponyprog design (dasa2 in uisp)
# reset=!txd sck=rts mosi=dtr miso=cts

programmer
  id    = "ponyser";
  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
  type  = serbb;
  reset = ~3;
  sck   = 7;
  mosi  = 4;
  miso  = 8;
  rdyled = ~3;
;

Nachdem Sie die modifizierten Konfigurationsdatei gespeichert haben, sollte der Programmieradapter wie gewünscht funktionieren.

Für die Übertragung von Programmen und Daten auf den Mikrocontroller kann man auch das Programm PonyProg von Claudio Lanconelli einsetzen. Nach der Installation ist zunächst zwischen serieller und paralleler Übertragung zu wählen. Bei der Verwendung des beschriebenen Programmieradapters erfolgt die Übertragung natürlich seriell. Als Programmierschnittstelle ist „SI Prog API“ auszuwählen. Zusätzlich ist die verwendete serielle Schnittstelle anzugeben (COM1, COM2, …). Beim ersten Aufruf muss man im Setup den Menüpunkt „Calibration“ aufrufen, der das Zeitverhalten bei der seriellen Datenübertragung optimiert.

Setup von PonyProg

Setup von PonyProg