Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches zu Microcontrollern / Begriffe


von Ralph S. (jjflash)


Lesenswert?

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

von Hans (Gast)


Lesenswert?

Sowas gehört in einen Anfänger Artikel. Ist ja nun wahrlich nichts neues 
...

von A. H. (dev)


Lesenswert?

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

von Ralph S. (jjflash)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Steht alles schon hier. Aber lesen und ein wenig denken muss man schon 
noch selber.

http://www.mikrocontroller.net/articles/AVR_In_System_Programmer

von Philipp K. (numeriusnegidius)


Lesenswert?

Sehr schöner Überblick!

von F. F. (foldi)


Lesenswert?

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