Forum: Mikrocontroller und Digitale Elektronik Serielle Kommunikation verstehen


von Ralf (Gast)


Lesenswert?

Hallo Leute!
Könnt ihr mir bei einem kleinen Verständnisproblem helfen? Ein 
Programmer-Tool wie z.B. PonyProg kann ja über die Setielle 
Schnittstelle einen AVR programmieren. Dabei werden 5 Leitungen benutzt.
Aber so ein COM-Port am PC kann ja auch für andere Schnittstellen (USB 
oder Bluetooth) benutzt werden, die nur 2 Leitungen besitzen.
Könnte man also auch mit PonyProg über so eine Verbindung programmieren 
(ist ja für das Programm immer noch nur ein einfacher COM Port, was 
dahinter kommt sieht es ja nicht?)?

Danke!

von Karl H. (kbuchegg)


Lesenswert?

Ralf wrote:
> Hallo Leute!
> Könnt ihr mir bei einem kleinen Verständnisproblem helfen? Ein
> Programmer-Tool wie z.B. PonyProg kann ja über die Setielle
> Schnittstelle einen AVR programmieren. Dabei werden 5 Leitungen benutzt.
> Aber so ein COM-Port am PC kann ja auch für andere Schnittstellen (USB
> oder Bluetooth) benutzt werden, die nur 2 Leitungen besitzen.
> Könnte man also auch mit PonyProg über so eine Verbindung programmieren
> (ist ja für das Programm immer noch nur ein einfacher COM Port, was
> dahinter kommt sieht es ja nicht?)?

Nein.

Die 5 Leitungen kommen deshalb zustande, weil der AVR an seiner
ISP Schnittstelle 5 Leitungen bedient haben will. Im Grunde
könnte man an einem PC jegliche Schnittstelle dafür einsetzen,
solange es nur gelingt diese 5 Leitungen richtig zu bedienen.

Und hier liegt auch dein Denkfehler. Die serielle Schnittstelle
am PC wird gar nicht als serielle Schnittstelle im eigentlichen
Sinn benutzt. Für Ponyprog sind das einfach nur 5 Leitungen, die
nach draussen führen und die vom Programm aus angesprochen
werden können. Gleichzeitig resultiert daraus auch das grosse
Problem, von dem hier in diesem Forum immer wieder berichtet
wird. Ein ordentliches Betriebssystem kann es nämlich nicht
so ohne weiteres zulassen, dass sich jedes dahergelaufene
Programm so mir nichts dir nichts direkt an der Hardware
vergreift und die Schnittstelle in einer Art und Weise benutzt,
für die sie gar nicht vorgesehen ist.

von Obelix (Gast)


Lesenswert?

Die µCs R8C/M16C von Renesas werden über die ganz normale RS232 
Schnittstelle geflasht und debuggt. Bei diesen hättest du also die 
Möglichkeit, ohne großen Aufwand, über USB (FTDI-Chips) oder Bluetooth 
zu "In System" zu programmieren.

von Ralf (Gast)


Lesenswert?

Aber man könnte doch ans andere Ende der Leitung einen AVR setzen, der 
zuerst die das . hex file vom PC empfängt (über 2 Leitungen), und dann 
über 5 Pins einen anderen AVR programmiert? Oder ist das Protokoll da zu 
kompliziert?

von Johannes M. (johnny-m)


Lesenswert?

Ralf wrote:
> Aber man könnte doch ans andere Ende der Leitung einen AVR setzen, der
> zuerst die das . hex file vom PC empfängt (über 2 Leitungen), und dann
> über 5 Pins einen anderen AVR programmiert? Oder ist das Protokoll da zu
> kompliziert?
Was glaubst Du, was kommerziell erhältliche Programmer (z.B. der AVRISP 
[MK II]) machen? Genau! Da sitzt ein kleiner schnuckeliger AVR drin, der 
vom PC über die ganz stinknormale RS232 die Daten bekommt und sie an den 
Ziel-AVR weiterschickt.

PonyProg kommt eben ohne den "Übersetzer"-AVR aus, benötigt dafür aber 
direkten Zugriff auf die Signalleitungen der seriellen Schnittstelle, 
was erstens einige Betriebssysteme nicht mögen und zweitens voraussetzt, 
dass man eine echte RS232 am Rechner hat, und keinen Wandler (USB-RS232) 
dazwischen. Hat eben den Vorteil, dass es billiger ist und dass man 
keinen zweiten µC braucht, der ja, wenn man nicht grad ein kommerzielles 
Gerät kauft, auch erstmal irgendwie progrmmiert werden muss.

Mittlerweile verzichten aber im AVR-Bereich (und afaik auch bei anderen 
µC-Familien, die die entsprechende Hardware-Ausstattung besitzen) viele 
fast ganz auf das lästige ISP und brennen einen Bootloader in den µC, 
der dann direkt über RS232 ohne den "Übersetzer" dazwischen 
kommunizieren kann.

von Ralf (Gast)


Lesenswert?

Ahja, das macht Sinn. Danke für die auführlichen Erläuterungen.
Dauert das Programmieren mit einem Bootloader denn länger als mit einer 
5 Poligen Schnittstelle?

von Hannes L. (hannes)


Lesenswert?

Ralf wrote:
> Ahja, das macht Sinn. Danke für die auführlichen Erläuterungen.
> Dauert das Programmieren mit einem Bootloader denn länger als mit einer
> 5 Poligen Schnittstelle?

Vermutlich nicht, es kommt aber auf die Effizienz des Bootloaders an.

Tempo ist aber nicht Alles. Zuverlässigkeit sollte man auch nicht 
vernachlässigen. Die ist bei Bitbanging nur gegeben, wenn OS und 
PC-Hardware mitspielen. Pony arbeitet gerne "am Limit", was bei 
ungünstigen Umständen zu Fehlern (bis hin zu verstellten Fuses) führen 
kann.

...

von Ralf (Gast)


Lesenswert?

Dann noch eine Frage hinterher. Angenommen ich benutze einen AVR 
(master) um einen anderen (slave) zu programmieren.

Dazu schaufle ich erstmal das .hex file auf den Master, und verbinde 
MISO, MOSI etc. des slaves mit ein paar Ausgängen des Masters.
Wie schwierig ist es nun, das Programm vom Master auf den Slave zu 
übertragen?
Hat das schon mal jemand gemacht? Ist das Protokoll irgendwo leicht 
verständlich dokumentiert, oder handelt es sich dabei um ein wohl 
gehütetes ATMEL Geheimnis? ;-)

von Johannes M. (johnny-m)


Lesenswert?

Das ISP-Protokoll steht im Datenblatt. Außerdem gibts Application Notes 
zu dem Thema (bin mir jetzt nicht ganz sicher und hab auch grad keine 
Zeit/Lust, nachzusehen, aber ich meine, es hätte zu dem ursprünglichen 
AVRISP sogar die Software für den Programmer-AVR samt Doku gegeben).

von Hannes L. (hannes)


Lesenswert?

Das ISP-Protokoll ist öffentlich (Datenblatt). Die Schaltung etlicher 
(modifizierter) ATMEL-Nachbauten sind auch öffentlich verfügbar. Die 
Firmware gibts im (kostenlosen) AVR-Studio, ist also auch verfügbar.

Durchsuche mal das Forum nach Programmer und 7 Euro, dann findest Du 
sicher ein Projekt, das Deine Wünsche erfüllt.

...

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
Noch kein Account? Hier anmelden.