Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Personal Fabrication Digitale Welt

Ähnliche Präsentationen


Präsentation zum Thema: "Personal Fabrication Digitale Welt"—  Präsentation transkript:

1 Personal Fabrication Digitale Welt
DIY Personal Fabrication Digitale Welt `` Juergen Eckert – Informatik 7

2 Fahrplan Mikrocontroller FPGAs (sehr knapp) Getting started... Übung
Hands on Glühwein und Plätzchen 14.1. Gastvortrag: Michael Huth, Uni Eichstätt-Ingolstadt Titel: Sharing Economy und Open Hardware – eine sozialwissenschaftliche Betrachtung

3 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

4 Digitale Prozessoren Mikroprozessor Mikrocontroller
Universell einsetzbar (z.B. Laptop, CPUs) Schnell, ben. viel Energie Viele externe Komponenten 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

5 Mikrocontroller ATtiny85, Atmel
Hardware Unterstützung Single-Chip Low-Power CMOS 8bit AVR erweiterte RISC Architektur Wichtige Mikrocontroller Komponenten

6 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

7 Kernstruktur Programmzähler (Program Counter)
Zeigt auf aktuelle Stelle im Programm Code (Flash, persistent, 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)

8 Workflow Übliche Programmiersprache C
Andere Sprachen möglich: Assembler, Basic, C++, Javascript, Python, ... Bibliotheken .a = Sammlung an .o Files .elf= GNU executable

9 Bsp: 2 Zahlen aus dem SRAM addieren
avrTest.c #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 Speichert Zwischenschritte ab

10 Bsp Fortgesetzt: Assembler Resultat
Siehe Datenblatt nächste Folie avrTest.s -- Auszug lds r25,a lds r24,b add r24,r25 sts res,r24 ALU hat keinen direkten Zugriff auf SRAM Werte müssen in Registern zwischengespeichert werden Benötigt 7 Takte 2 Takte Werte in Register laden 2 Takte Addieren 1 Takt 2 Takte Resultat zurück ins SRAM schreiben

11 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, ATMEL

12 BSP Fortgesetzt: Binary Strom
avrTest.elf f Instruktionen in Word (16bit) AVR verwenden Little Endian Byteorder Byte xABCD -> 0xCD 0xAB

13 BSP Fortgesetzt: Binary Strom
avrTest.elf f add r24,r25 2410 = 1816 = 2510 = 1916 =

14 BSP Fortgesetzt: Binary Strom
avrTest.elf f Platzhalter im Assemblercode lds r25,a a = (= SRAM Startadresse)

15 BSP Fortgesetzt: Binary Strom
avrTest.elf f Platzhalter im Assemblercode lds r24,b b = (= SRAM Startadresse + 1)

16 BSP Fortgesetzt: Binary Strom
avrTest.elf f Platzhalter im Assemblercode sts res,r24 res = (= SRAM Startadresse + 2)

17 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 : EC028C027C026C025C024C023C022C0DF : C020C01FC01EC01DC01CC01BC : FBECFE5D2E0DEBFCDBF10E0A0E6B0E05E : E6E7F0E002C005900D92A236B107D9F7CD : E0A2E6B0E001C01D92A336B207E1F7BE : D00FC0D5CFCF93DF93CDB7DEB790914D : F DF91CF91E1 : F894FFCF93 : : FF ???

18 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

19 Meine Programmer VOR 2000 (damals kosteten Progammer ein Vermögen!):
KEINE DIY Programmer!! Nur original Programmer verwenden Spannungsanpassung, Schaltungsschutz Technischer Support (...es funktioniert einfach) Günstig (AVR MKII ab 30 Euro, keinen Klon kaufen) Meine Programmer VOR 2000 (damals kosteten Progammer ein Vermögen!): AVR PIC

20 Mikrocontroller w/o the pain: Arduino
2. AVR ATmega Open Source and Hardware „Download, Plug and Play“ Bootloader (USB) Viele Libraries und Boards 1. USB 22Euro Kleiner ab 10€ Foto: Wikipedia

21 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

22 Allzweckeingabe/-ausgabe (GPIO, General Purpose Input/Output)
Eingang: Zustand <VIL: low / (z.B. 0.3VCC, ATtiny) >VIH: high / (z.B. 0.6VCC, ATtiny) Dazwischen keine Zustandsänderung Maximale Spannungen beachten!! (z.B. AVR Pin ∈ [-0.5V;VCC+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

23 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

24 Field Programmable Gate Array (FPGA)
Sehr komplex Field Programmable Gate Array (FPGA) Hardware programmieren (Schaltungsstrukturen) Verilog HDL VHDL Extrem flexible und schnell Keine eigene Funktionalität Nur digitale GPIOs Schaltmatrix: Verbindungsstruktur zwischen Logikblöcken (LB) Konfiguration wird bei Systemstart von externen Flash geladen Flash Memory IO IO IO LB LB IO IO Foto: Wikipedia LB LB IO IO IO Logikblock

25 FPGA: Taster-Led Bsp Mikrocontroller FPGA
MAX_BUTTONS mal: for(i=0; i<MAX_BUTTONS; i++) { digitalWrite(led[i], !digitalRead(button[i])); } Pull-up nicht dargestellt Je mehr Aufgaben erledigt werden müssen desto langsamer ist er Massive Parallelität Egal wie viele LEDs-Taster, Latenz ist immer gleich (instantan)

26 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 Foto: Ein Mikrocontroller hat noch wesentlich mehr Hardware Support, mehr dazu das nächste Mal

27 Attiny 85 Interrupt Alternative zu Arduino:
GNU Toolchain: avr-gcc + avr-libc (WinAVR, CrossPack AVR) + Eclipse Plugin AVR Studio (ATMEL)

28 Interrupt Zeitverlauf
PROBLEM! Interrupt Interrupt Interrupt Interrupt Lineares Programm t Interrupt Routine 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

29 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!!

30 Glaubenskrieg: AVR ↔︎ PIC
PIC Microchip AVR (ATMEL) Alternative Gleicher Preis- und Leistungsbereich Mehr Variationen: >600 verschiedene Chips Kostenloser C-Compiler Foto: Wikipedia Glaubenskrieg: AVR ↔︎ PIC Im Prinzip ist es egal...

31 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

32 Even more Boards Espruino ESP8266 72Mhz ARM (ST) Kickstarter Projekt
Javascript mit Konsole!! Xtensa LX3 80Mhz WiFi per AT Befehle für 3€!! Chinamodul ohne Doku! Software Entwicklung: SDK instabil! Nur für Experten!! Foto: Espruino Foto: Hackaday

33 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


Herunterladen ppt "Personal Fabrication Digitale Welt"

Ähnliche Präsentationen


Google-Anzeigen