Tag 3 Timer, ADC und PWM

Ähnliche Dokumente
Analog-Digital-Converter

Für den CTC-Mode kann demnach TCCR1A komplett auf 0 gesetzt werden, weil WGM11 und WGM10 in diesem Register liegen und beide laut Tabelle 0 sind:

Analog-Digital Umwandlung

Timer. Funktionsprinzip

Erzeugen von PWM-Signalen mit dem Atmel AVR-Mikrocontroller

Serie 8: Microcontroller 17./

Autonome Mobile Systeme. Dr. Stefan Enderle

AVR-Mikrocontroller in BASCOM programmieren

Tag 4 7 Segment-Anzeige, File Include, LC-Display

Klasse, Name : Datum : Rad l/r Linienfolger l/r Laderaum ATMEGA 128

Aufgabe A5: Anleitung. Einführung in die Programmierung des Sensor-/ Aktorknotens

Interrupt-Programmierung

Richtung durch Taster während des Ablaufs umschaltbar

Unter einem Interrupt kann man sich einen durch Hardware ausgelösten Unterprogrammaufruf vorstellen.

AVR-8-bit-Mikrocontroller Gruppe Technologie der AVR-8-bit-Mikrocontroller Teil SPI

Proseminar Timer/Counter und PWM beim ATMega16 Mikrocontroller. Marcel Jakobs

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil 8: gavrasmw und weitere Beispiele

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

Seminar: Mikrocontroller. Analoge Inputs:

ATmega169 Chip: Pin-Layout

The amforth Cookbook angefangen

Atmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös

analoge Ein- und Ausgänge

Lösungen zum Kurs "Mikrocontroller Hard- und Software

16-Bit PCA Timer/Counter

Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

EXF2 TF2 IEX6 IEX5 IEX4 IEX3 IEX2 IADC 0C0H T2PS I3FR I2FR T2R1 T2R0 T2CM T2I1 T2I0 0C8H. AFH AEH ADH ACH ABH AAH A9H A8H Bitdresse

Embedded Systems

Mikrocontrollertechnik C2 Timer. Einführung

Prinzipen und Komponenten Eingebetteter Systeme (PKES) Sebastian Zug Arbeitsgruppe Eingebettete Systeme und Betriebssysteme

Wie in der Skizze zu sehen ist, bleibt die Periodendauer / Frequenz konstant und nur die Pulsweite ändert sich.

Die interne Peripherie der Mikrocontroller

Kurs "Mikrocontroller Hard- und Software

V cc. 1 k. 7 mal 150 Ohm

Vorbereitung. Teil D Analog-Digital-Wandler 1

C. Lokale I/O-Adressen

Halbautomatischer Antennenkoppler - Software. 1 Pin-Belegungen der ATmega-Controller. 1.1 Controller (Steuergerät) DL6GL

Anleitung A5. Einführung in die Programmierung des Sensor-/ Aktorknotens BTnode

Ansteuerung eines LCD-Screens

Temperaturmodul. Software. Bedeutung der Leuchtdioden. Kanal-LEDs. System-LEDs. Start nach Reset

D.1 Vorbereitung. Teil D Analog-Digital-Wandler 1

Tag 2 Eingabe und Interrupts

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U Abend 3:

Interruptsystem AVR. Interrupt-Quellen: Extern, Timer, ADC, USART usw. (siehe IVT im Anhang) Rücksprungadresse automatisch am Stack.

Vortrag über die Bachelorarbeit

ATmega8. Projekte mit AVR-Mikrocontroller. Ein Digitalvoltmeter Seite 1 von 6. Ein Datenlogger

IR NEC Empfänger mit 4x7 LED Anzeige (ATtiny2313)

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Puls Weiten Modulation (PWM)

Parameter Bedingungen Spezifikationen A/D-Wandlertyp

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

SERIELLE DATENÜBERTRAGUNG (DMX)

Application Note. PiXtend mit Hilfe der Control- & Status-Bytes konfigurieren und überwachen. Stand , V1.06

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Implementierung von Interruptbehandlungen. Interrupts

Kurzanleitung. Hotel Modus. Version / MB82 / MB82S<, Stand Vestel Germany GmbH Parkring Garching bei München

U5-2 Register beim AVR-µC

Lösungsvorschlag 2. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Software ubiquitärer Systeme

Einführung in die Welt der Microcontroller

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

AVR-Mikrocontroller in BASCOM programmieren

Laborübung 4. Zustandsautomaten (Finite State Machines)

Operationsmodi des Timers Modus 0 : Ausschalten des Zählers

U Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

Stecker Stepper-Platine Platz 3

Inhaltsverzeichnis 1 Ein-Bit-Rechner Mikrorechentechnik-Grundlagen Das Mikrocontrollersystem ein Überblick am Beispiel MSP430F1232

The amforth Cookbook english version started

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

STM32 - Schieberegister, SPI - u

AD-Umsetzung mit megaavr Steuerung des internen AD-Umsetzers mit BASCOM-AVR

Beschaltung eines Mikrocontrollers. Jordi Blanch Sierra Steuerungsgruppe

11: Echtzeitbetriebssystem ucos-ii

Einführung in die Arduino-Programmierung II

Übungen zu Systemnahe Programmierung in C (SPiC)

Chip veraltet, für neue Anwendungen nicht empfehlenswert!

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil VI: Programmieren an weiteren Beispielen

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil 8: Ein Sinusgenerator mit AVR-Timer

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Die Flowcharts sind teilweise flöten gegangen. Böses copy paste :- (

Microcontroller in C programmieren

Timer/Counter und Capture-Compare- Einheiten

Laborübung 2. Teil 1: Latches, Flipflops, Counter. Abbildung 1: Schaltkreis eines Gated D-Latch

2

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Parallel-IO. Ports am ATmega128

Mikrocontrollertechnik MODUL C

7.0 PWM - Pulsbreitenmodulation

Mikrocontrollertechnik

Embedded Systems

Vorlesung HSMT (MRT - Teil) ab WS2011/2012

Entwicklungsboard 16F1824

Entwicklung einer mobilen Kleinstroboterplattform für die Anwendung in der Lehre und Forschung

C1 A/D- und D/A-Wandler

MikroController der 8051-Familie

Entwicklung einer mobilen Kleinstroboterplattform für die Anwendung in der Lehre und Forschung

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins

Transkript:

Tag 3 Timer, ADC und PWM 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1

Analog-Digital-Wandler Arbeitet durch schrittweise Näherung Aktivieren des ADCs durch ADC Enable (ADEN) in ADCSRA Eingang gemultiplext Alle Pins der Ports A und F können als Eingang verwendet werden Auswahl durch MUX-Bits in den Registern ADMUX und ADCSRB Differentieller Eingang möglich Differenz zwischen zwei Eingangssignalen wird digitalisiert Eingangsverstärkung einstellbar (1x/10x/200x) Im folgenden jedoch nur normaler Single Ended Input -Modus Zwei Betriebsarten Single Conversion Mode Free Running Mode 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 2

Analog-Digital-Wandler 10-bittiges Ergebnis wird abgelegt in den ADC Data Registers (ADCH und ADCL) ADC= V in 2 10 V ref Ergebnis kann auch linksbündig in diese Register geschrieben werden ( ADC Left Adjust Result -Bit ADLAR==1 in ADMUX) Wenn 8 Bit Genauigkeit ausreicht, genügt das Auslesen von ADCH Immer ADCL vor ADCH lesen, sonst gehören die Werte möglicherweise nicht zur gleichen Wandlung! ADCH zügig nach ADCL auslesen, sonst bleiben die Register gesperrt und es werden evtl. Wandlungsergebnisse verworfen! Die avr-libc bietet auch das Pseudo-16-Bit-Register ADC an (Achtung: Zugriffe sind trotzdem nicht atomar sondern werden automatisch in 8-Bit- Zugriffe umgesetzt!) 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 3

Analog-Digital-Wandler Start der Wandlung im Single Conversion Mode: ADC Start Conversion Bit (ADSC) setzen Bleibt gesetzt solange Wandlung läuft ADC kann Interrupt auslösen wenn Wandlung abgeschlossen Dazu muss das ADC Interrupt Enable-Bit (ADCIE) im ADC Control and Status Register A (ADCSRA) gesetzt sein Automatische Triggerung kann mit ADC Auto Trigger Enable Bit (ADATE in ADCSRA) aktiviert werden Trigger Quelle einstellen mit ADC Trigger Select Bits (ADTS in ADCSRB) Positive Flanke der Triggerquelle startet Wandlung Ist ADC Interrupt Flag als Trigger Quelle ausgewählt, wird sofort nach Beenden der Wandlung eine neue gestartet (Free Running Mode) 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 4

Analog-Digital-Wandler Timing im Single Conversion Mode: Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 5

Analog-Digital-Wandler Timing im Auto Triggered Conversion Mode: Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 6

Analog-Digital-Wandler Taktverhältnis zwischen CPU-Takt und ADC-Takt ist einstellbar mittels ADC Prescaler Select Bits (ADPS0...ADPS2) im ADC Control and Status Register A (ADCSRA) Tabelle: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 7

Analog-Digital-Wandler Programmcode: /* Potentiometer 3 is connected to PF0 which is on ADC channel 0 */ DDRF &= ~(1 << PF0); /* input direction */ PORTF &= ~(1 << PF0); /* switch off internal pull-ups */ ADCSRA = (1 << ADEN); /* ADC Enable=1 */ ADMUX = 0; /* set ADC input channel, ADC */ ADMUX = (1 << REFS0); /* set ref. voltage to VCC */ /* init prescaler (ADC clock=125khz) */ ADCSRA = (1 << ADPS2) (1 << ADPS1) (1 << ADPS0); ADCSRA &= ~(1 << ADATE); /* Single Conversion Mode */ _delay_us(125); /* wait for reference voltage to stabilize */ ADCSRA = (1 << ADSC); /* Start Conversion=1 */ while (ADCSRA & (1 << ADSC)) ; /* wait for conversion to finish */ result = ADC; /* read value */ 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 8

Timer/Counter Timer und Counter unterscheiden sich im Wesentlichen durch die Quelle des Zählsignals Beim Timer: periodisches Taktsignal Beim Counter: meist nicht-periodisches Signal Beides mit einer Schaltung realisierbar (konfigurierbares Verhalten) Der ATmega640 hat 6 Timer/Counter Zwei 8-Bit-Timer mit PWM-Funktion (Timer 0 und 2) Vier 16-Bit-Timer (Timer 1, 3, 4 und 5) Im Folgenden wird Timer/Counter0 beschrieben 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 9

Timer/Counter0 Wichtigste Elemente eines Timers/Counters: Zählregister (Timer Counter, TCNT0) Vorteiler um einen Timer-Takt aus dem CPU-Takt abzuleiten (Prescaler) Möglichkeit den Zählerstand mit einem vorgegebenen Wert zu vergleichen (Output Compare Registers) Oft sogar mehrfach vorhanden (OCR0A, OCR0B) Ein Compare Match kann einen Interrupt auslösen und/oder zum Reset des Counters führen 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 10

Timer/Counter0 Nomenklatur: Max - größter Wert, den der Counter annehmen kann (0xFF) Bottom - kleinster Wert, den der Counter annehmen kann (0x00) Top - größter Wert, der beim Zählen erreicht wird (je nach Betriebsmodus 0xFF oder OCR0A) 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 11

Timer/Counter0 Timer/Counter Register Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 12

Timer/Counter0 Output Compare Registers Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 13

Timer/Counter0 Compare Match Interrupt Requests Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 14

Timer/Counter0 Betriebsmodi: Normal Mode (WGM02:0 == 0) Counter Register wird hochgezählt Kein Löschen des Counter Registers sondern nur Überlauf Clear Timer on Compare Match (WGM02:0 == 2) OCR0A enthält den Wert bei dem gelöscht wird Ausgang OC0A kann bei jedem Compare Match umgeschaltet werden (Toggle Mode, COM0A1:0 == 1) f f OCnx = clk 2 N 1 OCRnx Fast-PWM Mode Phase Correct PWM Mode 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 15

Pulsweitenmodulation (PWM) Problem: Wie kann man nur mit Digitalausgängen die Helligkeit einer LED/die Drehzahl eines Motors ändern? Lösung: Periodisches Ein- und Ausschalten eines Digitalausgangs, zeitliche Mittelung über das Ausgangssignal (passiert bei hinreichender Schaltfrequenz automatisch) Abbildung: http://en.wikipedia.org/wiki/file:duty_cycle_general.png 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 16

Pulsweitenmodulation (PWM) Pulsbreite bestimmt mittlere Ausgangsspannung: Abbildung: http://en.wikipedia.org/wiki/file:pwm.png 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 17

Fast-PWM Mode Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 18

Phase Correct PWM Mode Abbildung: Datenblatt ATmega640 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 19

Fast-PWM Mode Programmcode: // PWM output is Port G Pin 5 DDRG = (1 << DDG5); // output direction TCCR0A = (1 << WGM02) (1 << WGM01) (1 << WGM00); // Fast-PWM Mode TCCR0A = (1 << COM0B1) (0 << COM0B0); // non-inverting PWM TCCR0B = (1 << CS02); // init prescaler while(1) { // percentage =...; } // Set PWM output compare value (regulates duty cycle) OCR0B = 2.55 * percentage; 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 20

Aufgaben Analogsignal vom Poti kontinuierlich digitalisieren und mit den LEDs anzeigen Timer in Hardware programmieren (Interrupt auslösen!) PWM in Software programmieren PWM in Hardware realisieren Signal des Photo-Sensors zum Dimmen der Hintergrundbeleuchtung des LC-Displays verwenden 09/01/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 21