Software ubiquitärer Systeme



Ähnliche Dokumente
Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

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

Einführung in die Welt der Microcontroller

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

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

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

I2C-Echtzeituhr am Atmel AVR

Quanton Manual (de) Datum: URL: )

Parallel-IO. Ports am ATmega128

Es können nur Werte ausgelesen werden, Es kann -NICHT- geschaltet werden!!

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

Atmel AVR für Dummies

Anleitung zur Nutzung des SharePort Utility

Technical Note 0201 Gateway

Pflichtenheft. Projektteam. Rexford Osei - Frey Michael Weichert Thomas Thutewohl. Pflichtenheft Seite 1 von 7

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

SPI Serial Peripheral Interface

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

Interrupt-Programmierung

Bluetooth Low Energy Demo mit dem Apple iphone 4s

Stepperfocuser 2.0 mit Bootloader

PRAXIS. PxDigiStift. Schreiben - Übertragen - Fertig! Kurzanleitung. EDV-Betriebswirtschaft- und Software-Entwicklung AG

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

MC-Hx 010. Relative Feuchte und Temperatur der Luft messen und den Taupunkt nach h-x-mollier- Diagramm berechnen. MB DataTec GmbH. Stand: 06.

Tag 2 Eingabe und Interrupts

Überprüfung der digital signierten E-Rechnung

SMART Newsletter Education Solutions April 2015

Praktikum Mikrocomputertechnik

DRM-Empfänger und Erweiterung

Konfigurationsbeispiel ZyWALL USG

Fakultät für Technik Technische Informatik Entwicklung einer Kombinierte Hard-/Software- Schnittstelle zur Anbindung von einfachen Sensoren und

Urlaubsregel in David

Basisanforderungen: EVA-Prinzips. Erweiterte Anforderungen: wirtschaftlichen und privaten Alltag.

Informatik 1 Tutorial

Local Control Network

Local Control Network Technische Dokumentation

C4 Die SPI Schnittstelle

Handbuch : CTFPND-1 V4

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

eblock, SD-Kartenleser Projektteam: Henrik Esche Tobias Albers Michael Heßling Daniel Lütfrenk Jonas Wieschmann

Mikrocontroller - Schnelleinstieg

Programmierung mit NQC: Kommunikation zwischen zwei RCX

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Hex Datei mit Atmel Studio 6 erstellen

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

Betriebsanleitung Modbus-Konverter Unigate-CL-RS

Seite Wireless Distribution System (Routing / Bridging) 3.1 Einleitung

5. Schaltwerke und Speicherelemente S Q

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

Analog-Digital-Converter

Datenerfassung Datenlogger DL2e Kurzanleitung zu LS2Win

Aufgabenstellung Praktikum Mikrorechentechnik Sommersemester 2014

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

32-Bit Microcontroller based, passive and intelligent UHF RFID Gen2 Tag. Zürcher Fachhochschule

NTR-Support Die neue Fernwartung

Mikrocontroller Grundlagen. Markus Koch April 2011

e-books aus der EBL-Datenbank

Theoretische Informatik SS 04 Übung 1

LEHRSTUHL FÜR DATENBANKEN

XY-Plotter. Hardware. Software µp. Software PC. von Thomas Wagner

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Mit einer Rufnummer bis zu 3 mobile Endgeräte nutzen mit nur einem Vertrag, einer Rechnung und einer Mailbox.

Informatik I Tutorial

Fax einrichten auf Windows XP-PC

EasyWk DAS Schwimmwettkampfprogramm

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

PicKit 3. Programmierung mit dem USB-Programmer PICkit3 (Microchip) AB

Tutorial about how to use USBView.exe and Connection Optimization for VNWA.

Kommunikation mehrerer PCs über Hubs

RO-Serie CAN-Übertragungsprotokoll

Serielle Zweidraht-Schnittstelle

Anlegen eines DLRG Accounts

5. Schaltwerke und Speicherelemente

Facharbeit Informatik. Thema:

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Serie 8: Microcontroller 17./

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Funktionsbeschreibung Datenlogger DL28W

WLAN Konfiguration. Michael Bukreus Seite 1

FTP-Server einrichten mit automatischem Datenupload für

Network Controller TCP/IP

Easy-Monitoring Universelle Sensor Kommunikations und Monitoring Plattform

Wie richten Sie Ihr Web Paket bei Netpage24 ein

1 Vom Problem zum Programm

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

auf den E-Book-Reader

Dieses HowTo darf nicht vervielfältigt oder veröffentlich werden ohne Einverständnis des Erstellers. Alle Angaben ohne Gewähr.

Technical Note 0301 ewon

Netzwerk einrichten unter Windows

FAQ s für die Exchange Migration

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Transkript:

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/ http://ess.cs.tu-dortmund.de/de/teaching/ss2009/sus/

Inhalt Einführung BTnodes & Entwicklungswerkzeuge Was ist das? Was kann man damit machen? Einführung BTnodes-Peripherie Wie funktioniert das? Wie kann ich die ansprechen? Tipps für das erste Übungsblatt 2. Übung 2

BTnodes Einführung BTnodes sind Sensorknoten, bestehend aus einem Mikrokontroller, angeschlossen Sensoren und Kommunikationseinheiten gleich mehr demnächst Entwickelt an der ETH Zürich für den Einsatz in Forschungsprojekten und der Lehre Entwicklung eigener Sensornetzwerke soll mit den BTnodes einfach sein 2. Übung 3

Aufbau BTnodes Atmel ATmega128 256 kb SRAM Zahlreiche Möglichkeiten zum Anschluss von Peripherie Extension connectors Zwei Funksysteme - Bluetooth radio (2.4 GHz Zeevo ZV4002) - Low-power radio (Chipcon CC1000) 2. Übung 4

Development Tools Was brauche ich, um einen BTnode zu programmieren? Irgendetwas wie eine Programmiersprache => hier C und C++ Irgendetwas was aus meinem Sourcecode Maschinencode für den ATmega128 macht und womit ich dessen Funktionen nutzen kann. Toolchain: avr-gcc, avr-g++ Compiler, Linker, etc C-Standardbibliothek: avr-libc Verschiedenste Kabel und Geräte Flasher Board USB-Kabel 2. Übung 5

Development Tools Kommandozeile benutzen 2. Übung 6

Development Tools Eclipse Über File->Import-> Existing Projects into Workspace importieren Make Targets 2. Übung 7

Development Tools Aufspielen des Programms auf den BTnode Per USB-Flasher Drücken des Reset-Knopfs Übertragung in den Flash avrdude -pm128 -cstk500 -PCOMPORT -U flash:w:xyz.hex:i 2. Übung 8

Fragen? 2. Übung 9

BTnodes-Peripherie 2. Übung 10

BTnodes: ATmega128 Der in den BTnodes eingebaute ATmega128 hat insgesamt 53 Pins, die man individuell als Eingang oder Ausgang nutzen kann Jeder Port kann man mit den Registern DDRx (Data Direction Register) angesteuert, ausgelesen (PORTx: Data Register) und beschrieben werden (PINx: Port Input Pins) Ports sind memory mapped und in C/C++ über Pointer erreichbar Etliche Hardware-Register sind vorhandenen um zusätzliche Funktionalität an einem Pin zur Verfügung zu stellen Analog-Digital-Konverter Auslösen von Interrupts Verschiedene Bussysteme I²C (bei AVR: TWI) SPI 2. Übung 11

BTnodes : ATmega128 2. Übung 12

BTnodes: IO dieser Übung 2. Übung 13

ADC Einführung 2. Übung 14

BTnodes: ADC Am Port F des ATmega128 hängt ein 10-bit Analog- Digital-Konverter Die verschiedenen Pins sind per Multiplexer an den A/D- Konverter angeschlossen Für uns sind in den Übungen folgende Pins wichtig: PF0: Luftdrucksensor PF2: Signalstärke, die der RF-Chip zur Verfügung stellt 2. Übung 15

BTnodes: ADC Am Port F des ATmega128 hängt ein 10-bit Analog- Digital-Konverter Der A/D-Wandler wird mit drei Registern angesteuert: ADMUX (Muxer-Position) ADCSRA (Control-Register) ADCH/ADCL (Daten-Register) // Einschalten des AD-Konverters im Kontrol-Register ADCSRA = (1<<ADEN); // Kanal = F0 und Referenzspannung = externe Spannung ADMUX = 0; // Einmalige Konvertierung ADCSRA = (1<< ADSC); //Warten bis das Bit nicht mehr gesetzt ist while ((ADCSRA & (1<<ADSC))); // Wert kann aus den Daten-Registern ausgelesen werden unsigned short result = ADCL (ADCH << 8); 2. Übung 16

I2C/TWI Einführung 2. Übung 17

BTnodes: I²C Bus Synchroner und serieller Bus 2 Leitungen SCL (Takt) SDA (Adress- und Datenleitung) 7bit Adressraum, d.h. theoretisch können 128 Geräte miteinander kommunizieren Datentransfer wird immer vom Master initiiert Wird bei Atmel TWI genannt 2. Übung 18

BTnodes: ATmega128 + I²C 2. Übung 19

BTnodes: I²C Übertragung Start Bitübertragung Stopp 2. Übung 20

BTnodes: I²C Register TW(B D S C )R Bit Rate Data Status Control Control TWINT: Interrupt Flag TWEA: Enable Acknowledge Bit TWSTA: Start Sequenz senden TWSTO: Stop Sequenz senden TWWC: Write Collision Flag TWEN: Enable TWIE: Interrupt Anforderung erlauben Status =ˆ TWSx: Status (Obere 5 Bits = Status letzte Aktion) TWPSx: Prescaler 2. Übung 21

BTnodes: I²C initialisieren Es gibt 2 offizielle Bustaktrate beim Atmega128 Standard: 100kHz FastMode: 400kHz Bustaktrate wird über die Register TWBR und TWSR eingestellt. Die Formel zur Berechnung der Bustaktrate lautet: //CPU-Frequenz und Bustaktrate #define F_CPU 7372800UL #define SCL_CLOCK 100000L //Prescaler aus. Dieser befindet sich in den Bits 0 und 1 TWSR = 0; //Bitrate (100 khz) im Bitratenregister setzen. TWBR = ((F_CPU/SCL_CLOCK)-16)/2; 2. Übung 22

BTnodes: I²C - How it works! Wird immer vom Master initiiert Normaler Transmissionsablauf (als Master): Start SLA + R/W (Datenpakete)+ STOP //START // I²C aktivieren mit TWEN, START senden mit TWSTA und TWINT abschalten TWCR = (1<<TWINT) (1<<TWSTA) (1<<TWEN); // Warten bis START gesendet wurde und TWINT wieder gesetzt wird while(!(twcr & (1<<TWINT))); //Man kann abschließend sich noch den Status zurückgeben lassen unsigned char result = TWSR & 0xF8; //SLA + R/W //Addresse plus Read/Write-Bit ins Datenregister schreiben TWDR = address; // I²C aktivieren mit TWEN und TWINT abschalten TWCR = (1<<TWINT) (1<<TWEN); // Warten bis Addressbyte gesendet wurde und TWINT wieder gesetzt wird while(!(twcr & (1<<TWINT))); //Man kann abschließend sich noch den Status zurückgeben lassen unsigned char result = TWSR & 0xF8; 2. Übung 23

BTnodes: I²C - How it works! Normaler Transmissionsablauf: Start SLA + R/W (Datenpakete)+ STOP //WRITE // Datenbyte ins Datenregister schreiben TWDR = data; // I²C aktivieren mit TWEN und TWINT abschalten TWCR = (1<<TWINT) (1<<TWEN); // Warten bis Datenbyte gesendet wurde und TWINT wieder gesetzt wird while(!(twcr & (1<<TWINT))); //Man kann abschließend sich noch den Status zurückgeben lassen unsigned char result = TWSR & 0xF8; //STOP // I²C aktivieren mit TWEN, STOP senden mit TWSTO und TWINT abschalten TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTO); // Warten bis STOP gesendet wurde und TWINT wieder gesetzt wird while(twcr & (1<< TWSTO)); 2. Übung 24

BTnodes: I²C - How it works! Normaler Transmissionsablauf: Start SLA + R/W (Datenpakete)+ STOP //READ mit ACK (Zur Übertragung mehrerer Bytes) // Übertragung starten TWCR = (1<<TWINT) (1<<TWEN) (1<<TWEA); //Warten bis Übertragung fertig while(!(twcr & (1<<TWINT))); //Ergebnis ist im Datenregister unsigned char result = TWDR; //READ mit NACK (Zur Übertragung eines Byte) // Übertragung starten TWCR = (1<<TWINT) (1<<TWEN); //Warten bis Übertragung fertig while(!(twcr & (1<<TWINT))); //Ergebnis ist im Datenregister unsigned char result = TWDR; 2. Übung 25

BTnodes: Temperatur-Sensor Bekannt aus der Vorlesung Temperatursensor DS1621 am I²C-Bus mit Adresse 000 angebunden 2. Übung 26

BTnodes: Temperatur-Sensor // DS1621 ansprechen twi_start(0x90 + ADDR + 0); // Kommando an den DS1621 schicken twi_write(0xcc); // Repeated Start twi_start(0x90 + ADDR + 1); //Datenbyte auslesen unsigned char result = twi_readnak(); // Bus freigeben twi_stop(); 2. Übung 27

SPI Einführung 2. Übung 28

BTnodes: SPI Einführung Serial Peripheral Interface Einfaches Bussystem zum Ansteuern und Auslesen von Peripherie 1 Adressleitung SS (slave select) 1 Taktleitung SCK (serial clock) 2 Datenleitungen MOSI (master out slave in) MIOS (master in slave out) 2. Übung 29

BTnodes: SPI Einführung Mögliche Slave-Anordnungen Sternförmige Anordnung Sequentielle Anordnung 2. Übung 30

BTnodes: SPI Einführung Ansteuerung über 3 Register SPCR (control register) SPSR (status register) SPDR (data register) 2. Übung 31

BTnodes: SPI Einführung Datenübertragung Beschreibung CPOL CPHA R: low 0 0 D: erste Flanke R: low D: zweite Flanke 0 1 R: high D: erste Flanke 1 0 R: high D: zweite Flanke 1 1 2. Übung 32

BTnodes: SPI Einführung SPI-Geschwindigkeit 2. Übung 33

BTnodes: SPI - How it works! Kommunikation als Master //Ports und Pins initialisieren //SS, SCK und MOSI als Ausgänge DDRB = (1<<DDB0) (1<<DDB1) (1<<DDB2); //MISO als Eingang DDRB &= ~(1<<DDB3); //SPI anschalten und Mastermode aktivieren SPCR = (1<<SPE) (1<<MSTR); //Byte ins Datenregister schreiben SPDR = data; //Warten bis Übertragung abgeschlossen ist while (!(SPSR&(1<< SPIF))); // Empfangenes Byte auslesen unsigned char result = SPDR; 2. Übung 34

BTnodes: SPI - How it works! Kommunikation als Slave //Ports und Pins initialisieren //SS, SCK und MOSI als Eingänge DDRB &= ~((1<<DDB0) (1<<DDB1) (1<<DDB2)); //MISO als Ausgang DDRB = (1<<DDB3); //SPI anschalten SPCR = (1<<SPE); //Byte ins Datenregister schreiben SPDR = data; //Warten bis Masterübertragung gestartet hat und das Byte gelesen hat while (!(SPSR&(1<< SPIF))); // Empfangenes Byte auslesen unsigned char result = SPDR; 2. Übung 35

Weitere Tipps für die Übungen 2. Übung 36

Tipps für die Übungen Die Kommunikation mit der Peripherie kann per polling geschehen, d.h. durch aktive Abfrage: //Kommunikation starten TWCR = (1<<TWINT) (1<<TWEN) (1<<TWEA); //Auf Übertragung der Werte warten while(!(twcr & (1<<TWINT))); //Werte auslesen unsigned char result = TWDR; Interrupt-basierte Kommunikation //Übertragenen Werte soll ausserhalb des ISRs nutzbar sein static volatile unsigned char result; //SIG_2WIRE_SERIAL wurde in TWCR aktiviert ISR(SIG_2WIRE_SERIAL){ //Status-Register auslesen unsigned char twsr = TWSR & 0xF8; switch (twsr) { case TW_MR_DATA_ACK: //Werte auslesen result = TWDR; break; } } 2. Übung 37

Tipps für die Übungen Beim BTnode müssen die Busleitungen vom I²C mit Pull- Up-Widerständen versehen sein Interne Pull-Up-Widerstände vor Gebrauch aktivieren: PORTx = (1 << SDA) (1 << SCL); UART0 ist für USB zuständig Informationen zu den Btnodes findet man auf der Webseite, der ETH Zürich www.btnode.ethz.ch Für den Einstieg in die Btnodes kann man verschiedene Tutorials auf der obigen Webseite herunterladen 2. Übung 38

Referenzen (1) Maxim: DS1621 Digital Thermometer and Thermostat (2) mikrocontroller.net: AVR GCC Tutorial (Programmbeispiele) (3) Jan Beutel, ETH Zurich: Fast-Prototyping of Wireless Sensor Networks Tutorial at ASCI 2008 (4) Jan Beutel, ETH Zurich: BTnode Programming Tutorial (5) Jan Beutel, ETH Zürich: BTnode rev3 Schematic (6) Atmel ATmega128l Processor Manual (7) I2C: http://www.roboternetz.de/wissen/index.php/i2c (8) TWI: http://www.roboternetz.de/wissen/index.php/twi (9) SPI: http://www.mct.de/faq/spi.html (10) SPI: http://www.openavr.org/avr_spi_c_snippets (11) SPI: Silicon Labs C8051F320, C8051F321 Data Sheet 2. Übung 39