Kandidatprojekt. Hur fort går det? Enchipsdator = allt på ett chip, CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI,...

Relevanta dokument
KMM. Enchipsdator = allt på ett chip, CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI,...) I/O A I/O B I/O C I/O D.

KMM. Enchipsdator = allt på ett chip, CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI,...) I/O A I/O B I/O C I/O D.

KMM. Hur fort går det? Enchipsdator = allt på ett chip, CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI,...

ElprojY/KMM 1/2 föreläsningar

22/02/16. Arduino Introduktion till Arduino. Arduino. Microcontroller - Embedded systems. Historia Organisation - Ekosystem

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Introduktion till Arduino

Introduktion till Arduino

Bussar och I/O. samt. vad kan man göra med NEXYS3

Bussar och I/O. samt. vad kan man göra med NEXYS3. Nexys3. Prog + spänningsmatning. Expansionskort

A-del motsvarande KS1

Bilen som inte kan krocka

Växtviskaren EITF11 Digitala projekt VT15, I12

Digitala Projekt(EITF40) - Larm

DIGITALA PROJEKT Väderstation

Datakommunikation med IR-ljus.

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Digitala Projekt(EITF40) - Larm

Thunder s Truck projektrapport

Effektpedal för elgitarr

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

A/D D/A omvandling. Lars Wallman. Lunds Universitet / LTH / Institutionen för Mätteknik och Industriell Elektroteknik

Robotfotboll med Arduino

Innehåll. 1 Inledning 3

ARDUINO i RC sammanhang

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Digitala projekt Linjeföljande bil

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Blue Key Digitala projekt VT

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Systemkonstruktion SERIEKOMMUNIKATION

Digitalt eller Analogt

Design av inbyggda system. Innehåll. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design TDD

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

Datorteknik 1 (AVR 1)

Design av inbyggda system

Enchipsdatorns gränssnitt mot den analoga omvärlden

VHDL 1. Programmerbara kretsar

EV3 Roboten. Sida 1 av 13

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

Designplan mätning av acceleration hos bilbanebil

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Kontrollskrivning Mikrodatorteknik CDT S2-704

Maskinorienterad programmering

Periferikretsar. ADC/DAC Räknare Realtidsklocka Timer Interrupthanterare UART (Universal Asynchronous Reciever and Transmitter) Seriell dataöverföring

Grundläggande datavetenskap, 4p

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

Design av inbyggda system

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Enchipsdatorer med tillämpningar LABORATION 6, ROBOT

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

4. Pipelining. 4. Pipelining

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Pulsmätare Digitala Projekt EITF11

RAPPORT: DIGITALA PROJEKT

Enchipsdatorns gränssnitt mot den analoga omvärlden

Arduinokurs. Del 1 - Vett och etikett. Talsystem. Binärt ettor och nollor

LABORATIONSINSTRUKTION DIGITAL REGLERTEKNIK. Lab nr. 3 DIGITAL PI-REGLERING AV FÖRSTA ORDNINGENS PROCESS

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

LABORATION. Datorteknik Y

Träff 1 - Introduktion

UTFÖRSÄLJNING KEY DIGITAL 4-1 HDTV Component Video 4-1, RS-232 (KD-CSW4X1)

Digitala Projekt (EITF11)

Freescale MC9S12DG256B

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Digitala projekt - Radiostyrd bil

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

Adressrum, programmerarens bild

Design av inbyggda system

Digitalteknik: CoolRunner-II CPLD Starter Kit Med kommentarer för kursen ht 2012

Lego Robot [ ] [ ] [ ]

Digitala System: Datorteknik ERIK LARSSON

CanCom Bluetooth BLUETOOTH V5.6. Specifikation Specification LED. transceiver

Digitalteknik: CoolRunner-II CPLD Starter Kit

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC Handledare Bertil Lindvall

Beacon BluFi Bluzone. Givarna har mycket hög känslighet och kan mäta mycket små förändringar.

TEMPERATURMÄTARE MED GRAFRITARE

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Läsminne Read Only Memory ROM

Roboten. Sida 1 av 11

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Vad är kommunikation? Vad är datorkommunikation? Dataöverföring; Inledning

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

Transkript:

Kandidatprojekt Enchipsdatorn AVR Kommunikation Sensorer Reglerteknik Avbrott Beagleboard Raspberry Pi www.atmel.com www.avrfreaks.net 1 Enchipsdator = allt på ett chip, CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI,...) clk rst irq Flash Prog 8 8 8 8 I/O A I/O B I/O C CPU RAM Data I/O D EE Data AVR-familjen. 8-bits RISC-dator + I/O AVR = Alf Vegard Risc 2 ATmega1284 <-> ATmega16<-> ATmega168 Principschema Egenskap 1284 16 168 Instruktioner Register Flash (program,konstanter) EEPROM (konstanter) 131 kraftfulla! 32 generella 8-bits 128 kb 16 kb 16 kb 4 kb 512 B 512 B SRAM (variabler) 16 kb 1 kb 1 kb I/O (pinnar) 32 (40) 32 (40) 23 (28) Avbrott (antal) 36 20 26 I 2 C 1 1 1 SPI 3 1 1 UART 2 1 1 8-bit timers 2 2 2 16-bit timers 2 1 1 PWM (kanaler) 6 4 6 A/D (kanaler) 8 8 6 klocka 0-20 MHz 0-16 MHz 0-20 MHz 168 1284, 16 3 clk rst 2-stegs pipeline Motor, Servo, Sensor, Bluetooth,... 4 Hur fort går det? Med 20 MHz klocka gör AVR 20 MIPS (miljoner instruktioner per sekund) Data space Programmerarmodell Program space 32 Hämta 1 Hämta 2 add brpl xxx yyy Verkställ 1 Verkställ 2 add brpl nop yyy 20000 instruktioner per millisekund! 64 8k OBS, en FPGA på samma frekvens är klart snabbare! 1024 processor sekvensnät 8 16 20 MHz 20 MHz 5 1

Ett litet exempel AVR r0 r1 ddrb portb PB0 PB1 PB2 PB3 bar LED r31 pinb PB4 PB5 PB6 PB7 DIP switch Stora AVR-en har 4 portar (A,B,C,D) à 8 bitar. Varje port kan vara en parallellport eller något annat. Till porten hör ett antal I/O-register. 9 8 10 En pinne/bit i port B Vanlig digital in/ut-matning - asm Här är pinnen! DDRBn PORTBn.include "m16def.inc".org 0 ; Skriv 00001111 i datariktningsregistret ldi r17,(1<<ddb3) (1<<DDB2) (1<<DDB1) (1<<DDB0) out DDRB,r17 PINBn Alltså * 3 register * skriv till PORT * läs från PIN 11 TILLBAKA: ; Läs av pinnarna in r16,pinb ; kolla tryckknappar 7,6,5,4 ; Skifta ner r16 fyra gånger swap r16 ; Skriv ut på LEDarna out PORTB,r16 jmp TILLBAKA 12 Vanlig digital in/ut-matning - C #include <avr/io.h> int main(void) { uint8_t i;... /* Define directions for port pins */ DDRB = (1<<DDB3) (1<<DDB2) (1<<DDB1) (1<<DDB0); } while (1) { /* Läs av DIP-switchen */ i = PINB; /* kolla tryckknappar */ /* Skifta 4 steg höger, skriv ut på LEDarna */ PORTB = i>>4; } Kommentar: 1) I/O-programmering likadan som i asm! 2) Nytt är variabeln i. Var bor den? Hur stor är den? 13 asm <-> C Tidskritisk kod? Mer känsla för maskinen? I/O-programmeringen likadan. 64 I/O-register Det går att blanda, fast gör inte det Manualen har exempel för båda CPU registren r0-r31 försvinner Struktur, if-satser, forloopar..., datatyper... Kompilatorn fixar kod för avbrottsvektorer 14 2

Utvecklingsmiljö för Atmel Windows Atmel Studio (asm, avr-gcc) JTAG-kabel -kabel I labbet: Med ICE, exekvering i AVR 1) Upload + Programmering 2) Läsa/skriva register (vrida på huvudet...) 3) Singlesteppa 4) Köra med brytpunkt adress/data Hemma: Utan ICE, simulering i PCn 1) Läsa/skriva register 2) Singlesteppa 3) Köra med brytpunkt program/data 4) Stimuli (mata in 0/1 på pinnarna) 15 17 Kommunikation - UART - Parallell - I2C - SPI 18 19 Hur kommunicerar processorerna med varandra och med omvärlden? 1) UART (Universal Asynchronous Receiver/Transmitter) Protokoll: startbit databitar 1 stoppbit... servon Modul 1 Atmel AVR1 UART1 Firefly Bluetooth modul Dongle Bluetooth pinne term sensorer Modul 2 Atmel UART2 Modul 3 Atmel UART1 UART2 Max 115200 BAUD (databitar per sekund) Full duplex Flaggor signallerar sänt/mottaget data klart 20 3

2) Parallellport 3) I 2 C Inter Integrated Circuit TWI -Two Wire Interface AVR1 Data Handskakning + Enkelt (?) - Många pinnar - Eget protokoll - Dubbelriktad (?) - Egen handskakning AVR1 master Enkel 2-trådsbuss (+ jord) AVR kan vara Master/Slave AVR kan vara Sändare/Mottagare 7-bits adress => 128 slavar Multimaster arbitration supported Upp till 400 khz (200 khz i praktiken) master AVR3 master IRQ0 IRQ1 AVR1 master slave AVR3 slave SDA SCL SDA SCL 22 Multimaster Coolt men svårt! Master / Slaves Vanligare, lättare! 23 3) I 2 C Two wire interface Inter-integrated-circuit 4) SPI bit rate control status data slave address master slave slave AVR1 TWBR TWCR TWSR TWDR TWAR TWBR TWCR TWSR TWDR TWAR TWBR TWCR TWSR TWDR TWAR f max = 8/4 MHz + 10 kohm SDA 24 SCL AVR1 (master) (slave) 25 Sensor 1: IR-avståndsmätare Sensorer - A/D-omvandling - Reglering - Telemetri -Tidsmätning spänning 26 Features Less influence on the color of reflected objects, reflectivity Analog voltage corresponding to distance Detecting distance: 4 to 30 cm, 10 to 80 cm, 20 to 150 cm External control circuit unnecessary Low cost 27 avstånd 4

Sensordata Ett exempel ur verkligheten: IR-avståndsmätare ger 25 mätvärden/s i form av analog spänning 0->3V. Vi kopplar den direkt till en AVR, som har A/D-omvandlare. Sensor 2: Tejpsensorn mäter tejpens läge Vid närmare studium av sensordatas kvalitet på oscilloskop upptäcks störningar på mätvärdena! +5 Bäst är att bli av med dessa, med ett lågpassfilter, innan signalen går in i A/Domvandlaren. analog spänning [0-5] V R1 R2 IR-lysdiod 28 29 Sensor 3: Linjesensor Vårt sensorpaket, 11 sensorer (LED + fototransistor), Läses av med A/D Varje sensor kontrollerad ljust = 0, mörkt 1023 En bit tejp, Ojämn, varierande belysning Att mäta analog spänning: A/D-omvandling R1 +5 R2 omvandlare analog mux 30 Värde 10 bitar Kontroll/Status 8 kanaler 0->5 V => 0->1023 Start... (gör nåt annat) Färdig 31 1 2 Sensordata 3 4 5 6 Enkel tyngdpunktsberäkning: k Lite reglerteknik Hur gör man egentligen för att 1) gå mitt i en korridor? 2) följa en linje? trots att 1) 4-beningen haltar lite grann 2) linjen böjer av 3) golvet lutar Felet kt mkk k e 3, 5 k T k m k 32 lägessensor styrdon 33 5

Lite reglerteknik Vi måste konstruera en enkel linjär tidsdiskret regulator. 1) Vi bestämmer oss för ett lämpligt D T, dvs tiden mellan två sensoravläsningar. 2) För roboten i korridoren bildar vi felet e[ = x h [ x v [ För linjeföljaren får vi felet direkt ur sensorn. 3) En regulator bildar en lämpligt styrsignal u[ mha av felet e[. Lite reglerteknik Enklaste regulatorn: P-reglering felsignal e[ Regulator styrsignal u[ Vi antar att u[ = 0 rakt fram u[ > 0 sväng höger u[ < 0 sväng vänster u[ = K P *e[ Rattutslaget proportionellt mot felet och att e[ = 0 mitt på linjen e[ > 0 vänster om linjen 34 e[ < 0 höger om linjen 35 Lite reglerteknik Näst enklaste regulatorn: PD-reglering u[ = K P *e[ + K D *(e[ e[n-1]) Alla bilarna har samma e[ => samma positiva P-del 1) Neg D-del => minskat rattutslag 2) Pos D-del => ökat rattutslag 3) Mycket neg D-del => styr åt andra hållet I-del behövs ej, kvarstående reglerfel finns ej här! e=0 => u=0 P 36 Lite reglerteknik OBS: 1) Det är viktigt att känna till D T. PD-formeln ska ju egentligen se ut så här: e[ e[ n 1] u[ K P e[ K D D T K D K P e[ ( e[ e[ n 1]) D T Det är ju felderivatan vi ska reagera på!!! Styregenskaperna ska inte ändras om D T ändras! Variant: om vinkeln kan mätas u[ K e[ K P 2 Var försiktig med talområdet! Använd C, int16_t u,e, ; Styrstopp? if u>max u=max; 37 Telemetri trigger 1 Sensor 4: Ultraljud Det är bra! Men varför då? Lätt att se inre tillståndet i systemet, när det är i drift och rörelse! T ex varför gjorde den så? Lätt att ställa in reglerparametrar, i realtid! fel styr out 1 Voltage Frequency Max Range 5v 40KHz 3 m Min Range 3 cm Inbyggt system tx rx Firefly 38 Sensitivity Input Trigger Echo Pulse Detect a 3cm diameter stick at > 2 m 10uS Min. TTL level pulse Positive TTL level signal, width proportional to range. 39 6

Timer/Counter AVR har 3 timer/counters (ATMega 16) Detta är timer/counter1. Simplified block diagram! 16-bits räknare jämförelseregister tidregister kontrollregister 40 Polling 1) Vänta på att pinnen går hög 2) Läs av räknaren TCNT1 3) Vänta på att pinnen går låg 4) Läs av räknaren TCNT1 5) Subtrahera Att mäta tid Avbrott 1) Sätt upp ICR1 för att ta en timestamp på positiv flank på pinnen I avbrottsrutinen Läs av TCNT1, lägg i en variabel och ställ om polariteten på flanken Variabeln innehåller avståndet! 41 Pulsbreddsmodulering (PWM) - D/A-omvandling avbrott period Ännu ett exempel Styrning av servon, som reagerar på pulsbredd. Gäller bara s k hobbyservon. 1-2 ms komp räknare komp Duty cycle S R T ex motor Kommandon * sväng x vänster * I 2 C Superstressad AVR? 8 st Kontrollera om motorn/servot reagerar på pulskvot eller pulsbredd! 20 ms 42 43 De flesta servon reagerar på pulsbredd Avbrottskällor i ATmega16 1-2 ms 1-2 ms 20 ms Vanlig avbrottsingång PWM 44 Vanlig avbrottsingång 47 7

Avbrott i AVR mega 16 Sensor 5: RFID.org 0x0 ; hopptabell jmp RESET ; jmp EXT_INT0 ; yttre avbrott.org 0x1c jmp ADC ; A/D omvandlaren klar 1) En händelse sätter en 2) Om avbrottet är aktiverat så fås hopp till avbrottsrutin RFID Tags RESET: jmp RESET EXT_INT0: reti ; här börjar ; mitt huvudprogram ; yttre avbrott 3) Spara undan SREG Ta ner Betjäning Ta tillbaka SREG reti ADC: reti ; A/D-omvandlaren ; klar 48 RFID Card Reader RS232 (UART) 2400 BAUD 49 Sensor 6: Färgsensor Sensor 7: 3-axlig accelerometer...... x, y, z R G B + - 3 x A/D 50 51 Sensor 8: Angular rate sensor ( Gyro ) Sensor 9 : IMU Inertia Measuring Unit - Tröghetsnavigering Accel & Gyro 6 axlar Rörelseprocessor Datablad 57 sidor!! 53 8

Sensor 10 : Wii IR Camera Ryktet säger : Ger (X,Y)-koordinater för dom 4 starkaste IR-källorna inom synfältet Kommunicerar med I2C 3.3V I/O Datablad saknas, googla på wii ir camera och hoppas på tur Beagleboard 54 55 Beagleboard Beagleboard Mer kraft Mer makt men... Ett tyngre svärd att svinga Super-scalar ARM Cortex TM -A8 512-MB LPDDR RAM High-speed 2.0 OTG port optionally powers the board On-board four-port high-speed 2.0 hub with 10/100 Ethernet DVI-D (digital computer monitors and HDTVs) S-video (TV out) Stereo audio out/in High-capacity microsd slot and 4-GB microsd card JTAG Camera port Processorn PDF-datablad finns, 3500 sidor! Beagleboard The good... and the bad PLUS Ett operativsystem -Linux (Ångström, Ubuntu) -Windows CE -RTOS Stort arbetsminne, 512MB Kraftfull processor Många olika portar -, DVI, ETH -Serieport, PS/2 -Audio in/ut I/O-portar och I2C: (1.8V) MINUS Ej 5V-kompatibel (ansl. till AVR bara via UART) Skrymmande storlek (relativt AVR) Ett tungt svärd att svinga (krävande att använda) 9

Kopplingsförslag 1 Kopplingsförslag 2 WiFi BT BT styr mät -Serie RS232 (UART) AVR1 AVR3 styr mät styr mät -Serie -Serie -Serie RS232 RS232 RS232 AVR1 AVR3 styr mät I2C styr mät Raspberry Pi Raspberry Pi A 900MHz quad-core ARM Cortex-A7 CPU 1GB RAM 4 ports Ethernet port 40 GPIO pins Full HDMI port Micro SD card slot Camera interface (CSI) Display interface (DSI) VideoCore IV 3D graphics core Combined 3.5mm audio jack and composite video 65 66 Raspberry Pi (raspberrypi.org) The good... and the bad Kan man göra ett eget PCB? PLUS Ett operativsystem -Linux (Raspian, Ubuntu) Stort arbetsminne, 1GB Kraftfull processor Många olika portar -, HDMI, ETH -Audio I/O-portar (3.3V) MINUS Ej 5V-kompatibel Skrymmande storlek (relativt AVR) Krävande att använda Ja, om det inte blir för många grupper samt Man bör ha viss tidigare erfarenhet Existerar i flera varianter : Pi 2 Model B, Pi 1 Model B+, Pi 1 Model A+, Pi Zero 68 10