Erzeugen von PWM-Signalen mit dem Atmel

Fachbereich Elektrotechnik und Informatik
Labor für Angewandte Informatik und Datenbanken
Praktikum
Automatisierung/Echtzeitregelung
(BAU/BER)
Prof.Dr.-Ing. Coersmeier
Erzeugen von PWM-Signalen
mit dem
Atmel AVR-Mikrocontroller
Name, Vorname
Matrikelnummer
Versuchstag
Testat
PWM-Signale mit Atmel AVR
Seite 2
1. Aufgabenstellung
In diesem Versuch soll mit einem Atmel ATMEGA16 Mikrocontroller ein PWM-Signal
(z.B. zur Motor- oder Servosteuerung) erzeugt werden.
Bei der Pulsweitenmodulation (PWM) wird ein Rechtecksignal mit variabler
Impulsbreite (Tastverhältnis) und variabler Frequenz erzeugt.
Die zur Berechnung der PWM-Parameter für Ihren Versuch erforderlichen Werte für
Frequenz und Tastverhältnis erhalten Sie vor Versuchsbeginn.
2. Versuchsvorbereitung
•
•
•
Lesen Sie die Abschnitte zu Timer0 und Timer1 aus dem Datenblatt des
ATMEGA16.
Versuchen Sie anhand des Datenblatts und dieser Anleitung die zur
Programmierung der Timer0/Timer1 erforderlichen Register zu verstehen. Sie
müssen diese Register im Praktikum berechnen!
Bearbeiten Sie die Vorbereitungsaufgaben VOR VERSUCHSBEGINN!!!
3. Aufbau der Versuchsanordnung
Die Versuchsanordnung besteht aus einem EasyAVR6-Evaluation-Board und einem
Messgerät zur Anzeige von Frequenz und Tastverhältnis.
PWM-Signale mit Atmel AVR
4. PWM mit Timer/Counter0
Der Timer/Counter0 des ATMEGA16 ist ein 8-Bit Timer/Counter mit PWMFunktionalität.
8-bit Timer/Counter Block Diagram
Der Timer0 kennt vier Betriebsarten, die über die Bits WGM00 und WGM01 des
Registers TCCR0 (Timer Counter Control Register 0) konfiguriert werden. Zwei
dieser Betriebsarten dienen zur Erzeugung von PWM-Signalen. Dabei wird das
erzeugte PWM-Signal an Pin OC0 ausgegeben.
Seite 3
PWM-Signale mit Atmel AVR
Seite 4
In der Betriebsart Fast PWM zählt der T/C0 dabei kontinuierlich von 0 bis zum
Überlauf. Die Betriebsart Phase Correct PWM bewirkt ein Auf/Abwärtszählen von
T/C0 zwischen 0 und dem Maximalwert
.
In beiden Betriebsarten wird die Frequenz des erzeugten PWM-Signals durch die
Taktfrequenz des ATMEGA16 (hier: 8MHz) und durch die Konfiguration der drei
Clock-Select Bits (CS00/CS01/CS02) in TCCR0 bestimmt. Bei 5 der 8 möglichen
Konfigurationen wird ein von externem Takt unabhängiges PWM-Signal erzeugt.
Vorbereitungsaufgabe:
Geben Sie die erreichten Frequenzen des PWM-Signals für die angegebenen
Konfigurationen von CS und WG an:
WGM01
WGM00
CS02
CS01
CS00
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
1
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
Frequenz
Das Tastverhältnis des erzeugten PWM-Signals ist abhängig von der Einstellung der
Bits COM00 und COM01 (Compare Output Mode). Für jede der beiden PWMBetriebsarten enthält das Datenblatt des ATMEGA eine Beschreibung des
Verhaltens von OC0 in Abhängigkeit von COM0/1 (Tabelle 40/41)
Zur exakten Einstellung des Tastverhältnisses an OC0 dient das Output Compare
Register OCR0:
PWM-Signale mit Atmel AVR
Seite 5
7. Aufgabenstellung Teil 1
Schreiben Sie ein kurzes Programm zur Erzeugung eines PWM-Signals mit den
angegebenen Werten.
Übertragen und Starten Sie ihr Programm. Überprüfen Sie das erreichte Resultat mit
dem Messgerät.
8. Aufgabenparameter Teil 1
Frequenz:
Tastverhältnis:
o Phase Correct PWM
o Fast PWM
9. PWM mit Timer/Counter1
Der Timer/Counter1 des ATMEGA16 ist ein 16-Bit Timer/Counter mit PWMFunktionalität.
PWM-Signale mit Atmel AVR
Seite 6
Durch zwei Compare-Register (OCR1A/OCR1B) mit den entsprechenden
Ausgängen (OC1A/OC1B) können zwei PWM-Signale erzeugt werden.
Abgesehen von den 8-bit Registern TCCR1A/B (Timer Counter Control Register)
sind zur Konfiguration des Timer/Counter1 eine Reihe von 16-bit Registern
erforderlich. Der Zugriff auf diese Register erfolgt in zwei 8-bit Schritten (low/high
Register). Eine genauere Beschreibung der Zugriffsmechanismen finden Sie im
Datenblatt auf S. 92 (Accessing 16-bit Registers).
Der Timer/Counter1 bietet, verglichen mit dem 8-bit Timer/Counter0, eine Reihe
zusätzlicher Funktionalitäten und Betriebsarten.
Im Gegensatz zu T/C0 erfolgt die Einstellung der Betriebsart mit 4 Bits.
Für die folgende Aufgabenstellung beschränken wir uns auf die Verwendung der
Betriebsarten Phase Correct PWM und Fast PWM bei Verwendung von Register
ICR1 als TOP-Value.
Das Tastverhältnis der erzeugten PWM-Signale ist abhängig von der Einstellung der
Bits COM1A0/COM1A1 und COM1B0/COM1B1 (Compare Output Mode). Für die
verschiedenen PWM-Betriebsarten enthält das Datenblatt des ATMEGA eine
Beschreibung des Verhaltens von OC1A/OC1B in Abhängigkeit von
COM1A0/1A1/1B0/1B1 (Tabelle S. 111)
Außerdem ist es erforderlich die genutzten Portpins als Ausgang zu konfigurieren!
PWM-Signale mit Atmel AVR
Seite 7
Wie schon von Timer0 bekannt kann die Taktquelle von Timer1 über einen Vorteiler
vom Systemtakt angesteuert werden. Die Konfiguration dieses Vorteilers erfolgt über
die Bits CS10/CS11/CS12.
Die Parameter des so erzeugten PWM-Signals sind extrem flexibel. Im Gegensatz zu
dem mit Timer0 erzeugten Signal ist die Frequenz nicht nur durch eine Veränderung
des Vorteilers, sondern auch durch Veränderung des TOP-Wertes in ICR1
konfigurierbar.
Die so erzeugte PWM-Frequenz ergibt sich im Fast-PWM-Modus zu (Datenblatt S. 104):
Dabei ist N der eingestellte Prescaler-Wert (1,8,64,256 oder 1024)
In der Betriebsart Phase Correct PWM ist die Frequenz (Datenblatt S. 106)
Das Tastverhältnis der bis hierher konfigurierten Signale wird, in Abhängigkeit von
der Einstellung des Compare Output Mode, durch die Register OCR1A und OCR1B
festgelegt.
PWM-Signale mit Atmel AVR
Seite 8
10. Vorbereitungsaufgabe Teil 2
Ermitteln Sie die korrekten Registereinstellungen für ein PWM-Signal mit folgenden
Parametern:
Betriebsart: Phase Correct PWM
PWM-Frequenz: 1 KHz
Tastverhältnis OC1A: 50%
Tastverhältnis OC1B: Verwenden Sie hier die letzten beiden Stellen Ihrer MatrNr (%)
WGM10/WGM11/WGM12/WGM13
CS10/CS11/CS12
COM1A0/COM1A1
COM1B0/COM1B1
ICR1H/ICR1L
OCR1AH/OCR1AL
OCR1BH/OCR1BL
11. Aufgabenparameter Teil 2
Frequenz:
o Phase Correct PWM
o Fast PWM
Tastverhältnis OC1A:
Tastverhältnis OC1B:
Diese Werte werden bei Versuchsbeginn festgelegt!