PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ISP-Dongel, wo ist der Sinn?



dasisch
12.01.2008, 22:47
Hi Leutz,

bin gerade dabei, meine Jahresarbeit fürs Abi über Mikrocontroller fertig zu stellen und dabei bin ich auf eine Wissenslücke meinerseits gestoßen: Klar brauchen wir alle einen ISP-Adapter, um unsere AVRs zu programmieren, aber wo liegt der Sinn eines solchen Adapters?

Wenn mir jemand die Frage beantworten könnte, wäre superklasse!

Viele Grüße,
Sven

krulli
12.01.2008, 23:17
Wasn das für Frage... Natürlich liegt der Sinn darin, den AVR zu programmieren.

dasisch
12.01.2008, 23:32
Ja, sehr gute Antwort... Wenn ich Daten über die serielle Schnittstelle versende, nutze ich beispielsweise einen MAX232, da Controller und PC-Schnittstelle mit unterschiedlichen Spannungen arbeiten.
Beim ISP-Adapter gibt es unterschiedliche Varianten: Mit "schützendem" Dongel oder einfach nur mit Dioden - die Auswahl an Anleitungen im Internet ist da ja groß.

Ich muss wissen, welche Funktion der ISP-Adapter beim Programmieren hat. Kann mir diese Frage jemand beantworten?

Gruß,
Sven

Besserwessi
12.01.2008, 23:57
Der ISP Adapter ist dazu da, um das Programm von PC in den Flash Speicher des Controllers zu übertragen. Daneben kann man auch das EEPROM und die Fuses (Taktquelle, usw.) einstellen. Die Daten werden über 4 Leitungen + GND (und meistens noch Vcc) seriell mit Logicpegel, je nach Vcc der Schaltung übertragen. Da die PCs keine entsprechente Schnittstelle haben, braucht mein die Adapter, die zum Teil auch nur ein bischen Schutz für den PC und den passenden Stecker bieten.

Je nach Controller kann man mit einem Bootloader Programm im Controller auch einen Teil des Controllers (z.B. keine Fuses) über eine andere Schanittstelle, z.B. Serielle der USB programmieren. Um erst mal das Bootloader Programm draufzukriegen braucht man aber erst einmal einen ISP Adapter (oder einen anderen Programmieren). Je nach Chip gibt es noch andere Programmiermöglichkeiten (JTAG,Debugwire, Hochvolt), die man aber für den Anfang nicht braucht.

dasisch
13.01.2008, 00:02
okay, vielen dank für die Antwort! Leider wusste ich das alles nur schon... Kannst du bitte noch einmal auf deinen unten gequoteten Satz etwas genauer eingehen?


Da die PCs keine entsprechente Schnittstelle haben, braucht mein die Adapter,


Welche Schnittstelle genau hat der Rechner nicht, die der Adapter bereit stellt? Wie gesagt, es gibt ja auch Möglichkeiten, den µC direkt mit dem Parallelanschluss über ein paar Dioden anzuschließen. Insofern frage ich mich: Welche Rolle spielen der Adapter (Spannungswandel etc.) bzw. die Dioden?

Viele Grüße,
Sven

radbruch
13.01.2008, 00:16
Hallo

Hier beschreibt ATMEL, wie der Programmer funktioniert:
http://atmel.com/dyn/resources/prod_documents/doc0943.pdf
Das ist die ApplicationsNote AVR910, die Grundlage für die gleichnahmigen Adapter.

AVR109 (http://atmel.com/dyn/resources/prod_documents/doc1644.pdf) beschreibt die SelfProgramming-Funktion der AVRs und AVR911 (http://atmel.com/dyn/resources/prod_documents/doc2568.pdf) ist ein OpenSource-Programm dazu.

Gruß

mic

Gock
13.01.2008, 00:56
Der Punkt ist doch, dass die parallele Schnittstelle am PC einfacher zu programmieren ist, als die Serielle. Denn man kann einfach Bits in gewünschter Reihenfolge setzen oder nicht. Bei der Seriellen muss man nicht nur die Pegel ändern, sondern auch das gesamte Protokoll, mit Stopbits usw. Das ist wesentlich komplizierter.
Das alles ist notwendig, weil der PC keine ISP-Schnittstelle hat, oder besser gesagt keine SPI, die zu einer ISP umfunktioniert werden kann.
Die Geschichte mit den Diode ist meines Wissens nach nicht nur weniger sicher für den Rechner sondern auch weniger kompatibel zu "Standard-Programmiersoftware" Schließlich haben sich einige Leute auf diese Schnittstelle "geeinigt" und ihre Programme dafür geschrieben. Letztendlich macht es kaum einen Unterschied, ob ich ein paar Dioden oder ein IC auf eine Platine löte.
Besser?
Gruß

dasisch
13.01.2008, 10:21
Alles klar! Das hat mir sehr gut weitergeholfen! Vielen Dank! Ich werde mir jetzt gerade mal das Teil von Atmel anschauen und wenn ich nicht weiterkommen sollte, dann melde ich mich nochmal.

Eine Frage stelle ich trotzdem nochmal: In dem ISP-Adapter aus dem Wiki ist ein Bus-Treiber (74HC244N) verbaut. Was genau ist ein Bus-Treiber und welche Funktion hat der in diesem Adapter?

Vielleicht weiß dazu noch jemand eine Antwort :)

Viele Grüße,
Sven

pctoaster
13.01.2008, 10:36
Hi,
Ein Bus Treiber verstärkt letztendlich die Ströme eines TTL Eingangspegels. Er soll einfach nur dafür sorgen, daß der TTL Pegel auch garamntiert eingehalten wird. Es gibt heutzutage auch Druckerschnittstellen, die nur mit 3,3V arbeiten. In diesem Fall wird auch der Pegel etwas erhöht.
Du muss auch unterscheiden: Es gibt einfache Programmeradapter, die lediglich einige Anschlüsse des Druckerports ausnutzen und daraus per SW die entsprechenden Programmierimpulsfolgen auf den AVR geben.
Warum sich die Leute hier im Forum ständig mit diesen Billig Dingern rumärgern, hat mir noch nie so richtig eingeleuchtet. Da Windows kein Echtzeitbetriebsystem ist, wundert mich sowieso, daß dies überhaupt funktioniert.
Die "richtigen" Programmieradapter basieren eben auf das Atmel doc avr910. Hier werden die Programmierimpulse vom eingebauten 90S1200 erzeugt. Dabei werden nur die entsprechenden Datenbytes seriell vom PC über die Leitung geschoben. Dieser Adapter kostet nur einige Pennys mehr ;-)

Gruß
pctoaster

dasisch
13.01.2008, 10:59
Okidoki, dann kann ich das jetzt auch beschreiben :) Ich danke euch allen nochmals für die Mühe!

Viele Grüße,
Sven

linux_80
13.01.2008, 12:13
Hallo,

wenn mans genau nimmt, kann man auch ohne Adapter auskommen, zB. die myavr-Boards, da wird nur die parallele Verlängerung drangesteckt.
Bei diesem sind die (Adapter-)Bauteile dann auf dem Board, was für ein Experimentierboard auch OK ist. Auf einer produktiven Platine sollen aber keine unnötigen Bauteile sein, deshalb wird der Adapter extern angeschlossen.
Ausserdem kann die Schaltung des Adapters die Funktion beeinflussen falls diese Pins in der eigentlichen Schaltung anderweitig verwendet werden.

Christopher1
13.01.2008, 14:49
Warum sich die Leute hier im Forum ständig mit diesen Billig Dingern rumärgern, hat mir noch nie so richtig eingeleuchtet. Da Windows kein Echtzeitbetriebsystem ist, wundert mich sowieso, daß dies überhaupt funktioniert.

Bei mir funktioniert das ohne Probleme ;-)

recycle
13.01.2008, 19:04
Warum sich die Leute hier im Forum ständig mit diesen Billig Dingern rumärgern, hat mir noch nie so richtig eingeleuchtet.

Das liegt vielleicht daran, dass diese Leute mitbekommen haben, dass es mit den teuren Adaptern genausoviele Problem gibt wie mit den billigen.

Soweit ich das bisher verfolgen konnte, liegen die meisten Probleme mit den ISP-Adaptern an:
- falschen Einstellungen in der Übertragungssoftware
- Fehlern in der Controllerschaltung, z.B. flasch gesetze Fusebits
- Schaltungsfehlern in selbstgebauten Adaptern

Ob billig oder teuer spielt bei diesen Fehlerursachen eigentlich keine Rolle.

Für Anfänger die erst mal nur in das Thema reinschnuppern wollen oder Leute die hobby-mäßig hin und wieder mal damit rumspielen, sehe ich nicht viel Sinn darin viel Geld für einen teuren ISP-Adapter auszugeben.
Meinen habe ich für knapp 10 Euro gekauft und hatte noch nie Probleme damit.



Da Windows kein Echtzeitbetriebsystem ist, wundert mich sowieso, daß dies überhaupt funktioniert.

Hast du dir mal überlegt, über welche Schnittstellen und mit welchen Endgeräte du so alles Daten überträgst, wenn du an deinem Rechner arbeitest?
Warum wundert es dich, dass man mit nichtechtzeitfähigen Betriebssystemen ein paar kb Daten auf nen µC schreiben kann?

pctoaster
13.01.2008, 19:20
Hast du dir mal überlegt, über welche Schnittstellen und mit welchen Endgeräte du so alles Daten überträgst, wenn du an deinem Rechner arbeitest?
Warum wundert es dich, dass man mit nichtechtzeitfähigen Betriebssystemen ein paar kb Daten auf nen µC schreiben kann?

Der Unterschied ist der, daß das Betriebssystemaufrufe sind, die eben nicht von irgendeinen anderen Task unterbrochen werden. Wen ich derart langsam (und für einen 2GHz Proc sind das Ewigkeiten) einige Bits auf die Schnittstelle übertrage, dann ist eben die Wahrscheinlichkeit hoch, daß das BS zwischendurch mal etwas anderes machen möchte. Und dann kommt schnell das Timing durcheinander.
Aber es scheint ja offensichtlich meist zu funktionieren. Mir wäre es die Einsoarung eines AT1200 nicht wert.

Und ... findest Du 10 € viel Geld für einen Programmer (viel mehr habe ich auch nicht bezahlt, vielleicht waren es auch 20€). Da ist nur ein AT1200 mehr drin, der ein paar Pennys kostet.

Gruß
pctoaster

Besserwessi
13.01.2008, 21:04
Da SPI eine syncrone Serielle Schnittstelle ist, machen da Unterbrechungen eigentlich nichts aus. Probleme kann es höchstens ganz am Anfang passieren um in den ISP Modus zu wechseln, aber da sind die Unterbrechungen eher zu kurz.

Neben den oben beschriebenen Problemquellen kommen noch zu lange Kabel und damit verbundene Überschwinger auf der CLK Leitung dazu. Die ganz billigen Adapter setzen außerdem eine echte (kein USB-... Adapter) serielle oder parallele Schnittstelle im PC vorraus, was nicht mehr jeder neue PC hat.

recycle
14.01.2008, 03:10
@pctoaster


Der Unterschied ist der, daß das Betriebssystemaufrufe sind, die eben nicht von irgendeinen anderen Task unterbrochen werden.

Wenn es Betriebssystemaufrufe gäbe, die nicht von anderen Tasks unterbrochen werden, wäre das Betriebssystem dann nicht echtzeitfähig?

Bei meinem Scanner, Drucker, CD/DVD-Brenner, USB-Sticks, Festplatten, Netzwerk usw. merkt man eigentlich sehr deutlich, dass Datenübertragungen länger dauern, wenn der Rechner nebenbei mit vielen anderen Dingen beschäftigt ist.

Davon abgesehen - wenn das Betriebssystem die parallele und serielle Schnittstelle in Echtzeit bedienen könnte, um mit Drucker, Modem usw. zu kommunizieren, warum sollte es das dann nicht können, wenn ein ISP-Adapter an derselben Schnittstelle hängt?


Aber es scheint ja offensichtlich meist zu funktionieren. Mir wäre es die Einsoarung eines AT1200 nicht wert.

Dadurch wird dein Betriebssystem auf dem PC aber auch nicht echtzeitfähiger ;-)
Wenn das deinem AT1200 nix liefert, kann der das auch nicht in Echtzeit weitergeben.
Ehrlich gesagt glaube ich, dass solche ISP-Adapter noch mehr Leuten Probleme verursachen als die ganz einfachen.
Je mehr Bauteile, desto mehr Fehlerpotential beim Selberbauen und ausserdem kommt da dann ja auch noch eine Firmware für den AT1200 dazu die Probleme machen kann.
Wenn man so einen Adapter selber bauen will, hat das auch den kleinen Haken, dass man erst mal einen ISP-Adapter braucht um die Firmware auf seinen ISP-Adapter zu laden ;-)



Und ... findest Du 10 € viel Geld für einen Programmer
Nö, deswegen habe ich ihn ja auch als Beispiel dafür genannt, dass auch billige ISP-Adapter problemlos funktionieren können.
Wenn ich damit bisher irgendwelche Probleme gehabt hätte, hätte ich inzwischen sicher auch 20 Euro oder mehr für einen besseren ausgegeben.

Die wohl häufigste Ursache für Probleme mit ISP-Adaptern haben ich allerdings übersehen, die hat Besserwessi aber genannt.
Das dürften USB-Seriell-Adapter sein die zwischen Rechner und ISP geklemmt werden, weil viele Rechner keine serielle Schnittstellen mehr haben.

Damit musste ich bisher zum Glück noch keine Erfahrung machen da meine Rechner noch serielle und parallele Schnittstellen haben.