Mikrocontroller. Programmierung in C. Jan Unger
|
|
- Götz Armbruster
- vor 7 Jahren
- Abrufe
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 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
MehrMicrocontroller 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.
MehrProgrammieren 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
MehrParallel-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
MehrEinfü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)
MehrMakros 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
MehrProduktinformationen. 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
MehrWer 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
MehrDeklarationen 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.
MehrEinfü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
MehrMicrocontroller 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
MehrAVR 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
MehrSelbstbau-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
MehrRechnerarchitektur 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
MehrAutonome 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,
MehrCCS 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
MehrInstallation & 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
MehrZahlendarstellung 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
MehrFlashen 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
MehrBLIT2008-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
MehrEinfü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).
MehrU4 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
Mehri2c-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
MehrBefehlssatz 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
MehrStarten 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);
MehrSerie 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
Mehri2c-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
Mehr11: 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
MehrAddieren 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
MehrProzessoren 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
MehrEinrichten 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
MehrWintersemester 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.
MehrCU-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
Mehr8.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
Mehr8.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
MehrGrundlagen. 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
MehrTag 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!
MehrTutorial. 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
MehrInterrupts. 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
MehrMikrocontroller - Schnelleinstieg
Mikrocontroller - Schnelleinstieg Am Beispiel des Atmel Mega8 Philipp Fabian Benedikt Maier Mikrocontroller Schnelleinstieg Seite 1 Mikrocontroller - Schnelleinstieg: - Was ist ein Mikrokontroller? - Welche
MehrDie 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,
MehrProjektarbeit: 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
MehrDr. 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
MehrPrinzipieller 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
MehrInstallation & 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
Mehr16. 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
MehrZusatzinformation 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
MehrInhaltsverzeichnis. 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
MehrRN-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............................
MehrAtmel 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
MehrMikrocontroller 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
MehrInhalt. Ü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
MehrEinfü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
MehrDas 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
MehrI2C-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
MehrEinfü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
MehrRaspberry 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.
MehrModellierung 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
MehrAVR-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
MehrU23 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
MehrProgrammierung 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
Mehrb) 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
MehrMaking 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
MehrProgrammieren 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.
MehrProgrammieren 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
MehrProzessoren 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
MehrDokumentation Metronom
Beuth Hochschule für Technik Berlin Fachbereich VII Elektrotechnik Mechatronik Optometrie Studiengang Bachelor Elektrotechnik Dokumentation Metronom Projekt im Labor Mikrocomputertechnik Teilnehmer: Benjamin
MehrCompiler: 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
MehrAVR 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
MehrZusammenfassung 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.
MehrStopp-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...
MehrMikrocontroller. 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
MehrAnwendung 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
MehrSteuern 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
MehrDAP2-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
MehrTechnische 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.
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
MehrSoftware 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/
MehrInterrupt-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
MehrDie 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
MehrErster 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
MehrWintersemester 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
MehrDie 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
Mehrmytinyprog 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...
Mehr1 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...
MehrEinfü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
MehrMIKROPROZESSOR 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
MehrErgä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
MehrModellgestü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
MehrProgrammierung 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
MehrMikrocontroller 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
MehrESP 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
MehrBedienung 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
MehrC++ 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,
MehrDer 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
MehrSSA 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.
MehrPROGRAMMIEREN 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
MehrDTMF 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
MehrProgrammierung 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
MehrRechnerorganisation 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