Mikrocontroller. Programmierung in C. Jan Unger

Größe: px
Ab Seite anzeigen:

Download "Mikrocontroller. Programmierung in C. Jan Unger"

Transkript

1 Mikrocontroller Programmierung in C Jan Unger Wuppertal,

2 II Inhaltsverzeichnis 1 Kapitel Einführung Ports Schreibweisen für das setzen und löschen von Bits Registerinhalte verändern Richtungsregister DDRx - Datenrichtungsregister Pull-Up u. Pull-Down Widerstände Binärzahlen von 1 bis Bit-Operatoren Maskieren von Bits Kapitel Variablen und Datentypen Variablen deklarieren und initialisieren Datentypen Mit Variablen arbeiten Sichtbarkeit und Lebensdauer von Variablen vers. Konstanten 10 3 ATmega88pa ATmega88PA Eckdaten AVR-Dragon In-System-Programming Fotos Avrdude Brennen und Testen mit avrdude readflash writeflash readeeprom writeeeprom readhfuse und readlfuse writefuseshex Quellcode Quellcode dummy001.c Makefile

3 Inhaltsverzeichnis Seite IIIvon Install unter Linux

4 1 1Kapitel 1.1 Einführung Ports Datenrichtungsregister DDRD, DDRB, DDRC 1 = Ausgang 0 = Eingang Eingaberegister PIND, PINB, PINC 1 = High-Signal 0 = Low-Signal Ausgaberegister PORTD, PORTB, PORTC Tabelle = Ausgangspin auf High 0 = Ausgangspin auf Low Tabelle 1.1: Ports PIN ˆx bin hex B Schreibweisen für das setzen und löschen von Bits PIN = BIN = HEX = B0 1. hex - ISO-C 1 DDRB = 0 xb0 ;

5 1 Kapitel Seite 2von bin - kein ISO-C 1 DDRB = 0 b ; 3. übersichtliche Schreibweise 1 DDRB = (1<< DDB4 ) (1 < < DDB5 ) (1 < < DDB7 ); Registerinhalte verändern gesamte Register wird überschrieben! 1 DDRD = 0 xff ; // Richtungsregister PORTD auf ( ) 2 PORTD = 0 x0f ; // untersten Bits auf High ( ) 4 PIND = 0 x0f ; // ( ) Eingabe 1= High, 0= Low 5 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 6 PORTD = 0 x0f ; // ( ) Ausgabe 1= High, 0= Low 1 Bit setzen 1 PORTD = (1 < < PD7 ); oberste Bit von PORTD auf High setzen 3 PIND = 0 x8f ; // ( ) Eingabe 1= High, 0= Low 4 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 5 PORTD = 0 x8f ; // ( ) Ausgabe 1= High, 0= Low mehrere Bits setzen 1 PORTD = (1<< PD6 ) (1 < < PD5 ) (1 < < PD4 ); Bits von PORTD auf High setzen 3 PIND = 0 xff ; // ( ) Eingabe 1= High, 0= Low 4 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 5 PORTD = 0 xff ; // ( ) Ausgabe 1= High, 0= Low

6 1 Kapitel Seite 3von 28 1 Bit löschen 1 PORTD &= ~(1 < < PD0 ); unterste Bit l ö schen 3 PIND = 0 xfe ; // ( ) Eingabe 1= High, 0= Low 4 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 5 PORTD = 0 xfe ; // ( ) Ausgabe 1= High, 0= Low mehrere Bits löschen 1 PORTD &= ~((1 < < PD3 ) (1 < < PD2 )); Bits PD3 u. PD2 lö schen 3 PIND = 0 xf2 ; // ( ) Eingabe 1= High, 0= Low 4 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 5 PORTD = 0 xf2 ; // ( ) Ausgabe 1= High, 0= Low 1 Bit invertieren 1 PORTD ^= PORTD ; gesamte PORTD invertieren ( toggeln ) 3 PIND = 0 x0d ; // ( ) Eingabe 1= High, 0= Low 4 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 5 PORTD = 0 x0d ; // ( ) Ausgabe 1= High, 0= Low 7 PORTD ^= (1 < < PD0 ); Portbit D0 invertieren ( toggeln ) 9 PIND = 0 x0c ; // ( ) Eingabe 1= High, 0= Low 10 DDRD = 0 xff ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 11 PORTD = 0 x0c ; // ( ) Ausgabe 1= High, 0= Low 1 Bit verschieben 1 PORTD = (1 < < PD1 ); // Bit D1 setzen

7 1 Kapitel Seite 4von 28 2 PORTD = ( PORTD < <4); // PORTD um 4 Stellen nach links PORTD = ( PORTD < <2); // PORTD um 2 Stellen nach rechts Richtungsregister DDRx - Datenrichtungsregister 0 im DDR = Portpin als Eingang 1 im DDR = Portpin als Ausgang 1 DDRD = (1 < < PD0 ); // Richtungsregister PORTD PinD0 auf Ausgang setzen -> PD0 = 1 2 DDRD &= ~(1 < < PD1 );// Richtungsregister PORTD PinD1 auf Eingang setzen -> PD1 = 0 1 DDRD = 0 xf0 ; // PORTD.7 Ausgang -> DDRB.7 = 1 4 PORTD.6 Ausgang -> DDRB.6 = 1 5 PORTD.5 Ausgang -> DDRB.5 = 1 6 PORTD.4 Ausgang -> DDRB.4 = 1 7 PORTD.3 Eingang <- DDRB.3 = 0 8 PORTD.2 Eingang <- DDRB.2 = 0 9 PORTD.1 Eingang <- DDRB.1 = 0 10 PORTD.0 Eingang <- DDRB.0 = Pull-Up u. Pull-Down Widerstände Datenleitung auf ein ein eindeutiges Pozential (+3,3V o. +5V) bzw. gegen Masse ziehen. externer Pull-Up Widerstand 10kOhm - 20KOhm. interner Pull-Up Widerstand Tabelle DDRD = 0 xf0 ; // Richtungsregister PORTD = PORTD = (1<< PD1 ) (1 < < PD0 ); // Pull -Up Widerstand für PD1 u. PD0 aktivieren 3 PORTD = (1<< PD7 ) (1 < < PD6 ); // PD7 u. PD6 auf High setzen

8 1 Kapitel Seite 5von 28 Tabelle 1.2: Pull-Up Widerstand DDRx Portx Zustand I/O-Pins 0 0 Eingang 0 1 Eingang mit int. Pull-Up Widerstand 1 0 Ausgang auf Low 1 1 Ausgang auf High 5 PIND = 0 xc0 ; // ( ) Eingabe 1= High, 0= Low 6 DDRD = 0 xf0 ; // ( ) Datenrichtungsregister 1= Ausgang, 0= Eingang 7 PORTD = 0 xc0 ; // ( ) Ausgabe 1= High, 0= Low Binärzahlen von 1 bis 15 Tabelle 1.3 Tabelle 1.3: Binaer-Hexadezimalzahlen hex dez bin a b c d e f

9 1 Kapitel Seite 6von Bit-Operatoren 1 c = (a & b); // bitweise UND, Bits löschen, ( Maskierung von Bits ) 2 c = ( a b); // bitweise ODER. Bits setzen 3 c = ( a ^ b); // bitweise XOR exclusiv Oder, einzelne Bits umschalten 4 c = ~ a; // bitweise Negation, Bits invertieren 5 c = ( a << n); // Linksshift, Bits um n- Stellen verschieben, Multiplikation mit einer 2 er - Potenz = 2^ n 6 c = ( a >> n); // Rechtsshift, Bits um n- Stellen verschieben, Division mit einer 2 er - Potenz = 2^ n 7 c =!(a && b); // NAND, negierten UND 8 c =!(a b); // NOR, negierten ODER Tabelle 1.4 Tabelle 1.4: Wahrheitstabelle E1 E2 UND ODER XOR NEG NAND NOR Tabelle 1.5 Tabelle 1.5: Bit-Operatoren OP Dezimal E E E1 & E E1 E E1 ˆ E ~ << << >>

10 1 Kapitel Seite 7von Maskieren von Bits // data = 0 x00 2 & // 0 x // Ergebnis // wenn data = 0 x08 6 & // 0 x // Ergebnis true

11 8 2Kapitel 2.1 Variablen und Datentypen Variablen deklarieren und initialisieren Deklaration Datentyp u. Variable dem Compiler bekannt machen 1 int z; // Deklaration u. Definition Definition Speicherplatz reservieren Initialisierung Variablen einen Wert zuweisen 1 int z = 4; // Deklaration u. Definition mit Initialisierung Trennung von Deklaration und Definition Anwendung: Programm mit mehreren C-Dateien 1 extern int y; // nur eine Deklaration 3 int y; // Definition erfolgt in einer anderen C- Datei Datentypen Tabelle 2.1

12 2 Kapitel Seite 9von 28 Tabelle 2.1: Datentypen Typ Bit Wertebereich int8_t 8 char uint8_t 8 unsigned char int16_t 16 short, int uint16_t 16 unsigned short, int int32_t 32 long uint32_t 32 unsigned long int64_t 64 long long uint64_t 64 unsigned long long Mit Variablen arbeiten 1 # include <avr /io.h> 2 uint8_ t a =2, b =3, hilf ; // Deklaration globaler Variablen 3 int main ( void ){ 4 hilf = a; 5 a = b; 6 b = hilf ; 7 } Werden Variablen nicht global deklariert, optimiert der Compiler sie einfach weg. (Speicherplatz sparen) Möglichkeiten, um die Optimierung zu umgehen Optimierungsgrad des Compilers reduzieren volatile vor die Variable setzen Schlüsselwort volatile bedeutet, die Variable wird bei jedem Lesevorgang neu aus dem Speicher gelesen. Anwendung: Interrupt Service Routinen (ISR) 1 # include <avr /io.h> 2 int main ( void ){ 3 volatile uint8_ t a =2, b =3, hilf ; // lokale Variablen mit dem Schl ü sselwort volatile 4 hilf = a; 5 a = b; 6 b = hilf ; 7 }

13 2 Kapitel Seite 10von Sichtbarkeit und Lebensdauer von Variablen vers. Konstanten vers. Globale Variablen Lokale Variablen Statische Variablen Gedächtnis einer Funktion (behält den Wert im Speicher) Konstante (nicht veränderbar) define - Makro (ersetzen) 1 /* ju variablen. c */ 2 /* Variablen : global, lokal, statisch ; Konstante, define */ 3 # include <stdio.h> 4 # include <math.h> 5 # include <stdlib.h> 6 # include <stdbool.h> 7 # include <stdint.h> // int8_t, uint8_t 9 // Datentyp bool 10 typedef int bool ; 11 # define true 1 12 # define false 0 14 const double PI = ; // Konstante ( nicht ver ä nderbar ) 16 // Makro ( ersetzen ) 17 # define LED1 PB0 // Portpin PB0 18 # define LED2_ ON ( PORTB = (1 < < PB1 )) // Portpin PB1 HIGH 19 # define LED2_OFF ( PORTB &= ~(1 < < PB1 )) // Portpin PB1 LOW 21 uint8_ t z1, z2; // Deklaration globaler Variablen 23 uint8_ t zaehler1 ( void ){ // Funktion 24 uint8_ t i = 1; // Deklaration lokaler Variablen 25 i ++; 26 z1=i; 27 return z1;

14 2 Kapitel Seite 11von } 30 uint8_ t zaehler2 ( void ){ // Funktion 31 static uint8_ t i = 1; // Deklaration statische Variable 32 i ++; 33 z2=i; 34 return z2; 35 } 37 int main ( void ){ 38 // variablen 39 uint8_ t ergebnis = 0; 40 printf ("\ nvariablen : global, lokal, statisch \n"); 42 // Funktionsaufruf 43 ergebnis = zaehler1 (); printf ("Zä hler1 = %d\n",ergebnis ); 44 ergebnis = zaehler1 (); printf ("Zä hler1 = %d\n",ergebnis ); 45 ergebnis = zaehler1 (); printf ("Zä hler1 = %d\n",ergebnis ); 47 ergebnis = zaehler2 (); printf ("Zä hler2 = %d\n",ergebnis ); 48 ergebnis = zaehler2 (); printf ("Zä hler2 = %d\n",ergebnis ); 49 ergebnis = zaehler2 (); printf ("Zä hler2 = %d\n",ergebnis ); 51 return 0; 52 }

15 12 3ATmega88pa 3.1 ATmega88PA Eckdaten Features Tabelle 3.1: Eckdaten ATmega88PA Pin Count 28/32 Flash (Bytes) 8K SRAM (Bytes) 1K EEPROM (Bytes) 512 Interrupt Vector Size (instruction word/vector) 1 General Purpose I/O Lines 23 SPI 2 TWI (I2C) 1 USART 1 ADC 10-bit 15kSPS ADC Channels 8 8-bit Timer/Counters 2 16-bit Timer/Counters AVR-Dragon Der AVR-Dragon unterstützt aktuell die folgenden Protokolle: In-System-Programming (ISP) über ISP Header High Voltage Programming (HVSP) über HVPROG Header Parallel Programming (PP) über HVPROG Header JTAG Programming (JTAG) über JTAG Header debugwire In-System-Programming ISP Header

16 3 ATmega88pa Seite 13von 28 Der ISP Header nutzt das 6-polige AVR ISP Pin-Layout zur Verbindung mit externen Boards. Das ermöglicht die Verwendung bereits vorhandener Kabel. Die externen Boards sollten daher ebenfalls einen 6-poligen ISP-Anschluß verwenden. Die Signale dieses Headers sind»level-converted«, erlauben also auch den Anschluß an Boards mit abweichender Stromversorgung (1,8V 5,5V) Fotos Abbildung 3.1 Abbildung 3.1: ATmega88-Architektur

17 3 ATmega88pa Seite 14von 28 Abbildung 3.2 Abbildung 3.2: ATmega88-Block-Diagramm Abbildung 3.3 Abbildung 3.3: ATmega88-Grundschaltung Abbildung 3.4 Abbildung 3.5

18 3 ATmega88pa Seite 15von 28 Abbildung 3.4: Spannungsstabilisierung Abbildung 3.5: ATmega88-Pins

19 3 ATmega88pa Seite 16von 28 Abbildung 3.6 Abbildung 3.6: ISP-Schnittstelle Abbildung 3.7 Abbildung 3.7: ATmega88-Schaltung1 Abbildung 3.8 Abbildung 3.9

20 3 ATmega88pa Seite 17von 28 Abbildung 3.8: ATmega88-Schaltung2 Abbildung 3.9: ATmega88-Lauflicht

21 18 4Avrdude 4.1 Brennen und Testen mit avrdude 1 PROGNAME = led_blink01 2 CPU = atmega88p 3 PROGRAMMER = dragon_isp 4 PORT = usb readflash readflash 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :r: readflash. hex :i Der Flash-Speicher des Mikrocontrollers wird in die Datei ausgelesen writeflash writeflash 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :w:$( PROGNAME ). hex :i 3 oder 5 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :w: readflash. hex :i Die mit readflash ausgelesenen Daten können mit writeflash zurück geschrieben werden. Das braucht man zum Beispiel, um Kopien von Mikrocontrollern herzustellen, ohne auf den Quelltext zurückzugreifen.

22 4 Avrdude Seite 19von readeeprom readeeprom 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U eeprom :r: readeeprom. hex :i Wirkt wie readflash, nur dass der EEPROM-Speicher gelesen wird writeeeprom writeeeprom 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U eeprom :w: readeeprom. hex :i Das Tool schreibt die mit readflash gelesenen Daten zurück. Auch dieser Vorgang gehört zum Herstellen von Kopien readhfuse und readlfuse readhfuse und readlfuse 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -u -U hfuse :r: readhfuse. binaerzahl :b -U lfuse :r: readlfuse. binaerzahl :b Diese beiden Tools lesen das High-Fuse-Byte bzw. das Low-Fuse-Byte des Mikrocontrollers jeweils in die Datei. Die Fuse-Bytes enthalten die Fuse-Bits, die für grundlegende Funktionen stehen. Ganz wichtig: Eine Null bedeutet, dass die mit dem Bit verbundene Funktion (siehe Datenblatt), aktiviert ist. Das Bit wird auch als programmiert bezeichnet. Die Eins bedeutet: Funktion ist deaktiviert. Das ist entgegen der Gewohnheit und hat wohl damit zu tun, dass Bits im gelöschten Flash-Speicher im Zustand 1 sind. unprogrammed=1; programmed=0 Die Datei enthält beispielsweise nach dem Aufruf von readhfuse beim fabrikneuen ATmega88PA die folgenden Zeichen: Fuse High Byte

23 4 Avrdude Seite 20von 28 Datei readhfuse.binaerzahl // Bit No. 2 fabrikneu : 0 b = 0 xdf 3 praxis : 0 b = 0 xdf // keine Ä nderung Tabelle 4.1 Tabelle 4.1: High Fuse Byte High Fuse Byte Bit Description Default Value RSTDISBL 7 External Reset Disable 1 DWEN 6 debugwire Enable 1 SPIEN 5 SPI programming enabled 0 WDTON 4 Watchdog Timer Always On 1 EESAVE 3 EEPROM memory is preserved through 1 BODLEVEL2 2 Brown-out Detector trigger level 1 BODLEVEL1 1 Brown-out Detector trigger level 1 BODLEVEL0 0 Brown-out Detector trigger level 1 Low Fuse Byte CKDIV8 deaktivieren, damit der Mikrocontroller mit einer Taktfrequenz von 8 MHz arbeitet. Datei readlfuse.binaerzahl // Bit No. 2 fabrikneu : 0 b = 0 x62 3 praxis : 0 b = 0 xe2 // CKDIV8 deaktivieren Tabelle writefuseshex Hexadezimalzahl ANPASSEN!!! 1 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U hfuse :w:0 xdf :m 2 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U lfuse :w:0 xe2 :m Der Aufruf schreibt die Fuse-Bits in Hexadezimaler Schreibweise.

24 4 Avrdude Seite 21von 28 Tabelle 4.2: Low Fuse Byte Low Fuse Byte Bit Description Default Value CKDIV8 7 Divide clock by 8 0 CKOUT 6 Clock output 1 SUT1 5 Select start-up time 1 SUT0 4 Select start-up time 0 CKSEL3 3 Select Clock source 0 CKSEL2 2 Select Clock source 0 CKSEL1 1 Select Clock source 1 CKSEL0 0 Select Clock source 0

25 22 5Quellcode 5.1 Quellcode dummy001.c Programm 5.1 dummy001.c Listing 5.1: Quellcode in C, dummy001.c 1 /* dummy001.c */ 2 /* ** 3 Titel : : dummy 4 Funktion : Led ein aus 5 Schaltung : LED verbinden mit Port D.0 6 Hardware : AVR Dragon 7 CPU = atmega88p 8 PROGRAMMER = dragon_isp 9 PORT = usb 10 flashen : avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :w:$( PROGNAME ). hex :i 11 Prozessor : ATmega88PA mit 8 MHz = Sprache : C 13 Datum : ** */ 16 # define F_ CPU UL // Taktfrequenz : 8 MHz = # include <avr /io.h> 18 # include < util / delay. h > // definiert _ delay_ ms () 20 // eig. C- Funktionsbibliothek 21 // Funktionsaufruf : int a = potenziere (2,3) ; // basis, exponent 22 //# include " meinefkt.h" 24 // Datentyp bool 25 typedef int bool ; 26 # define true 1 27 # define false 0 29 // const double PI = ; 31 // Portpin

26 5 Quellcode Seite 23von # define LED PD0 34 int main ( void ){ 35 /* 36 DDRD = (1 < < PD0 ); // Richtungsregister PORTD PIND0 Pin2 auf Ausgang setzen 37 // 0 b > 0 b ; --> setzen 38 */ 39 DDRD = (1<< LED ); // DDRD = DDRD (1<< LED ); 42 while (1) { 44 /* 45 // Version 1 46 PORTD = (1 < < PD0 ); // Portpin PD0 setzen = HIGH 47 // 0 b > 0 b ; --> setzen 48 _delay_ms (1000) ; // 1s warten 49 PORTD &= ~(1 < < PD0 ); // Portpin PD0 loeschen = LOW 50 // 0 b > 0 b ; --> loeschen 51 _delay_ms (1000) ; // 1s warten 52 */ 54 /* 55 // Version 2 56 PORTD = (1 < < LED ); // Portpin PD0 setzen = HIGH 57 _delay_ms (1000) ; // 1s warten 58 PORTD &= ~(1 < < LED ); // Portpin PD0 loeschen = LOW 59 _delay_ms (1000) ; // 1s warten 60 */ 62 // Version 3 63 PORTD ^= (1 < < LED ); // Portpin PD0 toggeln HIGH / LOW 64 _delay_ms (1000) ; // 1s warten 67 } 68 }

27 5 Quellcode Seite 24von Makefile Programm 5.2 Makefile 1 # Makefile - Mikrocontroller C 2 # ju Jan -21 T14 :26 4 # ####################### 5 # Quellcode 7 ### C - Progammname 8 PROGNAME = dummy TARGETS =\ 11 $( PROGNAME ). hex \ Listing 5.2: Makefile 14 # ####################### 15 # Variablen 17 ### linux 18 CXX := avr -g++ 19 CC := avr - gcc 21 ### Hardware : AVR Dragon 22 # lsusb o. dmesg 23 # ATmega88PA 24 CPU = atmega88p 25 PROGRAMMER = dragon_isp 26 PORT = usb 27 ### Hardware : myavr Board MK2 USB 28 # CPU = atmega8 29 # PROGRAMMER = avr # PORT =/ dev / ttyusb0 31 # 32 ### Compileroptimierung : 0, 1, 2, 3, s ( Ressourcen einsparen u. Lauftzeit optimieren ; 0= min s = max ) 33 OPTI =-O0 34 # 35 CXXFLAGS =- mmcu =$( CPU ) -Wall -g -Wextra -std =c ++14 $( OPTI ) -Wno - missing - field - initializers 36 CXXLIBS = meinefkt.c -lm 37 #

28 5 Quellcode Seite 25von CFLAGS =- mmcu =$( CPU ) -Wall -g -Wextra -std = c11 $( OPTI ) -Wno - missing - field - initializers 39 CLIBS = meinefkt.c -lm 41 # ####################### 42 # Compilieren 44 all : $( TARGETS ) 47 %. hex : %. cpp 48 avr -g++ $( CXXFLAGS ) $( PROGNAME ). cpp $( CXXLIBS ) -o $( PROGNAME ). elf 49 avr - objcopy $( PROGNAME ). elf -O ihex $( PROGNAME ). hex 51 %. hex : %.c 52 avr - gcc $( CFLAGS ) $( PROGNAME ).c $( CLIBS ) -o $( PROGNAME ). elf 53 avr - objcopy $( PROGNAME ). elf -O ihex $( PROGNAME ). hex 56 # ####################### 57 # Brennen und Testen mit avrdude 59 ### Vorrausetzung : gruppe dialout : Serielle Ger ä te benutzen 60 ### sudo usermod - ag dialout jan 61 ### writeflash = brennen = flashen 62 flashen : 63 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :w:$( PROGNAME ). hex :i echo " Flash - Speicher = Programmspeicher = Quellcode ; ca x beschreibbar " 66 readflash : 67 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :r: readflash. hex :i echo " Flash - Speicher = Programmspeicher = Quellcode auslesen " 70 writeflash : echo " Flash - Speicher = Programmspeicher = Quellcode ; ca x beschreibbar " 72 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U flash :w: readflash. hex :i

29 5 Quellcode Seite 26von readeeprom : 75 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U eeprom :r: readeeprom. hex :i echo " EEPROM - Speicher = Festwertspeicher auslesen " 78 writeeeprom : 79 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U eeprom :w: readeeprom. hex :i echo " EEPROM - Speicher = Festwertspeicher ; ca x beschreibbar " 82 readfuse : 83 avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -u -U hfuse :r: readhfuse. binaerzahl :b -U lfuse :r: readlfuse. binaerzahl :b echo " Fuse - Bits wurde in Datei readhfuse. binaerzahl u. readlfuse. binaerzahl geschrieben." 86 # writefuse : 87 ### siehe AVR Datenblatt_ATmega88PA_komplett. pdf 88 ### Fuse High Byte 89 ### // Bit No. 90 ### fabrikneu : 0 b = 0 xdf 91 ### praxis : 0 b = 0 xdf // keine Ä nderung 92 ### Low Fuse Byte 93 ### CKDIV8 deaktivieren, damit der Mikrocontroller mit einer Taktfrequenz von 8 MHz arbeitet. 94 ### // Bit No. 95 ### fabrikneu : 0 b = 0 x62 96 ### praxis : 0 b = 0 xe2 // CKDIV8 deaktivieren 97 writefuse : echo " Achtung : Fuse High Byte u. Fuse Low Byte siehe AVR Datenblatt_ATmega88PA_komplett. pdf " echo " Befehle sind deaktiviert!" 100 # avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U hfuse :w:0 xdf :m 101 # avrdude -p $( CPU ) -c $( PROGRAMMER ) -P $( PORT ) -U lfuse :w:0 xe2 :m 103 # ####################### 104 # Info 106 info : echo " Info : Makefile - Mikrocontroller C; ju Jan -21 T14 :26 "

30 5 Quellcode Seite 27von 28 "avr - gcc " echo " Hardware : AVR Dragon " " AVR Datenblatt_ATmega88PA_komplett. pdf " " CPU = atmega88p " echo " PROGRAMMER = dragon_ isp " " PORT = usb " 116 # ####################### 117 # Hilfe 119 hilfe : " make " echo " make clean " echo " make flashen " echo " make readflash " echo " make writeflash " echo " make readeeprom " echo " make writeeeprom " echo " make readfuse " echo " make writefuse // Achtung : Befehle sind deaktiviert!" echo " make hilfe " echo " make info " 132 # ####################### 133 # clean 135 clean : 136 rm -f $( TARGETS ) *. hex 137 rm -f $( TARGETS ) *. elf 138 rm -f $( TARGETS ) *.o *.*~ *~ Install unter Linux Programm 5.3 gcc-avr avrdude 1 #!/ bin / bash -e 2 # chmod u+x 3 # gcc - avr avrdude Listing 5.3: gcc-avr avrdude 5 sudo apt - y update && sudo apt - y upgrade

31 5 Quellcode Seite 28von 28 7 sudo apt - y install gcc - avr 8 sudo apt - y install binutils - avr 9 sudo apt - y install avr - libc 10 sudo apt - y install avrdude 11 # sudo usermod - ag dialout jan 13 sudo apt autoremove

AVR-Mikrocontroller mit dem GCC programmieren

AVR-Mikrocontroller mit dem GCC programmieren 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

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Programmieren in C Teil 3: Mikrocontrollerprogrammierung Programmieren in C Teil 3: Mikrocontrollerprogrammierung 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Tag 1 Hello World 08/30/10 Fachbereich Physik Institut für Kernphysik

Mehr

Parallel-IO. Ports am ATmega128

Parallel-IO. Ports am ATmega128 Parallel-IO Ansteuerung Miniprojekt Lauflicht Ports am ATmega128 PortE (PE7...PE0) alternativ, z.b. USART0 (RS232) 1 Pin von PortC Port C (PC7...PC0) 1 Parallel-IO-Port "Sammelsurium" verschiedener Speicher

Mehr

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

Einführung in die Programmierung von Mikrocontrollern mit C/C++ Einführung in die Programmierung von Mikrocontrollern mit C/C++ Vorlesung Prof. Dr.-Ing. habil. G.-P. Ostermeyer Rechenleistung/Speicher Systemintegration Grundlagen der Mikrocontrollertechnik (Wiederholung)

Mehr

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

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet. U4 4. Übung U4 4. Übung Besprechung Aufgabe 2 Makros Register I/O-Ports U4.1 U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler

Mehr

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

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang : Produktinformationen Basis Set Atmel Atmega8 & ISP Programmer Lieferumfang : 1 Steckboard 840 Pin 1 USB ISP Programmer mit Kabel 1 Kabelsatz 32-teilig 1 Atmega8L 5 LED 3mm Klar Rot/Gelb/Grün/Blau/Weiss

Mehr

Wer möchte, kann sein Programm auch auf echter Hardware testen

Wer möchte, kann sein Programm auch auf echter Hardware testen U4 3. Übungsaufgabe U4 3. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-μC Register I/O-Ports AVR-Umgebung Peripherie U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Einführung in die Welt der Microcontroller

Einführung in die Welt der Microcontroller Übersicht Microcontroller Schaltungen Sonstiges Einführung in die Welt der Microcontroller Übersicht Microcontroller Schaltungen Sonstiges Inhaltsverzeichnis 1 Übersicht Möglichkeiten Einsatz 2 Microcontroller

Mehr

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Was ist ein Microcontroller Wikipedia: A microcontroller (sometimes abbreviated µc, uc or MCU) is a small computer on a single integrated

Mehr

AVR UART. ELV Modul: http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=28776&flv=1&berei ch=&marke=

AVR UART. ELV Modul: http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=28776&flv=1&berei ch=&marke= AVR UART 1. Einleitung In dieser Anleitung soll beispielhaft gezeigt werden, wie die serielle Kommunikation zwischen einem AVR Mikroprozessor und dem PC aufgebaut wird. Hierbei wird erst der einfache Fall

Mehr

Selbstbau-USB-Programmiergerät für AVR

Selbstbau-USB-Programmiergerät für AVR Jean-claude.feltes@education.lu 1 Selbstbau-USB-Programmiergerät für AVR Nach Christian Ullrich Homepage: www.ullihome.de Weitere Infos bei http://weigu.lu/a/pdf/micel_f6_programmieradapter.pdf Schaltung

Mehr

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

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7 1 Vortrag Atmega 32 Von Urs Müller und Marion Knoth Urs Müller Seite 1 von 7 Inhaltsverzeichnis 1 Vortrag Atmega 32 1 1.1 Einleitung 3 1.1.1 Hersteller ATMEL 3 1.1.2 AVR - Mikrocontroller Familie 3 2 Übersicht

Mehr

Autonome Mobile Systeme. Dr. Stefan Enderle

Autonome Mobile Systeme. Dr. Stefan Enderle Autonome Mobile Systeme Dr. Stefan Enderle 2. Mikrocontroller Einleitung Unterschied Controller / Prozessor: Speicher (RAM, Flash, Eprom) intern Viele I/Os (Digital, Analog) Bus-Unterstützung (Seriell,

Mehr

CCS Compiler Tutorial mit Beispielen

CCS Compiler Tutorial mit Beispielen CCS Compiler Tutorial mit Beispielen Mit diesem Tutorial werden Sie den CCS Compiler kennenlernen, um mit ihm Projekte selbstständig erstellen zu können. Es werden zugleich die Programmierung und die Grundlagen

Mehr

Installation & Verwendung. Version 1.0. WinAVR

Installation & Verwendung. Version 1.0. WinAVR Installation & Verwendung Version 1.0 WinAVR Allgemeines Der estick ist ein USB basiertes Entwicklungs-Board für Atmel AT90USB162 Mikrocontroller. Einfache, anschauliche Anwendungen und Beispiele basierend

Mehr

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

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U23 2008. Abend 3: #2 Abend 3: Alexander Neumann e.v. http://koeln.ccc.de Köln, 3.11.2008 Gliederung 1 Zahlendarstellung n-adische Darstellung natürlicher Zahlen negative Zahlen 2 Logikfunktionen 3 Register

Mehr

Flashen von Atmel-Prozessoren mittels In System Programming (ISP).

Flashen von Atmel-Prozessoren mittels In System Programming (ISP). Flashen von Atmel-Prozessoren mittels In System Programming (ISP). Nick, DF1FO, stellt den jeweils letztaktuellen Assembler-Sourcecode für seine exzellenten Entwicklungen für ARDF auf seiner homepage www.mydarc.de/df1fo

Mehr

BLIT2008-Board. Uwe Berger

BLIT2008-Board. Uwe Berger 11/2008 (BLIT) 2 Inhalt Was sind Mikrocontroller AVR-Mikrocontroller Werkzeugkasten Prinzipielles zur Programmierung BLIT2008-Board 11/2008 (BLIT) 3 Was sind Mikrocontroller AVR-Mikrocontroller Werkzeugkasten

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

U4 Grundlagen der C-Programmierung

U4 Grundlagen der C-Programmierung U4 Grundlagen der C-Programmierung U4 Grundlagen der C-Programmierung Makros Enums und Typedefs Deklaration und Definition Compileroptimierungen U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche

Mehr

i2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF8574 8-Bit I/O Port-Expander Dokument NR.: I2C-001-D-01

i2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF8574 8-Bit I/O Port-Expander Dokument NR.: I2C-001-D-01 DA CL Dokument NR.: I2C-001-D-01 I2C-001 KURZBECHREIBUNG I 2 C Modul mit PCF8574 8-Bit I/O Port-Expander P Bitte denken ie an die Umwelt, bevor ie diese Datei ausdrucken DA CL Inhaltsverzeichnis 1. Modul

Mehr

Befehlssatz AVR RISC Controller

Befehlssatz AVR RISC Controller Befehlssatz AVR RISC Controller Design-Philosophie des AVR Befehlssatzes Assembler-Sprache AVR-Befehlssatz Philosophie RISC = Reduced Instruction Set Computing keine komplexen Befehle möglichst symmetrischer

Mehr

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein: Blinken Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein: // Projekt 1 - LED Blinker int ledpin = 13; void setup() pinmode(ledpin, OUTPUT); void loop() digitalwrite(ledpin, HIGH);

Mehr

Serie 8: Microcontroller 17./18.07.2014

Serie 8: Microcontroller 17./18.07.2014 Serie 8: Microcontroller 17./18.07.2014 I. Ziel der Versuche Erster Erfahrungen mit einem Microcontroller sollen gesammelt werden, die grundlegenden Ein- Ausgabe-Operationen werden realisiert. II. Vorkenntnisse

Mehr

i2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander Dokument NR.: I2C-002-D-01

i2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander Dokument NR.: I2C-002-D-01 DA CL Dokument NR.: I2C-002-D-01 I2C-002 KURZBECHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander P Bitte denken ie an die Umwelt, bevor ie diese Datei ausdrucken DA CL Inhaltsverzeichnis 1. Modul

Mehr

11: Echtzeitbetriebssystem ucos-ii

11: Echtzeitbetriebssystem ucos-ii 11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren

Mehr

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB Projekt: Markus Sellner Hardware: AT90USB162 auf Entwicklerplatine AVR-USB-162 von Olimex erweitert um zwei 7-Segment-Anzeigen Aufgabe: Mit

Mehr

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme EMES: Eigenschaften mobiler und eingebetteter Systeme Prozessoren für mobile und 00101111010010011101001010101 eingebettete Systeme II: Die AVR-Architektur Dipl. Inf. Jan Richling Wintersemester 2004/2005

Mehr

Einrichten der AVR-C-Programmierung unter Ubuntu-Linux 12.04

Einrichten der AVR-C-Programmierung unter Ubuntu-Linux 12.04 Dieter Holzhäuser http://www.system-maker.de E-Mail: diehol@system-maker.de 3.5.2 Überarbeitung 27.2.23 Überarbeitung.3.23 Einrichten der AVR-C-Programmierung unter Ubuntu-Linux 2.4 Ein Erfahrungsbericht

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

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

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich Seite 1 von 10 CU-R-CONTROL Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32 Autor: Christian Ulrich Datum: 08.12.2007 Version: 1.00 Seite 2 von 10 Inhalt Historie

Mehr

8.1 Grundsätzlicher Aufbau der Beispiele

8.1 Grundsätzlicher Aufbau der Beispiele 107 8 Beispiele Nachdem nun viele theoretische Grundlagen gelegt wurden, kann man mit dem Programmieren eines Mikrocontrollers beginnen. In den folgenden Kapiteln werden verschiedene Möglichkeiten der

Mehr

8.3 Taster am µcontroller

8.3 Taster am µcontroller 8.3 Taster am µcontroller AVR-KOMPENDIUM Nachdem im vorigen Beispiel das Port als Ausgang verwendet wurde erweitern wir dieses Beispiel um einen Taster - um auch das Einlesen von digitalen Signalen zu

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Tag 2 Eingabe und Interrupts

Tag 2 Eingabe und Interrupts Tag 2 Eingabe und Interrupts 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Taster Direkt an Portpin angeschlossen (etwa PINB0, PIND3) Pull-Up-Widerstände einschalten!

Mehr

Tutorial. Microcontroller. Grundlagen µc. Kapitel 1

Tutorial. Microcontroller. Grundlagen µc. Kapitel 1 Microcontroller Kapitel 1 Grundlagen µc µc Inhaltsverzeichnis 1 - Vorwort Seite 2 2 - Prinzipieller Programmablauf Seite 4 3 - ISR Interrupt Service Routine Seite 5 4 - Compiler Seite 7 5 - ATMega8 Seite

Mehr

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C Interrupts Funktionsprinzip Interrupts bei ATmega128 Beispiel in C Funktionsprinzip 1 Was ist ein Interrupt? C muss auf Ereignisse reagieren können, z.b.: - jemand drückt eine Taste - USART hat Daten empfangen

Mehr

Mikrocontroller - Schnelleinstieg

Mikrocontroller - Schnelleinstieg Mikrocontroller - Schnelleinstieg Am Beispiel des Atmel Mega8 Philipp Fabian Benedikt Maier Mikrocontroller Schnelleinstieg Seite 1 Mikrocontroller - Schnelleinstieg: - Was ist ein Mikrokontroller? - Welche

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Projektarbeit: Roulette Spiel

Projektarbeit: Roulette Spiel Projektarbeit: Roulette Spiel auf dem Atmega162 Im Fach Datenverarbeitungstechnik 1. Aufgabestellung Die Aufgabe verlangte es ein Reaktionsspiel auf einem Olimex AVR USB 162 zu entwerfen. Auf dem Entwicklerboard

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

Prinzipieller Grundaufbau eines einfachen C-Programmes

Prinzipieller Grundaufbau eines einfachen C-Programmes Prinzipieller Grundaufbau eines einfachen C-Programmes C unterscheidet zwischen Groß- und Kleinschreibung! Siehe zu den folgenden Erklärungen auch das Programm am Ende der nächsten Seite. Am Anfang aller

Mehr

Installation & Verwendung. Version 1.0. WinAVR & AVR Studio 4

Installation & Verwendung. Version 1.0. WinAVR & AVR Studio 4 Installation & Verwendung Version 1.0 WinAVR & AVR Studio 4 Allgemeines Der estick ist ein USB basiertes Entwicklungs-Board für Atmel AT90USB162 Mikrocontroller. Einfache, anschauliche Anwendungen und

Mehr

16. März 2016 artb5-v1.1

16. März 2016 artb5-v1.1 C 16. März 2016 artb5-v1.1 Inhaltsverzeichnis C 2 Was ist ein Programm?........................ 2 Was ist C?............................... 3 Grundgerüst - Hallo Welt....................... 3 Tools und

Mehr

Zusatzinformation zum USB-Flashdrive mit ARM und RS232

Zusatzinformation zum USB-Flashdrive mit ARM und RS232 Zusatzinformation zum USB-Flashdrive mit ARM und RS232 1. Belegung der LCD-Schnittstelle an JP3: REGISTER_SELECT READ_WRITE ENABLE DISPLAY_D0 DISPLAY_D1 DISPLAY_D2 DISPLAY_D3 DISPLAY_D4 DISPLAY_D5 DISPLAY_D6

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2 RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2 Bernd Klein 23. Mai 2011 Inhaltsverzeichnis 1 ARDUINO - RN-Control Library 3 1.1 Bibliothek RNControl...................... 3 1.2 Einführung............................

Mehr

Atmel AVR für Dummies

Atmel AVR für Dummies Atmel AVR für Dummies fd0@koeln.ccc.de 29.12.2005 Übersicht 1 Hardware Kurzvorstellung Atmega8 Programmierkabel (Eigenbau vs. Kommerzlösung) Alternative: Bootloader (Programmieren via rs232) Software Speicher

Mehr

Mikrocontroller stromsparend. Uwe Berger bergeruw@gmx.net

Mikrocontroller stromsparend. Uwe Berger bergeruw@gmx.net Mikrocontroller stromsparend programmieren Uwe Berger bergeruw@gmx.net Uwe Berger Beruf: Softwareentwickler Freizeit: u.a. mit Hardund Software rumspielen Linux seit ca. 1995 BraLUG e.v. bergeruw@gmx.net

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5 Inhalt Synchronisation Stromsparmodi Aufgabe 5: Ampel Hands-on: & Sleep Sommersemester

Mehr

Einführung in AVR-Assembler

Einführung in AVR-Assembler Einführung in AVR-Assembler Easterhack 2008 Chaos Computer Club Cologne Stefan Schürmans, BlinkenArea stefan@blinkenarea.org Version 1.0.4 Easterhack 2008 Einführung in AVR-Assembler 1 Inhalt Vorstellung

Mehr

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

Das Pollin Atmel Evaluationboard Ver. 2.01 unter Verwendung von MyAVR_Prog Tool und der Arduino IDE ein Kurztutorial Das Pollin Atmel Evaluationboard Ver. 2.01 unter Verwendung von MyAVR_Prog Tool und der Arduino IDE ein Kurztutorial Einleitung 15.07.2012 V0.9c Angeregt durch Torsten, DL8KFO habe ich mich angefangen

Mehr

I2C-Echtzeituhr am Atmel AVR

I2C-Echtzeituhr am Atmel AVR Fachbereich Elektrotechnik und Informatik Labor für Angewandte Informatik und Datenbanken Praktikum Mikrocontroller und DSP (EMD) Prof.Dr.-Ing. E. Coersmeier I2C-Echtzeituhr am Atmel AVR Name, Vorname

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Raspberry Pi Rezepte Teil 5

Raspberry Pi Rezepte Teil 5 Raspberry Pi Rezepte Teil 5 I²C: Zwischen zwei ICs Von Tony Dixon (UK) In den letzten beiden Folgen von Elektor.POST ging es um die seriellen Schnittstellen UART und SPI auf dem Expansion Header von RPi.

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

AVR-Mikrocontrollertechnik

AVR-Mikrocontrollertechnik 1/31 Ziele der Weiterbildung Vermitteln von Grundlagen zu den AVR Controllern Vermitteln von Assembler Grundlagen Vorstellen der benötigten Hard und Software Eigenständiges Programmieren der Controller

Mehr

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

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Alexander Neumann e.v. http://koeln.ccc.de Köln, 1.9.2008 1 Musterlösungen Aufgabe 1 & 2 2 Taster entprellen

Mehr

Programmierung mit NQC: Kommunikation zwischen zwei RCX

Programmierung mit NQC: Kommunikation zwischen zwei RCX Programmierung mit NQC: Kommunikation zwischen zwei RCX Teil : Grundlagen Martin Schmidt 7. Februar 24 Teil : Grundlagen Zahlensysteme : Binärsystem Ziffern: und Bit = binary digit (Binärziffer) Einfach

Mehr

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch}; Aufgabe 1: (15 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort

Mehr

Making the Internet of Things

Making the Internet of Things DARIUSH FOROUHER ITI Uni Lübeck DANIEL LOOS 3. Sem. MLS Making the Internet of Things EIN ÜBERBLICK ÜBER PHYSICAL COMPUTING PLATTFORMS Das Internet der Dinge Inhalt Übersicht Arduino Raspberry PI Andere

Mehr

Programmieren des AVR Microcontrollers mit GCC, libc 1.0.4

Programmieren des AVR Microcontrollers mit GCC, libc 1.0.4 LinuxFocus article number 352 http://linuxfocus.org Programmieren des AVR Microcontrollers mit GCC, libc 1.0.4 Zusammenfassung: Der AVR 8 Bit RISC Microcontroller von Atmel ist ein sehr verbreiteter Microcontroller.

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme EMES: Eigenschaften mobiler und eingebetteter Systeme Prozessoren für mobile und 111111111111111 eingebettete Systeme II: Die AVR-Architektur Dr. Felix Salfner, Dr. Siegmar Sommer Wintersemester 29/21

Mehr

Dokumentation Metronom

Dokumentation Metronom Beuth Hochschule für Technik Berlin Fachbereich VII Elektrotechnik Mechatronik Optometrie Studiengang Bachelor Elektrotechnik Dokumentation Metronom Projekt im Labor Mikrocomputertechnik Teilnehmer: Benjamin

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

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

AVR Web Server. Version 1.1. erstellt von. Ulrich Radig AVR Web Server Version 1.1 erstellt von Ulrich Radig 1 Vorwort: Der von mir aufgebaute AVR Webserver dient zum Steuern Messen und Regeln von diversen Gerätschaften genannt seien Garagentor, Lampen, Heizung

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Stopp-Uhr. Erstellen Sie ein Programm (in Zweier- bzw. Dreier-Gruppen), welches folgende Bedingungen erfüllt:

Stopp-Uhr. Erstellen Sie ein Programm (in Zweier- bzw. Dreier-Gruppen), welches folgende Bedingungen erfüllt: Inhalt Aufgabenstellung... 1 Lösung... 2 System (Kontextdiagramm)... 2 Zustands-Übergangs-Diagramm... 2 Codeierung... 4 Main-Module... 4 Module-Button... 6 Module Timer... 8 Anhang... 12 Datenflussdiagramm...

Mehr

Mikrocontroller. eine Einführung. Florian Schmitt - 16.11.2010 1 / 34

Mikrocontroller. eine Einführung. Florian Schmitt - 16.11.2010 1 / 34 Mikrocontroller eine Einführung Florian Schmitt - 16.11.2010 1 / 34 Inhalt Was sind Mikrocontroller, wozu sind sie nützlich? Unterschiede und Gemeinsamkeiten mit dem PC Wie funktionieren Mikrocontroller

Mehr

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern Anwendung und Programmierung von Mikrocontrollern Sommersemester 2013 Dr.-Ing. Hubert Zitt Kontakt: hubert.zitt@fh-kl.de www.fh-kl.de/~zitt Dr.-Ing. Hubert Zitt Seite 1 von 24 S65 Shield (von oben) Komponenten

Mehr

Steuern und Messen mit Raspberry Pi

Steuern und Messen mit Raspberry Pi 24 C 36 % 24 C Thanks to Openclipart, Fritzing, elinux.org, Liz Grazer Linuxtage 2014 (GLT14) Raspberry Pi Raspberry Pi ist ein kreditkartengroßer EinplatinenComputer, der von der Raspberry Pi Foundation

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Technische Informatik 2: Addressierung und Befehle

Technische Informatik 2: Addressierung und Befehle Technische Informatik 2: Addressierung und Befehle Memory Map Programm Speicher: Adresse $000-$FFF max. 4096 Byte für kompiliertes Programm Data Memory: Adresse $0000-$FFFF 32 8Bit Register 64 I/O Register

Mehr

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

Über die Status-Befehle kann die Peripherie der gesamten Hard- und Firmware abgefragt werden. DOKUMENTATION SCHWABENPLAN MC-PROTOKOLL 1. EINLEITUNG Das Schwabenplan MC-Protokoll wurde entwickelt um jede Hauptplatine aus unserem Lieferprogramm mit einer Software zu verbinden. Die Programmiersprache

Mehr

Software ubiquitärer Systeme

Software ubiquitärer Systeme Software ubiquitärer Systeme 2. Übung Constantin Timm Arbeitsgruppe Entwurfsautomatisierung für Eingebettete Systeme Lehrstuhl für Informatik 12 TU Dortmund constantin.timm@cs.tu-dortmund.de http://ls12-www.cs.tu-dortmund.de/staff/timm/

Mehr

Interrupt-Programmierung

Interrupt-Programmierung Interrupt-Programmierung Am Beispiel des ATMEGA16 Microcontrollers Beispiel: Messung der Betriebszeit Die Betriebszeit zeigt an, wie lange der Rechner seit dem Booten läuft Hier: Aktualisierung der Betriebszeit

Mehr

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

Die Entwicklungsumgebung. Labor Technische Informatik. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber Die Entwicklungsumgebung Labor Technische Informatik Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber 19.04.2011 Inhalt 1 Das Keil MCB1700 Board...2 2 Keil ARM MDK Toolchain...3 2.1 Projekterstellung...3

Mehr

Erster Schritt Vom Herunterladen bis zum Programmieren

Erster Schritt Vom Herunterladen bis zum Programmieren Erster Schritt Vom Herunterladen bis zum Programmieren Revision vom 27.07.2012 Verzeichnis 1. Einleitung 3 2. Herunterladen 4 3. Installation 5 4. Atmel Studio 6 6 4.1. Neues Projekt 7 4.2. Hinzufügen

Mehr

Wintersemester 08/09. Anwendungen der Prozessdatenverarbeitung Inverses Pendel

Wintersemester 08/09. Anwendungen der Prozessdatenverarbeitung Inverses Pendel Fachhochschule Wiesbaden Fachbereich Design Informatik Medien Studiengang Allgemeine Informatik WS 08/09 Wintersemester 08/09 Anwendungen der Prozessdatenverarbeitung Inverses Pendel bei Prof. Dr. Karl-Otto

Mehr

Die serielle Schnittstelle mit den Atmega32: USART

Die serielle Schnittstelle mit den Atmega32: USART Die serielle Schnittstelle mit den Atmega32: USART Die Schnittstelle hat die Bezeichnung USART, die für UNIVERSAL SYNCHRONOUS and ASYNCHRONOUS RECEIVER and TRANSMITTER steht. In dieser Abhandlung wird

Mehr

mytinyprog MK2 USB Stefan Hoffmann

mytinyprog MK2 USB Stefan Hoffmann myavr Projekt mytinyprog MK2 USB mytinyprog MK2 USB Erstellt von: Stefan Hoffmann Inhalt Einleitung... 3 Eigenschaften... 3 Entwicklungsumgebung:... 3 Grundlagen... 4 Hardware mytinyprog MK2 USB... 5 Hardwareüberblick...

Mehr

1 Assembler. 2 LED-Steuerung

1 Assembler. 2 LED-Steuerung Inhaltsverzeichnis Inhaltsverzeichnis... 1 1 Assembler... 2 2 LED-Steuerung... 2 3 Taster Abfrage ( Port I/O)... 3 3.1 Zahlensysteme... 3 3.2 Ausgabe... 4 3.2.1 Assembler-Sourcecode... 4 3.2.2 Assemblieren...

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG BIT LV-Nr. 439.026 SS2007 1 Datendefinitionen b) Unterteilung nach Typen: (Teil 2) void leer Pointer 2/4 Bytes Adresse von Objekten Arrays bei allen Datentypen

Mehr

Ergänzungen zum Manual OS V 2.05/2.06

Ergänzungen zum Manual OS V 2.05/2.06 Ergänzungen zum Manual OS V 2.05/2.06 SYSTEMRESOURCEN - PROGRAMM DOWNLOAD - Ab der Betriebssystemversion 2.05 haben die C-Control Units M-2.0 und Station 2.0 die Möglichkeit das Anwenderprogramm von einem

Mehr

Modellgestütztes Software Engineering. Versuch 5. Wintersemester 2015

Modellgestütztes Software Engineering. Versuch 5. Wintersemester 2015 Modellgestütztes Software Engineering Versuch 5 Wintersemester 2015 Version 7.0.1, 16. Dezember 2015 Inhalt 1 OOP IN C... 3 1.1 UMSETZUNG IN RAPHSODY (RIC)... 3 2 DIE ENTWICKLUNGSUMGEBUNG... 5 2.1 HARDWARE

Mehr

Programmierung von Mikrocontrollern am Beispiel des ATMEL ATmega32

Programmierung von Mikrocontrollern am Beispiel des ATMEL ATmega32 Fakultät Elektrotechnik und Informationstechnik, Professur für Prozessleittechnik Prozessinformationsverarbeitung (PIV) Programmierung von Mikrocontrollern am Beispiel des ATMEL ATmega32 Professur für

Mehr

Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land

Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land Mikrocontroller effektiv in C programmieren- ein noch unbekanntes Land Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land HS Pforzheim Fakultät Technik Mikrocontroller-Labor Tiefenbronner

Mehr

ESP Tutorium. Studienassistent: Ewald Moitzi. E-Mail: prog-tutor-ewald@iicm.edu. Gruppe 9

ESP Tutorium. Studienassistent: Ewald Moitzi. E-Mail: prog-tutor-ewald@iicm.edu. Gruppe 9 ESP Tutorium Studienassistent: Ewald Moitzi E-Mail: prog-tutor-ewald@iicm.edu Gruppe 9 Plan für Heute Zip am pluto Datentypen? If, Schleifen Debugging Fehlerquellen Compiler-Fehlermeldungen Fehlersuche

Mehr

Bedienung des Infineon Evaluationboards XC167

Bedienung des Infineon Evaluationboards XC167 Bedienung des Infineon Evaluationboards XC167 1. Übersicht Das XC167 Evaluationboard, nachfolgend kurz EVABoard genannt, ist ausgestattet mit dem Mikrocontroller SAK-XC167CI-16F40F der Fa. Infineon. Das

Mehr

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,

Mehr

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino Der I²C-Bus Vorstellung des Inter-Integrated Circuit -Bus Aufbau und Funktionsweise Beispiel PortExpander am Arduino Weitere Anwendungsmöglichkeiten Was ist der I²C-Bus entwickelt von Philips Anfang der

Mehr

SSA P_51_002_NEU. doc

SSA P_51_002_NEU. doc SSA P_51_002_NEU. doc Lehrfach: Mikrorechentechnik Versuch: Sieben-Segment-Anzeige Oc Hochschule Zittau/Görlitz; Fachbereich Elektro- und Informationstechnik Prof. Dr.-Ing. Kühne April 2005 Bearb.:Dipl.-Ing.

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

DTMF Sender. Es können 252 Zeichen maximal am Stück übertragen werden; die Länge des Strings wird mit einem Byte übertragen.

DTMF Sender. Es können 252 Zeichen maximal am Stück übertragen werden; die Länge des Strings wird mit einem Byte übertragen. DTMF Sender Author DK1RI, Version V02.1, 20160104 This project can be found in https://www.github.com/dk1ri Einleitung Dieses Interface ist eine Vorlage für ein Interface, das ein Gerät, das sich mit DTMF

Mehr

Programmierung Tiny45 für DCC Lokdecoder

Programmierung Tiny45 für DCC Lokdecoder Programmierung Tiny45 für DCC Lokdecoder Hier eine Beschreibung, der Programmierung des Tiny45 für den Lokdecoder. Zur Erstprogrammierung ist ein Programmer für Atmels AVR Mikrokontroller nötig (AVRISP

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr