AVR-Mikrocontroller mit dem GCC programmieren



Ähnliche Dokumente
Einführung in die Welt der Microcontroller

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Programmierung Tiny45 für DCC Lokdecoder

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

BLIT2008-Board. Uwe Berger

Mikrocontroller Grundlagen. Markus Koch April 2011

Atmel AVR für Dummies

AVR Web Server. Version 1.1. erstellt von. Ulrich Radig


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

Interrupt-Programmierung

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Mikrocontroller von Markus Koch April 2011

Das Pollin Atmel Evaluationboard Ver unter Verwendung von MyAVR_Prog Tool und der Arduino IDE ein Kurztutorial

Eclipse. für die kleinen Dinge des (modernen) Lebens

DST EINFÜHRUNG IN MRT (V2)

Einrichten einer Toolchain zur Programmierung des Nibo 2 Roboters mit Atmel Studio 6

Die AVR Mikrocontrollerfamilie

Über die Status-Befehle kann die Peripherie der gesamten Hard- und Firmware abgefragt werden.

Autonome Mobile Systeme. Dr. Stefan Enderle

Parallel-IO. Ports am ATmega128

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

& & & & 7, * 5-6 & +&/ ++ ( ( +2:/ " ; + &/ < ' *6 " >. &/ , "? 2 > 4 " +" 3 &/ 3 + +? +&/ +? 2 &/ ! "# $% & ' ()* # +,- -)***.

Programmieren einer Lüftungsanlage mit DDC-Suite Vorlagen Arbeiten mit dem Fupla

Übersicht und Dokumentation der Reset- Funktionen der IO CONNECT

ateval-board Aufbauanleitung & Handbuch

Mikrocontroller. Programmierung in C. Jan Unger

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Programmierbare Logik CPLDs. Studienprojekt B Tammo van Lessen

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: Beginn: 10.

ATMega2560Controllerboard

Was ist Arduino? Historie Der Kern Entwicklungsumgebung Hardware Software Und wozu das Ganze? Workshop Mikrorechner 2012 A.

Fakultät für Technik Technische Informatik Entwicklung einer Kombinierte Hard-/Software- Schnittstelle zur Anbindung von einfachen Sensoren und

Erfahrungen mit Hartz IV- Empfängern

Menü auf zwei Module verteilt (Joomla 3.4.0)

Stepperfocuser 2.0 mit Bootloader

Bau und Programmieranleitung für den IR - Booster. Vorbemerkungen

Ergänzungen zum Manual OS V 2.05/2.06

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

Funktionstest Ti2CA Compact

.Universelles Demonstrationssystem für Grundlagen der Digitaltechnik /

MAILEN FÜR DAS LEBEN 1000plus Signaturen einbinden

Die Technik hinter IoT: Arduino, Raspberry Pi & Co.

13 Programmierbare Speicher- und Logikbausteine

Serie 8: Microcontroller 17./

HF Long Range Reader ID ISC.LR(M)2500

Verkaufsstätten. Dipl.- Ing.(FH) M.Eng.(TU) Thomas Höhne

Aufgabensammlung. a) Berechnen Sie den Basis- und Kollektorstrom des Transistors T 4. b) Welche Transistoren leiten, welche sperren?

AVR Net-IO. Der originale von Pollin vertriebene Bausatz hat folgende Eckdaten:

VarioTAP Einführung Hosea L. Busse

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Grafischer Tischeplan

Wir machen neue Politik für Baden-Württemberg

Arduino Digispark. Ausgabe Copyright by Joy-IT 1

Bastelprojekt USB-Programmer für den ATMEGA8 und andere Prozessoren.

Programmieren der AVR RISC MikroController mit BASCOM-AVR

Programmierung von Mikrocontrollern am Beispiel des ATMEL ATmega32

Programmieren in Haskell Einführung

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Bedienungsanleitung TIME IT. a Look Solutions 1 product

Lerndokumentation Netzteil / PSU

Entwicklungsumgebung

Das Roaming Cockpit. Inhalt. 1 Das Roaming Cockpit Aufrufen des Roaming Cockpit über den Browser... 3

AVR Experimentierboard

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

C und C++ für Embedded Systems

mit ssh auf Router connecten

Technical Note 0606 ewon

VDW Statistik Portal Häufig gestellte Fragen. Version 1.2 ( Katharina Düngfelder & Markus A. Litters) Vorwort

Serielladapter SerCon V1.1

Bekannte Effekte bei Soft- und Hardware der ESTEC Datenlogger sowie der PC Auswertesoftware

Datenbanken Microsoft Access 2010

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Aktualisierung des Internet-Browsers

Objektorientiertes Programmieren mit Suse Linux

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014

Die Entwicklungsumgebung. Labor Technische Informatik. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber

SU Egerlandstr. 24a, Moosburg 08761/4245 oder 63708, FAX Vorteile der Cartridges

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

3,2" Touch-LCD-Farbgrafikdisplay mit High-Level-Grafikcontroller

das ABS kontrolliert ob Fehler da sind (sieht man an den ABS Warnlampen)

Objektorientierte Programmierung

Mikrocomputertechnik

Christian Kühnel, BMW Group AGILE ENTWICKLUNG VON FAHRERASSISTENZSOFTWARE. AGILE CARS 2014.

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Vorschläge für kleine Bastel-Projekte im Rahmen des Arduino-Workshops

Terminabgleich mit Mobiltelefonen

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch für Direkt-Digital-Vario. Firmware ab Hardware 01 Seriennummer ab 0003

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

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

Pflichtenheft. Projektteam. Rexford Osei - Frey Michael Weichert Thomas Thutewohl. Pflichtenheft Seite 1 von 7

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Transkript:

AVR-Mikrocontroller mit dem GCC programmieren Mario Haustein Chemnitzer Linux User Group 10. Februar 2012 Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 1 / 21 1. Die Architektur 2. AVR in 10 Minuten 3. Beispiel: Pulsweitenmodulation 4. Ausblick Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 2 / 21

Die Architektur Die Hardware CPU + RAM + Flash + EEPROM + Peripherie in einem Gehäuse Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 3 / 21 Typenbezeichnung Die Architektur Serie ATtiny wenig Speicher, kleine Bauform, wenig I/O ATmega mehr Speicher, große Bauformen, viel I/O ATXMega viel Speicher, nur SMD-Gehäuse, DMA, HW-Crypto,... AVR UC3 FPU, Speicherschutz, hohe Taktraten Typnummern (für ATmega): Flash-Größe (Zweierpotenz) Max. Taktrate I/O-Komponenten Revision, Gehäuse Bsp.: ATmega16-16PU ATmega162-16AU ATmega88-20PU ATmega328PA-20AU Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 4 / 21

Die Architektur Ein Beispiel: ATmega8 der kleinste ATmega 20 ansteuerbare Pins Davon 5 am A/D-Wandler Einzeln als Ein- und/oder Ausgang konfigurierbar. Alternativ: Aufschaltung einer Sonderfunktion. Interrupt USART I 2 C SPI Timer... Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 5 / 21 Zwei Typen im Vergleich Die Architektur ATmega8 ATmega88 8KByte Flash, 1KByte SRAM, 512Byte EEPROM 16MHz 20MHz 2 8Bit-Zähler 2 8Bit-Zähler 1 16Bit-Zähler 1 16Bit-Zähler 3 PWM-Kanäle 6 PWM-Kanäle USART USART SPI SPI I2C I2C 8-Kanal-ADC 8-Kanal-ADC Komparator Komparator 2 ext. Interrupts 2 ext. Interrupts Pin-Change-Interrupts Stromsparmodi Stromsparmodi Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 6 / 21

Die Architektur CPU, Peripherie, Programmierung RISC-Befehlssatz Zwischen den Typen kompatibel. Reduzierter Befehlssatz für ATtiny. Auf die Programmiersprache C optimiert. Getrennter Programm- und Datenspeicher (Harvard-Architektur) I/O-Komponenten sind in den Datenspeicher eingeblendet. Bsp.: ATmega8 0x000 0x01F Registerbank 0x020 0x05F Peripherie 0x060 0x45F SRAM In-System-Programming möglich Der Flash kann auch noch in seiner Zielumgebung neu programmiert werden. Programmer-Hardware: z.b. http://www.usbprog.org/ Programmer-Software: z.b. http://www.nongnu.org/avrdude/ Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 7 / 21 Die Architektur Dokumentation, Toolchain Datenblatt Dokumentation zu Speicherlayout, Peripheri-Ansteuerung, elektrischem Verhalten, ISP-Protokoll,... Frei unter http://www.atmel.com/products/avr/ erhältlich. Toolchain Binutils & GCC können AVR-Code erzeugen. Reduzierte libc: http://www.nongnu.org/avr-libc/ Programmer: avrdude Mit GDB und Debug-Adapter ist sogar Debugging möglich. Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 8 / 21

AVR in 10 Minuten Grundlegende Beschaltung Takt, Reset-Logik, Stützkondensator, ISP-Schnittstelle Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 9 / 21 AVR in 10 Minuten Fuse-Register programmieren $ avrdude -c avrisp2 -p m8 -b 10 -P usb -t avrdude : AVR device initialized and ready to accept instructions Reading ################################################## 100% 0.00 s avrdude : Device signature = 0 x1e9307 avrdude > write lfuse 0 0xef >>> write lfuse 0 0 xef avrdude > write hfuse 0 0xd9 >>> write hfuse 0 0 xd9 avrdude > quit >>> quit avrdude : safemode : Fuses OK avrdude done. Thank you. Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 10 / 21

AVR in 10 Minuten Beispielschaltung Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 11 / 21 AVR in 10 Minuten LED s an PORTC blinken lassen #i n c l u d e < stdint.h> i n t main () unsigned l o n g i n t i; *(( v o l a t i l e uint8_t *)0x34 ) = 0 x0f ; w h i l e (1) *(( v o l a t i l e uint8_t *)0x35 ) = 0 x0f ; f o r (i = 0; i < 100000; i ++) ; *(( v o l a t i l e uint8_t *)0x35 ) &= ~0 x0f ; f o r (i = 0; i < 100000; i ++) ; r e t u r n 0; $ avr - gcc -mmcu = atmega8 -Wall - Wextra -o main. bin main.c $ avr - size main. bin $ avr - objcopy -R. eeprom main. bin -O ihex main. hex $ avrdude -c avrisp2 -p m8 -b 10 -P usb -U flash : w: main. hex : i Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 12 / 21

AVR in 10 Minuten Mit der avr-libc ist es übersichtlicher #i n c l u d e < stdint.h> #i n c l u d e <avr /io.h> attribute (( naked, noreturn )) v o i d main () v o l a t i l e unsigned l o n g i n t i; DDRC = 0 x0f ; w h i l e (1) PORTC = 0 x0f ; f o r (i = 0; i < 100000; i ++) ; PORTC &= ~0 x0f ; f o r (i = 0; i < 100000; i ++) ; $ avr - gcc -mmcu = atmega8 -Wall - Wextra -Os -o main. bin main.c $ avr - objcopy -R. eeprom main. bin -O ihex main. hex $ avrdude -c avrisp2 -p m8 -b 10 -P usb -U flash : w: main. hex : i Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 13 / 21 AVR in 10 Minuten Und noch etwas übersichtlicher... #i n c l u d e < stdint.h> #i n c l u d e <avr /io.h> #i n c l u d e <util / delay.h> attribute (( naked, noreturn )) v o i d main () DDRC = 0 x0f ; w h i l e (1) PORTC = 0 x0f ; _delay_ms (500) ; PORTC &= ~0 x0f ; _delay_ms (500) ; $ avr - gcc - mmcu = atmega8 - Wall - Wextra - Os - DF_CPU =16000000 -o main. bin main.c $ avr - objcopy -R. eeprom main. bin -O ihex main. hex $ avrdude -c avrisp2 -p m8 -b 10 -P usb -U flash : w: main. hex : i Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 14 / 21

Beispiel: Pulsweitenmodulation Ein komplexeres Beispiel Helligkeitssteuerung von 4-LED-Kanälen Pulsweitenmodulation Nur 3 Hardware-PWM-Kanäle = Software-PWM Implementierung von Übergangsmustern Entkopplung von PWM und Ansteuerung über Interrupts Zugriff auf den Programmspeicher Ausblick: Hardware-PWM Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 15 / 21 Was ist PWM? Beispiel: Pulsweitenmodulation LED s haben zwei Zustände: an und aus. Helligkeitsregelung durch Verhältnis zwischen An-Zeit und Aus-Zeit. Bedingung: f 100 Hz an 25% aus Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 16 / 21

Beispiel: Pulsweitenmodulation Was ist PWM? LED s haben zwei Zustände: an und aus. Helligkeitsregelung durch Verhältnis zwischen An-Zeit und Aus-Zeit. Bedingung: f 100 Hz an 50% aus Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 16 / 21 Was ist PWM? Beispiel: Pulsweitenmodulation LED s haben zwei Zustände: an und aus. Helligkeitsregelung durch Verhältnis zwischen An-Zeit und Aus-Zeit. Bedingung: f 100 Hz an 75% aus Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 16 / 21

Beispiel: Pulsweitenmodulation Implementierung Zähler c, Überlauf ca. alle 10 ms. Schwellwert v c(t) v 25% aus an t Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 17 / 21 Implementierung Beispiel: Pulsweitenmodulation Zähler c, Überlauf ca. alle 10 ms. Schwellwert v c(t) v 50% aus an t Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 17 / 21

Beispiel: Pulsweitenmodulation Implementierung Zähler c, Überlauf ca. alle 10 ms. Schwellwert v c(t) v 75% aus an t Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 17 / 21 Beispiel: Pulsweitenmodulation Demo Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 18 / 21

Beispiel: Pulsweitenmodulation Implementierung c(t) v aus an t Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 19 / 21 Hardware-PWM Beispiel: Pulsweitenmodulation Auf Zuhörerwunsch: Phasenkorrekte PWM #i n c l u d e < stdint.h> #i n c l u d e <avr /io.h> #i n c l u d e <util / delay.h> attribute (( noreturn )) v o i d main () TCCR2 = (1 << CS22 ) (1 << CS21 ) (1 << WGM20 ) (1 << COM21 ); OCR2 = 0; DDRB = 1 << 3; w h i l e (1) OCR2 ++; /* PWM - Level in OCR2 */ _delay_ms (10) ; Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 20 / 21

Ausblick Ausblick Oder: Woran könnte man als AVR-Neuling noch versuchen? Serielle Schnittstelle I 2 C-Bus, SPI-Bus A/D-Wandler Sensortasten LCD / 7-Segment-Anzeigen EEPROM Energiesparmodi Mario Haustein (CLUG) AVR-Mikrocontroller 10. Februar 2012 21 / 21