Weil ich immer wieder mal angeschrieben werde und ich jetzt eine lange und ausführliche Mail an ein Forumsmitglied geschrieben habe, denke ich, dass das für Einsteiger eventuell auch interessant sein könnte. Wenn nicht: Administratoren können das dann eben auch wieder entfernen. Grundsätzlich geht es darum (Glaubenskriege) wie ein Programm in den Controller gelangt, hier die Mail: --------------------------------------------------------- Grundsätzlich: - Microcontroller benötigen zu ihrer Arbeit ein Programm in ihrem Speicher (weißt du bereits) - dieses Programm kann bei verschiedenen Controllern auch in einem externen (Flash)Rom liegen (wie bspw. bei den alten 80C51 oder 80C169 Controllern) - die Microcontroller der AVR Atmel Serie (ATMega und ATtiny) liegt dieser Speicher im Chip und muß von daher dorthinein transferiert werden. Prinzipiell gibt es hierfür 2 Methoden die zum Einsatz kommen (die dann wiederum 2 "Untermethoden" haben): Serielles flashen und paralleles flashen ( = beschreiben des Controllers ). ----- Parallelprogrammer ---- Das parallele Programmiergerät (häufig auch als Brenne bezeichnet) ist relativ teuer und wird für dich wohl nicht in Frage kommen. Der Vollständigkeit halber: Häufig verfügen die Parallelprogrammer über einen Standard- und einen HV-Modus (HV bezeichnet hier "High Voltage" wobei diese "Hochspannung" 12 V sind). Der HV - Modus wird benötigt, wenn ein Controller so konfiguriert ist, dass er anderst nicht mehr programmiert werden kann (umgangssprachlich sagen da einige "Verfused"). ----- Seriellprogrammer ---- Serielle Programmer sind günstige bis sehr günstige Lösungen um einen Controller flashen zu können. Hierfür gibt es eine Unmenge von fertig zu kaufenden Lösungen oder auch Bastellösungen. Die häufigste Methode hierbei wird als ISP bezeichnet (nicht zu verwechseln mit SPI... SPI erkläre ich später). ISP bedeutet "In System Programable" und bedeutet eben, dass der Controller in der Schaltung in der er betrieben werden soll auch programmiert werden kann. Ein Programmiergerät wird hierbei an das SPI (serial peripheral interface) angeschlossen. Die Anschlüsse des SPI werden mit - MISO (Master in Slave out) - MOSI (Master out Slave in) - SCK oder CLK (serial cllock) - RES (Reset) bezeichnet. Ein Programmiergerät bedient also genau diese 4 Anschlüsse und es gibt unzählige Selbstbaulösungen ein solches Programmiergerät - oft mit einem bereits programmierten Microcontroller - zu finden. In vergangenen Tagen gab es eine Methode, bei der die Pins der seriellen oder paralleln Schnittstelle eines PC's zur Programmierung genutzt wurden. Es bedurfte nur eines Programmes, dass die an den Pins der PC-Schnittstellen 1 und 0 entsprechend dem zu brennenden Programmes angelegt hat. Das bekannteste dieser Programme ist PONYPROG Leider besitzen heutige PC's kaum noch diese Schnittstellen und USB-Wandler funktionieren nach dieser Methode nicht. Außerdem sind heutige Betriebssystem (ab Windows XP) nur sehr schwer zur Zusammenarbeit zu überreden, deshalb ist PONYPROG meines Erachtens nicht mehr zu empfehlen. Programmer, die über eine eigene Programmintelligenz verfügen und die nur über den PC mit Daten versorgt werden müssen sind: - STK500 in Version 1 und 2 (ist ein Originales der Fa. Atmel und funktioniert über einen USB2RS232 Schnittstellenadapter. Hiervon gibt es unzählige Clones zu kaufen - AVRISP MK II - AVR910 war eine originale Application Note der Fa. Atmel, in der beschrieben war, wie ein preiswerter Programmer aufgebaut werden kann. Dieser Programmer funktioniert ebenfalls über einen USB2RS232 Schnittstellenwandler. Nachteilig ist, dass nicht alle AVR's geflasht werden können - USBASP Programmer der über die USB-Schnittstelle die Datenkommunikation herstellt (sehr gut und auch viele Bausätze hierzu erhältlich) - USBtinyISP Programmer der über die USB-Schnittstelle die Datenkommunikation herstellt (sehr gut und auch viele Bausätze hierzu erhältlich) Der USBtinyISP ist für mich deshalb die Wahl, weil er meines Erachtens hoch zuverlässig funktioniert und für unter 5 Euro aufzubauen ist. Für die Programmer AVR910, USBasp und USBtinyISP gilt jedoch: es wird ein bereits programmierter Controller benötigt !!!! Es ist also ein bereits funktionierender Programmer notwendig. ---------------------------------------------------- Dateiformat: Ein Programm, dass in einem Controller laufen soll muß im HEX-Format vorliegen (seltener BIN-Format). Ein Compiler (bspw. C oder Basic) sowie ein Assembler erstellt aus einem korrekten Programm eine HEX Datei. ---------------------------------------------------- PC-Programme die die Datenkommunikation mit den Programmern herstellen: Atmel Studio ------------------ Atmel Studio ist ein Entwicklungssystem, mittels dem Controllerprogramme in den Sprachen C, C++ und Assembler erstellt und übersetzt werden können. Im Atmel Studio ist ein Uploadprogramm bereits enthalten, dass die originalen (und teuren) Programmieradapter der Fa. Atmel ansprechen kann. Eine häufige Vorgehensweise ist, mittels des Atmel Studios ein funktionierendes Programm zu schreiben und die hiermit erstellte HEX-Datei mittels eines anderen Programms an den Controller zu übertragen. BASCOM ------------ Bascom ist ebenfalls ein Entwicklungssystem das einen Programmer ansprechen kann. AVRDUDE ------------- Surft man im Internet, so wird man wohl am häufigsten auf AVRDUDE stoßen. AVRDUDE ist ein reines Übertragungsprogramm bereits fertiger HEX Dateien. Es bietet wohl von allen Übertragungsprogrammen die manigfaltigsten Möglichkeiten. AVRDUDE arbeitet mit sehr vielen (und vor allen Dingen allen oben genannten) Programmern zusammen. Für Anfänger ist AVRDUDE jedoch nicht so ganz leicht zu durchschauen, da es zum einen ein Konsolenprogramm ist und zudem über unzählige Einstellmöglichkeiten verfügt. Ein Konsolenprogramm ist das, was landläufig als "Programm im DOS Fenster" bezeichnet wird (wobei das schon lange kein DOS Fenster mehr ist, es kann eben nur über Parameter beim Programmaufruf gesteuert werden). Diese Art der Bedienung ist für denjenigen, der nicht damit aufgewachsen ist bisweilen befremdlich und erschwerlich. Viele Programme in den sogenannten Entwicklungsumgebungen haben in Wirklichkeit jedoch gar kein eigenes Uploadprogramm, sie bedienen sich lediglich des auf dem PC installierten AVRDUDE's (wie bspw. Arduino). Um dennoch eine komfortable Ubloadmöglichkeit mittels AVRDUDE zu haben, habe ich ein Bedienprogramm USBTINYISP.EXE geschrieben. Hiermit kann man komfortabel eine HEX-Datei in einen AVR Microcontroller übertragen. USBTINYISP ruft seinerseits lediglich das Programm AVRDUDE mit den entsprechenden Parametern auf. -------------------------------------------- Wie kommt man zu AVRDUDE ? AVRDUDE ist Bestandteil eines Programmierpakets eines Open Source Projekts namens WINAVR Hierbei könnte ein Einsteiger jedoch irritiert sein: WINAVR bietet fast ausschließlich Konsolenprogramme, das heißt, sie werden entweder von Hand in einem "DOS-Fenster" gestartet oder eben über andere Programme aufgerufen. WINAVR dürfte bei der C Programmierung am weitesten verbreitet sein, es enthält einen sehr beliebten C-Compiler, den AVR-GCC.EXE --------------------------------------------- Die Sache mit den FUSES der AVR - Microcontroller Die AVR - Controller sind vielfältig in ihren Konfigurationsmöglichkeiten. Konfiguriert kann bspw. werden: - Funktionsweise mit internem RC-Oszillator oder externem Quarz - Bootloader oder kein Bootloader - wenn Bootloader, die Größe des Speicherbedarfs eines Bootloaders - EEPROM beim Flashen löschen oder nicht löschen - BROWN OUT Spannung - Resetleitung als Reset oder als Portpin - ISP Programmierung erlauben oder sperren Die Einstellmöglichkeiten sind bisweilen "gefährlich", bspw. kann ein Controller, der so konfiguriert wurde, dass der PIN auf dem auch die Resetleitung sitzt als Portpin verwendet wird hinterher nicht mehr über ISP Programmiert werden. Auch wenn man den Controller auf externen Quarz umstellt obwohl kein Quarz angeschlossen ist, wird eine ISP Programmierung nicht mehr möglich sein. Im Auslieferungszustand befinden sich Controller der AVR Serie: Reset als Resetleitung mit internem Takt. So, ich hoffe ich konnte einen Überblick verschaffen, die Nachbauanleitung eines USBtinyISP sowie das Bedienprogramm zum AVRDUDE findest du hier: Beitrag "USBtinyISP auf Lochstreifenkarte" Außerdem verkaufen die Chinesen in der Bucht einen USBtinyISP um die 6 Euro inklusive Verpackung und Porto Um an die Hexwerte der Fuses zu gelangen bedienst du dich am besten des Fusecalculators von Engbedded http://www.engbedded.com/fusecalc Solltest du niemanden finden - so du dich zum Nachbau des USBtinyISP entscheidest - kannst du mich noch einmal kontaktieren und wenn du mir einen ATtiny2313 in einem frankierten Rückumschlag schickst, brenne ich dir diesen. Gruß, Ralph
Sowas gehört in einen Anfänger Artikel. Ist ja nun wahrlich nichts neues ...
Hallo Ralph, ich als Anfänger fand Deine Beschreibung hier durchaus hilfreich - vieles war mir zwar schon soweit klar, aber so treffend zusammengefasst wär es eigl. für's Wiki ne tolle Sache, oder? :-) LG
Hans schrieb: > Sowas gehört in einen Anfänger Artikel. Ist ja nun wahrlich nichts neues > ... ... ich hab ja auch absolut nichts anderes gesagt als dass es für Anfänger ist. Ich weiß nur nicht, in welcher Rubrik das besser als hier gepasst hätte ! Guten Morgen und einen Gruß, Ralph
M.E. kommt der AVRISP MkII hier viel zu kurz. Erstens ist er der einzige In-Circuit Programmierer (m.W. neben dem Dragon), der alle Protokolle beherrscht, die es bei den AVRs (und AT89Sxx) gibt (nämlich ISP,PDI und TPI), zweitens wird er von Atmel direkt unterstützt und upgedated und drittens ist er auch problemlos. Und der Dragon fehlt völlig. Wenn das ausschliesslich für Anfänger ist, verstehe ich, das JTAG nicht in den Vordergrund geschoben wird, aber erwähnen sollte man es wenigstens, damit ein Beginner weiss, wovon geredet wird.
Steht alles schon hier. Aber lesen und ein wenig denken muss man schon noch selber. http://www.mikrocontroller.net/articles/AVR_In_System_Programmer
Matthias Sch. schrieb: > M.E. kommt der AVRISP MkII hier viel zu kurz. Erstens ist er der einzige > In-Circuit Programmierer (m.W. neben dem Dragon), der alle Protokolle > beherrscht, die es bei den AVRs (und AT89Sxx) gibt (nämlich ISP,PDI und > TPI), zweitens wird er von Atmel direkt unterstützt und upgedated und > drittens ist er auch problemlos. > Und der Dragon fehlt völlig. > Wenn das ausschliesslich für Anfänger ist, verstehe ich, das JTAG nicht > in den Vordergrund geschoben wird, aber erwähnen sollte man es > wenigstens, damit ein Beginner weiss, wovon geredet wird. Matthias hat ja alle Punkte gut zusammen gefasst und so sehe ich das auch, aber anders als bei vielen hier, finde ich eine solche Zusammenfassung sehr lesenswert und vor einem Jahr hätte ich mich darüber gefreut, weil es mir sehr geholfen hätte. Bereinigt von ein paar Fehlern sollte das ein Wiki werden und auch als das gesehen werden was es ist - eine kurze Zusammenfassung und ein Überblick. Außerdem! Ich finde es richtig doof, wenn alles immer herab gewürdigt wird, wo jemand sich Gedanken gemacht hat. Erst mal besser machen. Die doofen Sprüche und gepostete Links können sich die Leser sparen, wenn sie nicht noch zusätzlich nützlich sind und nur den Zweck erfüllen sollen zu zeigen wie schlau der Poster selbst war und wie doof der TO doch ist. Ich finde es unglaublich wie borniert hier einige immer wieder sind. Damit vertreiben sie genau diese hilfsbereiten Menschen, von denen es leider viel zu wenige gibt. Und nicht vergessen -das geht jetzt raus an all diese Genies, die sich davon angesprochen fühlen oder fühlen sollten- ihr habt auch mal angefangen und fangt sicher auch noch mal in irgend einem Bereich neu an und seid dann froh, wenn genau diese Hilfestellung da ist. Klasse gemacht, Ralph! Vielen lieben Dank!
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.