Navigation |
|
|
|
|
|
|
|
|
|
|
|
|
|
Einstieg in die Arbeit mit AVR Mikrocontrollern
- Beschaltung
- Strom-/Spannungsversorgung
Der µC benötigt eine möglichst konstante Spannungsversorgung ohne Störungen oder Spannungsspitzen. Dazu ist es am einfachsten einen 7805 positiv Spannungsregler zu verwenden. Es gibt (grob) drei Typen
L = 0,1A
M = 0,5A
nix = 1A
S = 2A
C1 und C2 sind Glättkondensatoren, C3 und C4 Siebkondensatoren
Braucht man 3,3V kann man sich entweder mit zwei Dioden in Reihe behelfen, oder mit einem speziellen 3,3V Spannungsregler (keine Ahnung, wie der heißt)
- Systemfrequenz
Externer Quarzoszillator (Fuse-Bit „external crystal oscillator“)
(WICHTIG!!! nicht „external RC Oscillator“ bei Fuse-Bits anklicken. Sonst ausgesperrt) Die 18pF Cs können auch 33pF sein. Je nach Quarzfrequenz.
Zweite Möglichkeit ist, den internen RC Oszillator zu verwenden. Möchtest du allerdings UART oder zeitkritische Anwendungen realisieren ist ein Quarz unabdingbar! Wenn’s um ein Eval-Board gehen soll, dann (auch für Debug Zwecke) einfach mit einem Quarz aufbauen.
- RESET
Der Reset-Eingang sollte, auch für die In-System-Programmierung mit einem Pull-Up Widerstand versehen werden. 10kΩ sind meist völlig ausreichend.
- Taster und LED’s
Um Taster an einen Mikrocontroller Eingang anschließen zu können ist nicht viel nötig. Auf Grund des internen Pull-Up Widerstands kann der Taster direkt vom Pin zu Masse gelegt werden.
Status-LED’s werden vom Ausgang über einen, passend zum LED Strom gewählten, Serienwiderstand geschaltet. Zu beachten ist dabei die maximale Strombelastbarkeit des µC-Ausgangs von rund 25mA. Pro Port allerdings nur maximal 100mA.
- Analog-Digital Wandler
Für die Messung von analogen Werten sollte der ADC ordentlich beschaltet werden. Dazu gehört mindestens ein Sieb-Kondensator von AVCC zu Masse, besser noch durch eine Parallel-Induktivität zwischen der Referenzspannung AREF und der Versorgungsspannung des ADC AVCC.
- In-System-Programming (ISP)
Die ISP Schnittstelle ist meist als 6pol-, oder 10pol-Wannenstecker ausgeführt. Die Beschaltung für den µC ist eine einfache 1:1 Bedrahtung der passenden Pins. Da man bei der µC-Programmierung LEDs und den UART zu Debug-Zwecken verwenden kann ist meines Erachtens für die meisten Projekte kein JTAG notwendig.
MISO – Master in; Slave out
MOSI – Master out; Slave in
SCK – System Clock
Reset – Reset
- Programmierung
- Entwicklungsumgebung
Meine Empfehlung ist, ein Programm zu nehmen, in dem du so viele Funktionen zur Entwicklung wie möglich in einem Programm hast.
Im AVRStudio kannst du Simulieren, Flashen, Programmieren, Fusen usw.
C Programmierung geht allerdings nur, wenn WinAVR auch installiert wurde. Beim Projektstart, wird man dann gefragt ob man ein Assembler Projekt, oder ein GNU-Compiler, also C, Projekt haben möchte.
- Als Programmer würde ich, der Einfachheit halber den MKII von Atmel verwenden, der kostet rund 35€ und ist robust und einfach.
So, das sollte mal so der schnellste Einstieg sein. An Hand dieser Schaltungsbeispiele sollte ein eigenes Eval-Board schnell erstellt und funktionsfähig sein.
Ach ja, evtl. sollte ich noch den UART ansprechen. Damit man mit dem PC kommunizieren kann, muss eine Pegelwandlung durchgeführt werden. Hab jetzt grad keine Schaltung da, aber im Datenblatt vom MAX232 findest du die komplette Beschaltung.
Logisch
|
RS232
|
TTL UART
|
1
|
-12V
|
5V
|
0
|
12V
|
0V
|
Programmierung
- PORTS
Um den Mikrocontroller mit der Außenwelt in Interaktion treten kann werden die I/O-Pins verwendet. Sie sind, bei 8-bit Prozessoren, meist in PORTS á 8 Pins aufgeteilt. Die Ports können als Eingang, wie auch als Ausgang fungieren. Um die PORTS zu konfigurieren müssen sog. Register passend Gesetzt werden.
- DDR
Das Data Direction Register legt die „Richtung“ des Ports fest. Also ob Ein- oder Ausgang. Dabei ist eine einmalige Initialisierung notwendig.
Bsp. für den zweiten Pin von PORT B als Ausgang
DDRB |= (1 << 2); // betreffendes Bit im Register setzen
Bsp.: Für den dritten Pin von PORT D als Eingang
DDRD &= ~(1 << 3);// betreffendes Bit im Register auf Low
PORTD |= (1<<3); // Internen Pull-Up Widerstand aktivieren
- PORT
Das PORT Register dient bei Verwendung als Ausgang zum setzten des High- bzw. Low-Pegels.
Wird der Pin als Eingang verwendet kann beim setzten des dazugehörigen Bits der interne Pull-Up Widerstand aktiviert werden.
- PIN
PIN ist das Port Input Register. Ist der Pin als Eingang initialisiert wird über dieses Register der Status abgefragt.
|
|
|
|
|
|
|
|
|
|
|
|