Yngve Hafting, Forelesning 13

Like dokumenter
Datamaskinens oppbygning og virkemåte

Vi anbefaler at du setter deg litt inn i maskinen på forhånd. Det er en DELL Optiplex 620.

Clock speed 3.20GHz Bus Speed 800MHz L2 Cache 4MB 2 Cores Ikke Hyperthreading 64 BIT

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

1 Innledning. 2 Virkemåte for kortet. Bli kjent med USB I/O kort K8055. NB! Ta med multimeter og lite skrujern!

1. Arduino Bluetooth 2 HC-05 modul

Hovedkort, brikkesett og busser

CodevisionAVR. Start CodevisionAVR. Velg Settings Terminal og sett opp kommunikasjonsparametrene som figur 1 viser. avrlab07a.doc HVE RI Arnfinn Lunde

Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

Del 2. Bak skallet. Avsette minne til et spesifikt OS Teste harddisk under oppstart Sette opp system logger

WORKSHOP BRUK AV SENSORTEKNOLOGI

Yngve Hafting, Repetisjon 11-15

Kjenn din PC (Windows 7)

Martin Olsen, Lars- Petter Ahlsen og Jon- Håkon Rabben

Setup programmet brukes til å endre konfigurasjonen av BIOS og til å vise resultatene fra

Internminnet. Håkon Tolsby Håkon Tolsby

Internminnet. Håkon Tolsby Håkon Tolsby

Studere en Phase Locked Loop IC - NE565

Forelesning 9. Registre, tellere og minne

Prototyping med Arduino del 2

Hvordan programmere Lantronix UDS 100 IP adapter.

Dagens temaer. Mer om cache-hukommelse (kapittel 6.5 i Computer Organisation and Architecture ) RAM ROM. Hukommelsesbusser

Into da BIOS<3. Bak Skallet

Dagens temaer. Cache (repetisjon) Cache (repetisjon) Cache (repetisjon)

Bussar. Tilgong til buss (Three state buffer) Synkron / Asynkron Serielle bussar Parallelle bussar Arbitrering: Kven kontrollerar bussen

Studere en Phase Locked Loop IC - LM565

2. Hvor mye Internminne har den? Svar: 2GB

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Laget av Atle Hybertsen Høst 2017

Marius Rogndalen Karlsen, Informatikk Lab oppgave

Input/Output. når tema pensum. 13/4 busser, sammenkobling av maskiner /4 PIO, DMA, avbrudd/polling

Del1: Setup: BIOS. 2. Hvor mye Internminne har den? 3GB DDR2

Phu Pham Laboppgave 29. September 2015

1. Arduino Bluetooth 4.0 Low Energy (BLE)

Meir buss, I/O, prosessor detaljar. Arbitrering: Kven kontrollerar bussen Buss eksempel PIO Prosessorar

Kjenn din PC Marie Bjørn 2014

Lab oppgave gruppe 2 IT-ledelse (Jonas F, Robin PN, Aksel S, Magnus M, Erik I)

Oppgave lab. 2. Hvor mye Internminne har den? - Maskinen har 2GB internminne.

TDT4258 Eksamen vår 2013

1)Gjør om desimal tallene til binære: a) 4 =0100. b) 17 = c) 34 = d) 128 = e) 255 =

Studere en Phase Locked Loop IC - LM565

Tonje Thøgersen, Daniel Svensen Sundell, Henrik Smedstuen

IT1101 Informatikk basisfag, dobbeltime 18/9. Kommunikasjon med perifere enheter. Kontrollere. Kontrollere (2) I/O-instruksjoner

6105 Windows Server og datanett

6105 Windows Server og datanett

Hurtigmanual for programmering av CA-10

BESKRIVELSE ComControllerMK3_CCIR

Digital logic level: Oppsummering

INF1510 Oblig #1. Kjetil Heen, februar 2016

INF1510: Bruksorientert design

VEILEDNING TIL LABORATORIEØVELSE NR 4

Bruksanvisning Unitronics Vision

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

I oppgave 1 skal det prøves ut en binærteller i en integrert krets (IC). Telleren som skal brukes er SN74HC393N, hvor

JahtiJakt videobriller

INF1510: Bruksorientert design

Kjenn din PC (Windows 8.1)

Innhold. Innledning til Input/Output. Ulike typer Input/Output. Input/Output internt i datamaskinen. Input/Output mellom datamaskiner

Del 1 Setup - BIOS Oppgaver: 1. Hva slags CPU har maskinen? Beskriv de tekniske egenskapene ved CPU en.

TwidoSuite kommunikasjon

«OPERASJONSFORSTERKERE»

Sikker dørkontroll og ekstra I/O.

Installasjon Siden modulen både har bustilkopling og IP-tilkopling er det viktig å tenke gjennom hvordan man bruker den.

Forelesning nr.11 INF 1411 Elektroniske systemer

Steg 1: Installere programvaren

INF2270. Input / Output (I/O)

LabVIEW seriekommunikasjon med mikrokontroller

Xastir Konfigurasjon av Xastir for Igate + TX/RX av meldinger

NorthIce videobriller

Arduino med Atmel studio 6.x (6.1)

IN1060: Bruksorientert design

INF1510: Bruksorientert design

Laboppgave. Sondre Gulichsen, Li Lisan Linder. 1. Hva slags CPU har maskinen? Beskriv de tekniske egenskapene ved CPU en.

SB168-ES og M7CL Quick Setup Guide Norsk versjon

Installasjon IDT 120. Art. nr:

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

Hva er WinLink Express?

Idriftsette EGX300 EGX300. Ethernet (krysset kabel eller via Switch) Modbus. 24VDC Power. Slave 1 Slave 2 Slave 3

En to-timers oppskrift for å bygge og programmere en Arduino-drevet strikk-

DEL 1 Setup BIOS Stian A. Johansen Terje Bratlie Espen Torås

INF2270. Input / Output (I/O)

Eksterne enheter. Brukerhåndbok

Fahad Said Data ingeniør 2015 GRIT

INF 5460 Elektrisk støy beregning og mottiltak

Her velger dere først System and Security og deretter System.

I dag. Minne typar Minne mot bussar (fysisk grensesnitt generelt) Meir buss

INF2270 I/O. Omid Mirmotahari Omid Mirmotahari 1

LAB 7: Operasjonsforsterkere

Lab 1: Installasjon av Virtualiseringsløsning (VMWare Server ESXi 6.5) med en Virtuell Linux maskin (Cent OS 7 64-bit)

Bits&Bytes Om datamaskinens oppbygging og virkemåte. TOS - IKT Tirsdag 4. desember 2012 Seksjon for digital kompetanse

ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Brukermanual MicroBrann BSS-60

Patrick Fallang (Dataingeniør) Lab Oppgave: Kjenn Din Egen PC (XP)

LabOppgave. 1. Hva slags CPU har maskinen? Beskriv de tekniske egenskapene ved CPU en.

Hva er maskinvaren Arduino

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

6105 Windows Server og datanett Jon Kvisli, HSN Skriveradministrasjon - 1. Utskrift i nettverk

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

Kjenn din PC (Windows vista)

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

Transkript:

Yngve Hafting, Forelesning 13

Denne forelesningen bruker blant annet fra tutorials fra sparkfun delt under CC BY-SA 4.0 lisens. Arduino og Processing Hvordan komme i gang Jobbe med standardbiblioteker Tilgjengelig eksempelkoder Lisensen står forklart under https://creativecommons.org/ licenses/by-sa/4.0/ Materialet som er benyttet er linket opp som forslag til videre lesing. Brytere Pullup/motstander Avkoblingskondensator Busser RS232 SPI I2C RS 485 Terminalprogrammer

Begge kan pakkes ut med 7zip og kjøres fra hjemmeområde www.arduino.cc Laste ned rammeverk (ca 500MB pakket ut.) Obligen bruker Arduino Leonardo. Driver må installeres, og man må gi tilgang til å bruke nettverk (popup) Drivere skal være installert på laben www.processing.org Laste ned rammeverk (ca 250 MB pakket ut) Processing bruker java (Python er ikke ferdig) Begge finnes på CADlib: \\bifrost\project0\robin\cadlib\in1080\2018\ Versjon: 1.8.5. Egen PC: Like raskt å laste ned fra web. Inneholder både Arduino og Processing, inkludert arduino drivere. Begge kan kjøres direkte fra området, men drivere må installeres når kort skal brukes. NB: Det kan gå langsomt.

Bestemte (open source) mikrokontrollerkort og åpent rammeverk for å lage kode Bruker «Arduino Programming language» som i praksis er C NB: Man kan aksessere alle registre i arduino i koden, på måter som ødelegger funksjonen til rammeverket. Hvis går inn i spesifikasjonen til mikrokontrolleren og bruker registre derfra ukritisk, kan det hende arduino-funksjonene ikke vil virke. All kode inneholder setup() Her fyller man inn ting som skal kjøres initielt. Oppsett av IO pinner, ol. loop() Her er hoveddelen av programmet som kjører på repeat til man skrur av Tilsvarer «draw()» i Processing

https://store.arduino.cc/arduino-leonardo-with-headers Merk: Vi har en begrensning i hvor mye strøm utgangene kan levere. Prøver vi å trekke mer strøm enn det, vil ikke Leonardo klare å levere en utspenning som er høy nok (og vi risikerer skade på kortet!) Sjekk alltid at utgangen er i stand til å drive det du setter som mottager Microcontroller ATmega32u4 Operating Voltage 5V Input Voltage (Recommended) 7-12V Input Voltage (limits) 6-20V Digital I/O Pins 20 PWM Channels 7 Analog Input Channels 12 DC Current per I/O Pin 40 ma DC Current for 3.3V Pin Flash Memory SRAM EEPROM Clock Speed Lenght Width Weight 50 ma 32 KB (ATmega32u4) of which 4 KB used by bootloader 2.5 KB (ATmega32u4) 1 KB (ATmega32u4) 16 MHz 68.6 mm 53.3 mm 20 g

Hvordan komme i gang File->Examples->Libraries->Serial->SimpleWrite (inneholder også arduino kode) Koble til arduino og finn portnavn Endre portnavn i Processing arduino rammeverk: Kopiere tekst fra processing til arduino Modde LEDpin til 13. Sjekke at riktig kort og port er valgt («tools» meny) Kompilere og kjøre (programmere arduino) Processing Kompilere og kjøre (gi evt tilganger underveis) Andre relevante processing eksempler: Examples->Topics->Continous Lines Tegner strek vhja mus Kan oversettes til å tegne graf Examples->Basics->Data->CharacterStrings => Se på noen eksempler, bruk en du kan tenke deg. Jobbe med standardbiblioteker Tilgjengelig eksempelkoder

Bryterkonfigurasjoner Lett å avsløre med multimeter 1 Pullup / Pulldown Brukes i forbindelse med Brytere Busser IO- porter 2 SPST/ Form-A/ Form-B SPDT/ Form-C/ Form-D DPST/ DPCO Prell Vanlig i mekaniske kontakter. Digitale systemer må ta høyde for at det forekommer. Terminologi Firebokstavers koder for brytere se https://en.wikipedia.org/wiki/switch P = «Pole» er antall brytere T = «Throw» er antall muligheter per pol S = «Single» D = «Double»

Hver pinne kan beskrives som: NC = Normally Closed NO = Normally Open MERK forskjell på form D og form C før du har fullført aktuering http://www.ni.com/white-paper/3960/en/

For å forsterke signalet til wheatstone-broen til trykksensoren må man bruke opampen som differensiell forsterker. Dette gjøres ved å konfigurere to eller tre opamper til en instrumenteringsforsterker. Databladet til Opampen (MCP601) har eksempler (se figur). For å få en pekepinn på hvor mye forsterkning som trengs må man benytte databladet til trykksensoren. Datablad MCP601

Små endringer i strømforsyning kan gi utslag i form av støy når vi holder på med sensitive komponenter. For å glatte ut strømmen benytter vi gjerne avkoblingskondensatorer «bypass/decoupling capacitor» rett ved strømforsyningspinnene til alle ICer. Størrelsen på avkoblingskondensator varierer. Hurtigswitchende komponenter benytter gjerne små, raske kondensatorer omkring 100nF- 10uF Strømforsyninger bruker typisk mye større kondensatorer. Ofte vil databladet til komponenten gi en pekepin på hva som er en fornuftig størrelse på avkoblingkondensatoren https://learn.sparkfun.com/tutorials/capacitors/application-examples

En buss er en kobling der to eller flere komponenter kan kommunisere med hverandre. Seriell vs parallell buss Simplex (En retning) Full duplex: Begge retninger samtidig Halv-duplex: Begge retninger, men kun en av gangen Bestemmer Adlyder Eksempelbuss Host Device USB Seriell buss,parallell buss Master Slave SPI, I2C Data Terminal Equipment (DTE) data communications equipment* (DCE) RS-232

Komponent til komponent Kort til kort* (korte avstander) Enhet til enhet* Seriell RS-232, SPI, I2C RS232, SATA RS485, USB1 og 2, Ethernet Flere Serielle SCSI, PCI-e Parallell Memory BUS (Parallellport), (PCI), (tidl SCSI) *inndelingen etter avstand kan variere Displayport, HDMI, Thunderbolt, USB 3.x Utviklingen har gått fra parallellkoblinger (tykke ledninger) til mer seriell kommunikasjon Differensiell seriell kommunikasjon tillater høyere hastighet på dataoverføring per linje. Parallelle busser brukes typisk internt i komponenter og f.eks når vi kobler ting selv.

Toveis seriell datakommunikasjon. Laget for kommunikasjon mellom 2 enheter (PC/terminal og modem) Kan kjøres halv duplex eller full duplex Mulighet for en rekke ekstra ledninger for handshake/ status, men I prinsippet brukes bare to pinner til kommunikasjon opprinnelig laget på 60 tallet beregnet for kommunikasjon mellom datamaskin og modem ved +-15V I dag benyttes det typisk mellom kretskort på 5V eller 3,3V (TTL transistor-transistor level) Hastighet < ca 200kbps

For å overføre data med RS-232 bruker vi en UART («Universal asynchronous receiver-transmitter») UART står for overføringen av data og presenterer dem parallelt i mikrokontrolleren. Normalt er UART innebygd i mikrokontrollere. Klokkedata overføres ikke (derav asynkron). Hastigheten kalles «baud rate» Bestemmes i forkant! Typisk 9600-115200 bps Data sendes i pakker som også må defineres i forkant. Alle pakker inneholder start og stoppbit. Det kan også være 2 stoppbit Data kan være fra 5 til 9 bit Paritetsbit er lite brukt, men kan hjelpe dersom det er mye støy Typisk 1 dersom tversummen av bits er odd, 0 ved partall. Generelt sendes LSB før MSB, så LSB er bit 0 i data TX (Transmit) fra en enhet kobles til RX (Receive) i den andre Mer/kilder: https://learn.sparkfun.com/tutorials/serial-communication/all https://learn.sparkfun.com/tutorials/terminal-basics/all

Synkron, full duplex seriell dataoverføring En Master, en eller flere slaver. Klokke overføres via linje slavene behøver ikke egen klokke Enklere enn RS-232. Slave trenger omtrent bare et shift-register for å ta imot data Hastighet kbps- Mbps Terminologi: SCK Serial Clock (fra Master) MOSI Master Out, Slave In MISO Master In, Slave Out SS Slave Select

Master som klokker all dataoverføring, og må vite hvor mye data den skal motta fra hver slave. Master kan enten ha en slave-select linje for hver slave, eller så må slavene være koblet i en kjedekobling «daisy chain» (se figur) Slave select signalet forteller slaven at den må lytte og eller sende data. Slave select er aktivt lavt, og bør ha egen pullup-motstand, for å unngå konflikt på bussen. SPI kjedekobling: Merk kobling MOSI-MISO

Videre lesing: https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi https://www.dorkbotpdx.org/blog/paul/better_spi_bus_design_in_3_steps

I2C Bruker kun 2 linjer: SCL og SDA Kan ha svært mange enheter koblet på samme buss- inntil 1008 slaver. Flere enheter kan ha rollen som master Klokkehastighet på inntil 100kHz eller 400kHz Raskere enn RS232, langsommere enn SPI Mer kompleks logikk kreves sammenlignet med RS-232 og SPI. Kan fungere opp til 2-3 m lengde Kun halv duplex

Både SCL og SDA er open drain (open collector for BJT). DVS enhetene kan bare trekke linjene til jord, aldri sende ut et høyt signal. Krever pullup for å virke Normalt 4,7kΩ Ved flere enheter kan det kreves lavere verdier Dersom man benytter forskjellige forsyningsspenninger kobler man mot den laveste, forutsatt at det er høyt nok for begge

I utgangspunktet må Master trekke SDA lav for å få kontroll på bussen. Den som trekker bussen lav først får den (!) SCL høy og SDA lav gjør at de andre enhetene lytter Videre følger en pakke med en 7 bits adresse, fulgt av et bit som forteller om Master vil ha data fra eller skrive data til enheten den adresserer. Master klokker SCL, data leses på stigende flanke På den 9. klokkeflanken, så må enheten som ble addresert trekke SDA lav (ACK), ellers er ikke dataene å regne for lest (NACK). Etter at adressedataene er sendt og akseptert, fortsetter Master å klokke SCL-linjen. Avhengig av om det var en lese eller skriveoperasjon Master initierte, så vil enten Slave eller Master presentere data Data sendes i pakke på 8 bit av gangen, fulgt av en ny «ACK» Dataoverføringen fortsetter til Master sier «stopp» ved å sette SDA høy etter SCL går høy. Utenom «stopp» endres aldri SDA etter SCL er gått høy for å unngå falske stoppsignal

I noen tilfeller kan Master be om data fortere enn slaven kan levere. Da kan slaven holde SCL lav slik at ACK signalet ikke klokkes. («Clock stretching») I2C kan utvides til 10 bits adressering ved å starte med en adresse som er reservert (b11110), fulgt av de tre første (minst signifikante) bitene av 10 bits adressen. Dette signaliserer at det kommer utvidede adressedata i neste pakke fra Master Alle enheter med korresponderende 10 bits adresse vil svare med ACK på den første pakken, mens bare den riktige vil svare etter den andre. Denne type adressering fungerer med 7 bits-enheter fordi ingen 7 bits adresse har lov til å ha de fire minst signifikanete bit som 1 og det 5. som 0 For detaljer, se https://learn.sparkfun.com/tutorials/i2c

Som regel holder vi på med brikker der signalprotokollen er ferdig implementert. For Arduino har vi ferdigskrevne klasser og HW-implementert UART og I2C osv. holder styr på timingen for oss. => Vi må først og fremst sørge for at koblingene er riktige, og at vi setter opp enhetene riktig før vi begynner å bruke dem. Biblioteket for I2C til arduino heter «Wire» https://www.arduino.cc/en/reference/wire Kobler vi Arduino opp til en PC via USB porten, emulerer PCen en serieport (COM-port) som vi kan benytte som om det var en normal serieport. DVS: Vi må sette opp baud rate, om vi bruker paritet, antall stoppbit hører RS-232

RS-485 er en fysisk standard laget for kommunikasjon over større avstander enn RS-232. Linjene drives differeniselt, noe som gir mindre støy. Vd >= 200 mv Retningen på strømmen bestemmer om det er 0 eller 1 som sendes. Max 32 drivere og 32 mottagere. Kan kjøre både full og halv duplex Ingen definert protokoll, UART brukes ofte Bruker Twisted pair kabel med eller uten skjerming Hastigheten avtar med kabellengde Til sammenligning: RS422: point-point LVDS: point point, + hastighet, -lengde M-LVDS : flere på samme bus.. http://www.electronicdesign.com/what-s-difference-between/what-s-difference-between-rs-232-and-rs-485-serial-interfaces

Når vi har koblet opp en enhet til PC via serieport (fysisk eller emulert), kan vi finne koblingen i device manager under «ports» Typisk COMx, der x er et nummer gitt av fysisk tilkobling eller OS ved portemulering Har vi en COMport åpen, kan vi sende og motta data fra den med et terminalprogram. En terminal var opprinnelig en «tynnklient» med tekstskjerm og tastatur, koblet til en server. Et terminalvindu åpner ikke nødvendigvis en kommandotolk, men den kan brukes til det. For å snakke over en COMport, må vi sette opp koblingen slik at sender og mottager benytter samme oppsett (se RS232 og UART) Eksempler på Terminalprogram er: HyperTerminal, Coolterm, Arduino Serial Monitor, TeraTerm, og så videre https://learn.sparkfun.com/tutorials/terminal-basics/all