DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

33
DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7

Transcript of DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Page 1: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

DIY

Personal Fabrication

Digitale Welt

Juergen Eckert – Informatik 7

Page 2: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Fahrplan

• Mikrocontroller• FPGAs (sehr knapp)• Getting started...

• Übung– Hands on– Glühwein und Plätzchen

• 14.1. Gastvortrag: Michael Huth, Uni Eichstätt-IngolstadtTitel: Sharing Economy und Open Hardware – eine sozialwissenschaftliche Betrachtung

Page 3: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Entwicklung

• 1947: Transistoren, Bell Labs• 1958: Jack Kilby, Erfinder des Integrierten Schaltkreises

(IC), Texas Instruments. • 1960er: Logikgatter beinhalten mehrere Transistoren in

einem Chip• UND, ODER, NICHT, ...• Transistor-Transistor-Logik (TTL): 74xx Serie• Complementary metal-oxide-semiconductor (CMOS) auf MOSFET Basis:

40xx Serie

• 1970er: Digitale Prozessoren– 1971: Intel i4004 Mikroprozessor– 1972: TMS1000 Mikrocontroller

Page 4: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Digitale Prozessoren

Mikroprozessor• Universell einsetzbar

(z.B. Laptop, CPUs)• Schnell, ben. viel Energie• Viele externe Komponenten

Mikrocontroller• Spezifische Anwendung

(z.B. Wandthermometer)• Langsam, energiesparend• Single-Chip Lösung

• TI erhält “Computer-On-A-Chip” Patent in 1973 (71 beantragt)• Grenzen sind verwaschen

Page 5: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Mikrocontroller ATtiny85, Atmel

• Single-Chip• Low-Power• CMOS 8bit• AVR erweiterte

RISC Architektur

Wichtige Mikrocontroller Komponenten

Hardware Unterstützung

Page 6: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Reduced Instruction Set Computer RISC

• Ursprung: Komfortabler Befehlssatz für die Assemblerprogrammierung (1980)– Schnell ausführbare Befehle; meist 1 Takt– Wenige Befehle– Konstante Länge– Keine Spezialbefehle– General-Purpose Register

Page 7: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Kernstruktur

• Programmzähler (Program Counter)– Zeigt auf aktuelle Stelle im Programm Code

(Flash, persistent, 10000 Write/Erase Cycles)• Stapelzeiger (Stack Pointer)

– Zeigt auf oberstes Element des Aufrufstapels (Stack, beinhaltet Sprungadressen, Variablen, ...)

• Arithmetisch-logische Einheit (ALU)– Rechenkern– Minimalst: Addieren, negieren und konjugieren– Erweitert: Subtrahieren, multiplizieren, vergleichen, ...

(können durch Minimalfunktionalität auf kosten der Rechenzeit nachgebildet werden)

Page 8: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Workflow

• Übliche Programmiersprache C

• Andere Sprachen möglich: Assembler, Basic, C++, Javascript, Python, ...

• Bibliotheken .a = Sammlung an .o Files

• .elf= GNU executable

Page 9: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Bsp: 2 Zahlen aus dem SRAM addieren

#include <avr/io.h>uint8_t a=20, b=32, res;

int main(void){res=a+b;}

# avr-gcc -save-temps -mmcu=attiny85 avrTest.c

avrTest.c

Speichert Zwischenschritte ab

Page 10: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Bsp Fortgesetzt: Assembler Resultat

lds r25,alds r24,badd r24,r25sts res,r24

• ALU hat keinen direkten Zugriff auf SRAM• Werte müssen in Registern zwischengespeichert

werden• Benötigt 7 Takte

avrTest.s -- Auszug

Werte in Register laden

Addieren

Resultat zurück ins SRAM schreiben

2 Takte

2 Takte

2 Takte

1 Takt

Siehe Datenblattnächste Folie

Page 11: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Bsp Fortgesetzt: Objekt / EFL File

# avr-gcc -g -mmcu=attiny85 -o avrTest.elf avrTest.o

• AVR Befehle, deren Struktur und Zeit siehe Datenblatt: 8-bit AVR Instruction Set, ATMELhttp://www.atmel.com/images/doc0856.pdf

Page 12: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

BSP Fortgesetzt: Binary Strom

• Instruktionen in Word (16bit) • AVR verwenden Little Endian Byteorder

Byte 1. 2. 0xABCD -> 0xCD 0xAB

... 90 91 60 00 80 91 61 00 89 0f 80 93 62 00 ...avrTest.elf

Page 13: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

BSP Fortgesetzt: Binary Strom

• add r24,r25– 2410 = 1816 = 110002

– 2510 = 1916 = 110012

... 90 91 60 00 80 91 61 00 89 0f 80 93 62 00 ...avrTest.elf

Page 14: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

BSP Fortgesetzt: Binary Strom

• lds r25,a

... 90 91 60 00 80 91 61 00 89 0f 80 93 62 00 ...avrTest.elf

Platzhalter im Assemblercode

a = 006016 (= SRAM Startadresse)

Page 15: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

BSP Fortgesetzt: Binary Strom

• lds r24,b

... 90 91 60 00 80 91 61 00 89 0f 80 93 62 00 ...avrTest.elf

Platzhalter im Assemblercode

b = 006116 (= SRAM Startadresse + 1)

Page 16: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

BSP Fortgesetzt: Binary Strom

• sts res,r24

... 90 91 60 00 80 91 61 00 89 0f 80 93 62 00 ...avrTest.elf

Platzhalter im Assemblercode

res = 006216 (= SRAM Startadresse + 2)

Page 17: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

HEX File - Uploadbare Datei

# avr-objcopy -j .text -j .data -O ihex avrTest.elf avrTest.hex

• Binäre ELF Datei enthält zu viele (unnötige) Informationen (wie verwendet Lib-Versionen)

• Flashspeicher extrahieren und in Intel HEX Format bereit stellen :100000000EC028C027C026C025C024C023C022C0DF

:1000100021C020C01FC01EC01DC01CC01BC0112499:100020001FBECFE5D2E0DEBFCDBF10E0A0E6B0E05E:10003000E6E7F0E002C005900D92A236B107D9F7CD:1000400020E0A2E6B0E001C01D92A336B207E1F7BE:1000500002D00FC0D5CFCF93DF93CDB7DEB790914D:10006000600080916100890F80936200DF91CF91E1:060070000895F894FFCF93:02007600142054:00000001FF

???

Page 18: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Uploaden / Fashen / Brennen / …

• In-Circuit Serial Programming (ICSP)– Mikrocontroller werden üblicherweise erst

programmiert, wenn sie auf die Platine gelötet wurden

– In-System Programming (ISP)– Joint Test Action Group (JTAG) auch zum debuggen

• Bootloader– (Vor-) Installierter Code lädt HEX

Datei in Flash und führt es aus– Seriell, USB, SD-Karte, ...

AVR Dragon: ISP + JTAG

Page 19: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

KEINE DIY Programmer!!

• Nur original Programmer verwenden– Spannungsanpassung, Schaltungsschutz– Technischer Support (...es funktioniert einfach)– Günstig (AVR MKII ab 30 Euro, keinen Klon kaufen)

AVR PICMeine Programmer VOR 2000 (damals kosteten Progammer ein Vermögen!):

Page 20: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Mikrocontroller w/o the pain: Arduino

• AVR ATmega• Open Source and Hardware• „Download, Plug and Play“• Bootloader (USB)• Viele Libraries und Boards

Foto:Wikipedia

1. USB

2.

22EuroKleiner ab 10€

Page 21: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Allzweckeingabe/-ausgabe (GPIO, General Purpose Input/Output)

• Ausgang: – Tri-state

• Hohes Potential (Prozessorspannung z.B. 5V)• Niedriges Potential (GND)• Hochohmig (deaktiviert)

– Open-Collector / Open-Drain• Ausgang ist Kollektor oder Drain eines Transistors/Mosfets• Aktiv = GND• Nicht Aktiv = Hochohmig; meist in Kombination mit Pull-up

– Achtung: Maximale Pin-Spannung beachten

– Maximale Ströme beachten („einige mA“)• Meist mehr „Sink current“ (Strom in den Mikrocontroller) als „Source

current“ (Strom aus dem Mikrocontroller)

AVR

Page 22: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Allzweckeingabe/-ausgabe (GPIO, General Purpose Input/Output)

• Eingang: – Zustand

• <VIL: low / 0 (z.B. 0.3VCC, ATtiny)

• >VIH: high / 1 (z.B. 0.6VCC, ATtiny)• Dazwischen keine Zustandsänderung• Maximale Spannungen beachten!! (z.B. AVR Pin [-0.5V;V∈ CC+0.5V])

– Beschaltung (Mikrocontroller intern)• Floating: „unendliche“ Eingangsimpedanz (ähnlich zu Gate bei Mosfet)• Pull-Up: Hochohmiger Widerstand (10k-100kOhm) nach VCC

• Pull-Down: Hochohmiger Widerstand nach GND• Pull-Up-Down: Je nach Widerstandverhältnis stellt sich ein Mittelwert ein

(unbelastet)

AVR

Page 23: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Bsp: LED-Taster

• Taster: Pin 12 und GND• LED: Pin 13 und GND

(mit Vorwiderstand)

• Wenn der Taster gedrückt wird, leuchtet die LED

• Max. Verzögerung: X ns• Max. Verzögerung mit 2 Taster

und 2 LEDs : 2X ns• 4 Taster+LEDs: 4X ns …• CPU Zeit zu 100% belegt

Page 24: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Field Programmable Gate Array (FPGA)

• Hardware programmieren (Schaltungsstrukturen)– Verilog HDL– VHDL

• Extrem flexible und schnell• Keine eigene Funktionalität • Nur digitale GPIOs

LB

LBLB

LB

IO

IO

IO

IO

IO

IO

IO

IO

Foto: Wikipedia

• Schaltmatrix: Verbindungsstruktur zwischen Logikblöcken (LB)

• Konfiguration wird bei Systemstart von externen Flash geladen

Logikblock

Flash Memory

Sehr komplex

Page 25: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

FPGA: Taster-Led Bsp

for(i=0; i<MAX_BUTTONS; i++){ digitalWrite(led[i], !digitalRead(button[i]));}

Je mehr Aufgaben erledigt werden müssen desto langsamer ist er

Mikrocontroller FPGA

• Massive Parallelität• Egal wie viele LEDs-Taster,

Latenz ist immer gleich (instantan)

Pull-up nicht dargestellt

MAX_BUTTONS mal:

Page 26: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Interrupts

• Auf (externe) Ereignisse muss nicht aktiv gewartet werden (pollen)

• (Externe) Ereignisse können nicht linearen Code (Interrupt Service Routine, ISR) zur Ausführung bringen

Ein Mikrocontroller hat noch wesentlich mehr Hardware Support,mehr dazu das nächste Mal

Foto: http://mlab.taik.fi

Page 27: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Attiny 85 Interrupt

Alternative zu Arduino:• GNU Toolchain:

avr-gcc + avr-libc (WinAVR, CrossPack AVR) + Eclipse Plugin

• AVR Studio (ATMEL)

Page 28: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Interrupt Zeitverlauf

• Interrupt Routinen bei AVR nicht verdrängbar,bei komplexeren CPUs ist dies möglich (Priorisierung)

• Interrupt Routinen so kurz wie möglich (kein aktives Warten, siehe Folie zuvor)

• Interrupts können verloren gehen

t

Interrupt Interrupt Interrupt Interrupt

Lineares Programm

Interrupt Routine

PROBLEM!

Page 29: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Arduino Alternativen

• Quick (and Dirty) Hacks Development• Sehr weit abstrahiert (it just works) • Gut zum lernen• Viele Libraries mit einem Klick geladen• Vordefinierte DEV-Boards mit bestimmten

Typen (groß, energiehungrig und teuer)– Arduino Code auf eigenem Board möglich

(umständlich, Einschränkungen?)– Eigener Code auf Arduino Board (ohne Probleme)

AVRs ab 1Euro!!

Page 30: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

PIC Microchip

• AVR (ATMEL) Alternative• Gleicher Preis- und Leistungsbereich• Mehr Variationen:

>600 verschiedeneChips

• Kostenloser C-Compiler

Foto: Wikipedia

Glaubenskrieg:AVR ↔︎ PIC

Im Prinzip ist es egal...

Page 31: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

LPC NxP

• 32bit Prozessor, ARM Cortex-M0+ (bis M3)• Mehr Speicher, schneller, weniger Stromverbraucht,

gleicher Preis (im Vgl. zu AVR)• Frei Entwicklungsumgebung (Win, OS X, Linux)• Programmer und Debugger

in Dev-Board enthalten(funktioniert auch für selbstgebaute Designs)

• Arduino Header• Für Einsteiger schwer

Foto: Embedded Artists

Alternative: STMicroelectronics

25 Euro

Page 32: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Even more BoardsEspruino• 72Mhz ARM (ST)• Kickstarter Projekt• Javascript mit Konsole!!

ESP8266• Xtensa LX3 32bit @ 80Mhz• WiFi per AT Befehle für 3€!!• Chinamodul ohne Doku!• Software Entwicklung: SDK

instabil! Nur für Experten!!

Foto: Espruino Foto: Hackaday

Page 33: DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Nächstes mal bei DIY…

Kommunikation• UART• SPI• I2C

Jetzt in Übung• Boards Hands on: LPC1769, LPC11U68, Arduino

Leonardo, ESP8266, Espruino, Papilio Pro• Glühwein (auch Antialk) und Plätzchen