Autor Thema: Atmel Mikrocontroller - Teil 1: Die Einführung  (Gelesen 12169 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline DraconiX

  • 64-Bit-Prozessor
  • ********
  • Beiträge: 5467
  • Geschlecht: Männlich
  • rubellus fulgidus draconis
    • Profil anzeigen
    • Windows Hilfe
Atmel Mikrocontroller - Teil 1: Die Einführung
« am: 08. März 2010, 20:33:19 »
Hallo, ich habe vor ca. einem halben Jahr mit der µC (Mikrocontroller) Programmierung angefangen. In dieser Zeit habe ich nun schon so einiges gelernt, dieses Wissen möchte ich gerne mit euch teilen. Um eventuell den einen oder anderen unter euch für dieses Thema gewinnen zu können.

Nun ja, wo fängt man an. Erstmal Grundsätzliches: Es ist meist alles einfacher als man denkt! Man hört halt oft: "Oh mein Gott... Assembler!", "Mit Elektronik kenne ich mich gar nicht aus!" oder "Mikrokontroller?! Hat das Ricola erfunden?".

1.1. Wozu benötige ich Mikrocontroller?

Grundsätzlich für alles! Der Aufgabenbereich eines µC ist sehr breit gefächert. Man kann z.b. eine LED blinken lassen - wobei sich dann ein µC zu tote Langweilt. Man kann komplexe LED Matrixen erstellen. Man kann Displays ansteuern, egal welcher Art (LCD, GLCD, OLED, TFT...). Selbst einen Webserver kann man sich mit einem Atmega zusammembasteln... Die Einsatzfähigkeit ist eigentlich nur durch die eigene Kreativität begrenzt ;)

Da ein moderner µC über diverse Möglichkeiten der Eingabe verfügen lassen sich so gut wie alle Sensoren ansteuern. Am besten funktioniert dies natürlich mit einem Digital Sensor - Da die meisten µC aber auch einen integrierten ADC (Analog-Digital Wandler) haben lassen sich auch Analoge Sensoren ansteuern (am einfachsten läßt sich da ein Poti nennen) - bis hin zu Touchpanels.


1.2. Welcher Mikrokontroller ist für mich geeignet?

Ich selber stand lange Zeit vor dieser Frage. Da muß man grundsätzlich abwägen: "Was will ich mit meinem µC machen?", "Ich bin neu. Wie sieht es mit Hilfen für mich aus?". Die meisten Communitys bilden sich eigentlich um zwei µC Derivate: Der Pic Prozessor und der Atmel Prozessor. Für die Atmel Seite spricht die hohe Verfügbarkeit der Teile, sowie die extremst detailreichen Onlinehilfen. Für einfache Sachen reicht dort ein Atmega8 (Daten etwas weiter unten) vollkommen aus.

Für mich kam daher die ATMEL AVR ATmega und ATiny Reihe in Fragen. Alle sind 8Bit Prozessoren mit unterschiedlicher Ausstatung:

ATiny25 / 45 / 85:

- 8-pin PDIP, 8-pin SOIC und 20-pad QFN/MLF
- 2KB / 4Kb / 8kb Flashspeicher (je nach Typ)
- 128 / 256 / 512 Bytes EEPROM
- 2x 8Bit Timer
- 4x 10Bit ADC Wandler
- 2x 10Bit ADC mit 1x und 20x Gain
- 1.8 - 5.5V Spannung
- 0-20 Mhz Geschwindigkeit
- RISC: 120 ASM Befehle
- 5x I/O Lines

ATmega8

- 28-pin PDIP, 32-pin TQFP, und 32-pad QFN/MLF
- 8KB Flashspeicher
- 512 Bytes EEPROM
- 2x 8  Bit Timer
- 1x 16 Bit Timer
- 6x 10 Bit ADC Wandler
- 4.5 - 5.5V Spannung
- 0-16 Mhz Geschwindigkeit
- RISC: 130 ASM Befehle
- 23x I/O Lines

ATmega16 / 32

- 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF
- 16KB / 32KB Flashspeicher
- 1024 Bytes EEPROM
- 2x 8  Bit Timer
- 1x 16 Bit Timer
- 8x 10 Bit ADC Wandler
- 2x 10Bit ADC mit 1x, 10x und 200x Gain
- 4.5 - 5.5V Spannung
- 0-16 Mhz Geschwindigkeit
- RISC: 131 ASM Befehle
- 32x I/O Lines

Ich persönlich bevorzuge den Atmega32 für meine Projekte. Aber auch den Atmega8 sowie den ATiny45 habe ich hier und da schon eingesetzt, jedoch stößt man da schnell an seine Grenzen, sei es die wenigeren I/O Lines (Ein- / Ausgeports) oder aber der geringere Flashspeicher.


1.3. Welche Software benötige ich?

Damit man sich nicht stundenlang mit Assembler Befehlen herrumärgern muß, gibt es zum Glück einige Hochsprachen mit denen man seine Programme für den AVR erstellen kann. Das fängt bei Basic Compilern an, geht über Pascal und endet natürlich bei C.

Ich stelle einfach mal eine Liste der am weit verbreitesten Compilern vor:



Winavr: AVR-GCC
- C-Syntax
- kostenlos
- extrem weit verbreitet unter den C-Compilern
- Webseite!

Mikroelektronika: MicroC
- C-Syntax
- $249 USD / Demo Limit 2kb Hex
- relativ einfach, viele Bibliotehken integriert!
- Webseite

Mikroelektronika: MicroPascal
- Pascal-Syntax
- $149 USD /Demo Limit 2KB Hex
- relativ einfach, viele Bibliotehken integriert!
- Webseite

Mikroelektronika: MicroBasic
- Basic-Syntax
- $149 USD / Demo Limit 2KB Hex
- relativ einfach, viele Bibliotehken integriert!
- Webseite

Bascom-AVR
- Basic-Syntax
- 89€uro / Demo Limit 4kb Hex
- relativ einfach, große Communinity
- Webseite!

Für welchen Compiler man sich entscheidet bleibt jedem selber überlassen, ich empfehle AVR-GCC. Auch die weiterfolgenden Tutorials werden in AVR-GCC gehalten. Ich selber setze aber MicroC ein. Aber auch einfach nur, weil ich immer so mache :/


1.4. Welche Hardware benötige ich?

Um sein Programm von einem PC in seinen AVR zu bekommen, benötigt man einen ISP-Programmer. Nun kann man ihn sich auch selber basteln (Erkläre ich auch noch!), viele sind aber im Umgang mit dem Lötkolben nicht sehr versiert oder geübt - dort gibt es natürlich auch abhilfe! Ich empfehle es sogar sich für die ersten Schritte ein DEV-Board zuzulegen. Aber auch da gibt es einige im Angebot.

Selbstverständlich gibt es dort, wie überall, den Trabant, Opel und Porsche unter den Dev-Boards... ich habe mal für die drei Geldbeute je meine Empfehlung zusammengestellt. Aber es gibt selbstverständlich noch viele mehr - da entscheidet einzig der Geschmack und das Bankkonto:

Low-Cost: Atmel Eval-Board (Pollin)
- 22,95€
- 9V
- ISP und JTAG
- 3x Taster
- 2x LED
- ATmega8535, ATmega8, ATmega16, ATmega32, ATmega64, ATtiny2313, ATtiny12 und ATtiny15
- Ports zusammen auf einem 40pol Stecker herrausgeführt
- Webseite





Mid-Range: AVR STK500 (Atmel)
- 76,95€
- 12V
- ISP,RS232 und JTAG
- 8x Taster
- 8x LED
- ATiny11, 12, 15, 28 / AT90S1200, 2313, 2323, 2343, 4433, 8515 / ATMega161, 163 / ATmega8, 16, 32
- alle I/O Ports einzeln auf Stiftkontaktleisten herrausgeführt
- incl. einen Atmega16 im Lieferumfang
- Webseite





High-End: EasyAVR6 (MikroE)
- $139.00 USD
- 12V / 5V
- ISP, RS232, USB, RS2 und JTAG
- 35x Taster
- 35x LED
- Alle 8Bit Atmegas
- alle I/O Ports einzeln auf Stiftkontaktleisten herrausgeführt, auch die PortE Stifte incl. 5V+ / GND je Port
- COG Display, 2x16 LCD, 128x64 GLCD incl.Touchpanel
- ADC Testpoti
- incl. einen Atmega16 im Lieferumfang
- Webseite



Ich selber habe das EasyAVR6 - und kann es nur wärmstens empfehlen! Jedoch müssen dort die Displays seperat bestellt werden (AUßer das COG). ;)




Sooo... damit hätten wir erstmal die erste Hürde, die Theorie, hinter uns gebracht! Im nächsten Teil erläutere ich dann die Funktionsweise eines µC, wie man seine erste Schaltung macht (LED *bling* *bling*), und wie man sich seinen eigenen ISP Programmer baut...


stay tuned...

Diskussion
« Letzte Änderung: 08. März 2010, 20:46:38 von DraconiX »

Offline DraconiX

  • 64-Bit-Prozessor
  • ********
  • Beiträge: 5467
  • Geschlecht: Männlich
  • rubellus fulgidus draconis
    • Profil anzeigen
    • Windows Hilfe
Diskussion: Atmel Mikrocontroller
« Antwort #1 am: 08. März 2010, 20:43:51 »
...

Offline xyz

  • 16-Bit-Prozessor
  • ******
  • Beiträge: 953
  • Geschlecht: Männlich
    • Profil anzeigen
    • pc
Re: Diskussion: Atmel Mikrocontroller
« Antwort #2 am: 08. März 2010, 22:47:31 »
Super, da bin ich mal gespannt!

Offline Philipp

  • HT4U.net Redakteur
  • 32-Bit-Prozessor
  • *****
  • Beiträge: 3196
  • Geschlecht: Männlich
  • Lalalalaaa...
    • Profil anzeigen
Re: Diskussion: Atmel Mikrocontroller
« Antwort #3 am: 11. März 2010, 15:16:27 »
schön, dass du uns da was zauberst! :)
Linux Mint Debian Edition/Windows-7-Dualboot
Wie konfiguriert man ein Linux? ==> Geri: From textfiles and mythical codelines of cthulhu

With great power come great heatsinks

Offline DraconiX

  • 64-Bit-Prozessor
  • ********
  • Beiträge: 5467
  • Geschlecht: Männlich
  • rubellus fulgidus draconis
    • Profil anzeigen
    • Windows Hilfe
Re: Diskussion: Atmel Mikrocontroller
« Antwort #4 am: 11. März 2010, 17:41:57 »
Bin grad dran, an den Schaltungen für: Seriell ISP, Parralel ISP und die erste LED.. dürfte heute Abend noch fertig werden, denke ich mal...  ;)