Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7.

Ähnliche Präsentationen


Präsentation zum Thema: "DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7."—  Präsentation transkript:

1 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 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 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

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

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 #include 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

10 Bsp Fortgesetzt: Assembler Resultat 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 avrTest.s -- Auszug Werte in Register laden Addieren Resultat zurück ins SRAM schreiben 2 Takte 1 Takt Siehe Datenblatt nächste Folie

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 Instruktionen in Word (16bit) AVR verwenden Little Endian Byteorder Byte xABCD -> 0xCD 0xAB f avrTest.elf

13 BSP Fortgesetzt: Binary Strom add r24,r25 – = = – = = f avrTest.elf

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

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

16 BSP Fortgesetzt: Binary Strom sts res,r f avrTest.elf Platzhalter im Assemblercode 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 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 PIC Meine Programmer VOR 2000 (damals kosteten Progammer ein Vermögen!):

20 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. 22Euro Kleiner ab 10€

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 V IH : high / 1 (z.B. 0.6V CC, 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 V CC 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) Hardware programmieren (Schaltungsstrukturen) – Verilog HDL – VHDL Extrem flexible und schnell Keine eigene Funktionalität Nur digitale GPIOs LB IO Foto: Wikipedia Schaltmatrix: Verbindungsstruktur zwischen Logikblöcken (LB) Konfiguration wird bei Systemstart von externen Flash geladen Logikblock Flash Memory Sehr komplex

25 FPGA: Taster-Led Bsp for(i=0; i

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

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

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

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 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 72Mhz ARM (ST) Kickstarter Projekt Javascript mit Konsole!! ESP8266 Xtensa LX3 80Mhz WiFi per AT Befehle für 3€!! Chinamodul ohne Doku! Software Entwicklung: SDK instabil! Nur für Experten!! Foto: EspruinoFoto: 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 "DIY Personal Fabrication Digitale Welt Juergen Eckert – Informatik 7."

Ähnliche Präsentationen


Google-Anzeigen