ElprojY/KMM 1/2 föreläsningar

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,...

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,...

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

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

Växtviskaren EITF11 Digitala projekt VT15, I12

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

Bilen som inte kan krocka

Effektpedal för elgitarr

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

Digitala Projekt(EITF40) - Larm

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

Robotfotboll med Arduino

Datakommunikation med IR-ljus.

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

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

Digitala Projekt(EITF40) - Larm

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

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

Introduktion till Arduino

Innehåll. 1 Inledning 3

Kontrollskrivning Mikrodatorteknik CDT S2-704

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

A-del motsvarande KS1

Introduktion till Arduino

DIGITALA PROJEKT Väderstation

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

4. Pipelining. 4. Pipelining

3. Mikroprogrammering II

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

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

Datorteknik 1 (AVR 1)

Projektlaboration 4, synkronisering av klockan

Thunder s Truck projektrapport

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

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

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

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

ARDUINO i RC sammanhang

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Digitalteknik: CoolRunner-II CPLD Starter Kit

VHDL 1. Programmerbara kretsar

Grundläggande datavetenskap, 4p

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

RAPPORT: DIGITALA PROJEKT

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

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

EV3 Roboten. Sida 1 av 13

Träff 1 - Introduktion

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

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

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

Digitala System: Datorteknik ERIK LARSSON

Digitalt eller Analogt

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

Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

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

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

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

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

Tentamen PC-teknik 5 p Lösningar och kommentarer

Maskinorienterad programmering

Maskinorienterad programmering

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Tentamen PC-teknik 5 p Lösningar och kommentarer

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

Digitala projekt Linjeföljande bil

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

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

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

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

Digitala projekt - Radiostyrd bil

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

Digitala Projekt (EITF11)

Mikroprogrammering I

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

Datorprojekt, del 1. Digitala system 15 p

Systemkonstruktion SERIEKOMMUNIKATION

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

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

AVR Studio 4 Och AVRFLASH

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

LABORATION. Datorteknik Y

Lego Robot [ ] [ ] [ ]

AVRStudio på tre minuter. Micke Josefsson, 2005

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

Roboten. Sida 1 av 11

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

Enchipsdatorns gränssnitt mot den analoga omvärlden

TEMPERATURMÄTARE MED GRAFRITARE

Tentamen Datorteknik D del 2, TSEA49

GPIO - General Purpose Input Output

Blue Key Digitala projekt VT

Designplan mätning av acceleration hos bilbanebil

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

Transkript:

ElprojY/KMM 1/2 föreläsningar Enchipsdatorn AVR Prestanda Utvecklingsmiljö I/O. Kommunikation Sensorer Lite reglerteknik Beagleboard 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,...) 8 8 8 8 clk rst irq I/O A I/O B I/O C Flash Prog CPU RAM Data I/O D EE Data AVR-familjen. 8-bits RISC-dator + I/O 2

ATmega1284 <-> ATmega16<-> ATmega168 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

Principschema 2-stegs pipeline clk rst Motor, Servo, Sensor, Bluetooth,... 4

Hur fort går det? Med 20 MHz klocka gör AVR 20 MIPS (miljoner instruktioner per sekund) Hämta 1 Hämta 2 add brpl xxx yyy Verkställ 1 Verkställ 2 add brpl nop yyy 20000 instruktioner per millisekund! OBS, en CPLD på samma frekvens är klart snabbare! processor sekvensnät 20 MHz 20 MHz 5

Data space Programmerarmodell Program space 32 64 8k 1024 8 16

Några instruktioner 1) Add without carry add r1,r2 ; r1 += r2 2) Load an I/O location to a register och tvärtom in r29,$3d ; r29 = IO($3D) out $3D,r29 ; IO($3D) = r29 7

Några instruktioner 3) Load indirect from Data Space using X och tvärtom ld r0,x+ ; r0 = D(R26&R27), (R26&R27)++ st X+,r0 ; D(X) = r0, X++ 4) Load from program memory lpm r16,z ; load a constant ; r16 = P(Z) 8

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

Ett litet exempel sidan 51 i manualen! r0 r1 ddrb portb PB0 PB1 PB2 PB3 bar LED r31 pinb PB4 PB5 PB6 PB7 DIP switch 8 10

En pinne/bit i port B Här är pinnen! DDRBn PORTBn PINBn Alltså * 3 register * skriv till PORT * läs från PIN 11

Vanlig digital in/ut-matning - asm.include "m16def.inc".org 0 ; Skriv 00001111 i datariktningsregistret ldi r17,(1<<ddb3) (1<<DDB2) (1<<DDB1) (1<<DDB0) out DDRB,r17 TILLBAKA: ; Läs av pinnarna in r16,pinb ; kolla tryckknappar 7,6,5,4... ; Skriv nåt på LEDarna ; skifta ner r16 fyra gånger 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 */... /* Gör nåt 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

Olle: asm <-> C Manualen har exempel för båda CPU registren r0-r31 försvinner I/O-programmeringen likadan. 64 I/O-register Tidskritisk kod? Mer känsla för maskinen? Det går att blanda. Struktur, if-satser, forloopar..., datatyper... Kompilatorn fixar start-up module Kompilatorn fixar 14 kod för avbrottsrutiner

Utvecklingsmiljö för Atmel Windows Atmel Studio (asm, avr-gcc) JTAG-kabel USB-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

Anders Jr använder JTAG ICE! (in circuit emulator) 16

17

18

Hur kommunicerar processorerna med varandra och med omvärlden? servon Modul 1 Atmel sensorer Modul 2 Atmel Modul 3 Atmel 19

Kommunikation: UART (universal asynchronous receiver/transmitter) startbit 1 stoppbit AVR1 udr ucsra ucsrc ubrrh ubrrl 0,+5V Niklas kabel +12,-12V COM1 Bluetooth pinne teraterm USB (COM4) AVR2 udr ucsra ucsrc ubrrh ubrrl Bluetooth modul Cable replacement, 38400

2) Parallellport data handskakning + enkelt - många pinnar - dubbelriktad? 21

3) I 2 C Two wire interface Inter-integrated-circuit 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 IRQ0 IRQ1 master master master master slave slave Svårt men fränt! Gör hellre så här! 22

3) I 2 C Two wire interface Inter-integrated-circuit master slave slave AVR1 AVR2 AVR2 bit rate control status data slave address TWBR TWCR TWSR TWDR TWAR TWBR TWCR TWSR TWDR TWAR TWBR TWCR TWSR TWDR TWAR + 10 kohm 23 SDA SCL

4) SPI f max = 8/4 MHz 24

Sensor 1: IR-avståndsmätare spänning Less influence on the color of reflected objects, reflectivity Analog voltage corresponding to distance Detecting distance of 4 to 30 cm resp 20 till 150 cm External control circuit unnecessary Low cost 25 avstånd

Sensordata Ett exempel ur verkligheten: IR-avståndsmätare ger 10 mätvärden/s i form av analog spänning 0- >5V. Vi kopplar den direkt till en AVR, som har A/D-omvandlare. 1024 0 0,1 0,2 0,3 t [s] Vid närmare studium av sensordatas kvalitet på oscilloskop upptäcks en störning mellan mätvärdena! Vi har tidigare valt DT = 0,05 s. Vi föreslår detta filter: x f [n] = min(x[n], x[n-1]) 26

Linjesensor Vårt sensorpaket, 10 sensorer (LED + fototransistor), Läses av med A/D Varje sensor kontrollerad ljust = 0, mörkt 1023 En bit tejp, Ojämn, varierande belysning 27

Sensor 2: Tejpsensorn mäter tejpens läge +5 analog spänning [0,5] V R1 R2 IR-lysdiod 28

Att mäta analog spänning: A/D-omvandling +5 R1 R2 omvandlare analog mux Värde 10 bitar Kontroll/Status 8 kanaler 0->5 V => 0->1023 start, färdig 29

Sensordata -5-3 -1 1 3 5 k Enkel tyngdpunktsberäkning: Hur ser e[n] utefter denna operation? 1) 2) e [ n] = m[ k] r[ k] m[ k] k k Brus eller vingel? Tidsskala! 30

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 lägessensor styrdon 31

Lite reglerteknik Vi måste konstruera en enkel linjär tidsdiskret regulator. 1) Vi bestämmer oss för ett lämpligt T, dvs tiden mellan två sensoravläsningar. 2) För roboten i korridoren bildar vi felet e[n] = x v [n] x h [n] För linjeföljaren får vi felet direkt ur sensorn. 3) En regulator bildar en lämpligt styrsignal u[n] mha av felet e[n]. felsignal e[n] Regulator styrsignal u[n] Vi antar att u[n] = 0 rakt fram u[n] > 0 sväng höger u[n] < 0 sväng vänster och att e[n] = 0 mitt på linjen e[n] > 0 vänster om linjen 32 e[n] < 0 höger om linjen

Lite reglerteknik Enklaste regulatorn: P-reglering u[n] = K P *e[n] Rattutslaget proportionellt mot felet 33

Lite reglerteknik Näst enklaste regulatorn: PD-reglering u[n] = K P *e[n] + K D *(e[n] e[n-1]) Alla bilarna har samma e[n] => 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 2 1 I-del behövs ej, kvarstående reglerfel finns ej här! 34

Lite reglerteknik OBS: 1) Det är viktigt att känna till T. PD-formeln ska ju egentligen se ut så här: u[ n] = = K K P P e[ n] + K e[ n] + D K D T e[ n] e[ n 1] T ( e[ n] e[ n 1]) Var försiktig med talområdet! Använd C, int u,e, ; Det är ju felhastigheten vi ska reagera på!!! Styregenskaperna ska inte ändras om T ändras! Variant: om vinkeln kan mätas u[ n] = K P e[ n] + K2 φ 35

Telemetri Linjeföljaren easy var först med 1) PD-reglering 2) Telemetri: sensorvärden och styrsignaler skickades till PC med BT 3) Reglerparametrar skickades från PC till easy fel styr easy tx rx Tooth Brush USB BT 36

trigger 1 Sensor 3: Ultraljud out 1 Voltage Frequency Max Range 5v 40KHz 3 m Min Range Sensitivity Input Trigger Echo Pulse 3 cm Detect a 3cm diameter stick at > 2 m 10uS Min. TTL level pulse Positive TTL level signal, width proportional to range. 37

Sensor 4: Piezoelektriskt gyro Φ = vinkelhastighet 38

Att mäta tid AVR har 3 timer/counters. Detta är timer/counter1. Simplified block diagram! 16-bits räknare jämförelseregister tidregister kontrollregister 39

Att mäta tid 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 Avbrott 1) Sätt upp ICR1 för att ta en timestamp på positiv flank på pinnen I avbrottsrutinen Läs av ICR1, lägg i en variabel och ställ om polariteten på flanken Variabeln innehåller avståndet! 40

Utskrift. Välj själv. Subrutin: 1) Hämta tecken 2) Skriv till UART 3) Vänta på UART complete 2 clocks 1389 clocks vid 115200 4) ret Avbrottsrutin ( 1) Hämta tecken 2) Skriv till UART 3) rti UART complete) 2 clocks

Avbrottskällor i ATmega16 Vanlig avbrottsingång Vanlig avbrottsingång 42

Avbrott i AVR mega 16.org 0x0 ; hopptabell jmp RESET ; jmp EXT_INT0 ; yttre avbrott.org 0x1c jmp ADC ; A/D omvandlaren klar RESET: jmp RESET EXT_INT0: reti ; här börjar ; mitt huvudprogram ; yttre avbrott 1) En händelse sätter en 2) Om avbrottet är aktiverat så fås hopp till avbrottsrutin 3) Spara undan SREG Ta ner Betjäning Ta tillbaka SREG reti ADC: reti ; A/D-omvandlaren ; klar 43

Ännu ett exempel Styrning av servon, som reagerar på pulsbredd. 1-2 ms Kommandon * sväng x vänster * I 2 C Superstressad AVR? 8 st 20 ms 44

Pulsbreddsmodulering (PWM) - D/A-omvandling avbrott period komp räknare komp S R T ex motor Duty cycle Kontrollera om motorn/servot reagerar på pulskvot eller pulsbredd! 45

De flesta servon reagerar på pulsbredd 1-2 ms 1-2 ms 20 ms PWM 46

Avbrottstyrd servostyrning PWM-avbrott 2.5 ms = 50000 instruktioner! t : hämta styrsignal[n] : ställ om PWM och demux[n] Enkelt att kombinera med regleralgoritm, uppdatera styrsignal var 8:e gång 47

RFID Tags Sensor 5: RFID RFID Card Reader RS232 2400 48

Sensor 6: Färgsensor + - 3 x A/D 49

Sensor 7: 3-axlig accelerometer 50

Sensor 8: Angular rate sensor

Beagleboard

Beagleboard Super-scalar ARM Cortex TM -A8 512-MB LPDDR RAM High-speed USB 2.0 OTG port optionally powers the board On-board four-port high-speed USB 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

pdf finns, 3500 sidor! Processorn

Beagleboard Mjukvara. Vid reset händer detta: 1) TI X-loader startar. Den hämtar från en partition på SD-kortet: 2) U-boot. Om man hinner trycka på en tangent stannar man kvar där, annars startar: 3) Ångström, en Linux-distribution, som hämtas från en annan partition på SD-kortet.

Beagleboard Själv installerade jag Ubuntu på ett 16 GB-kort jag aptade in det mesta => 1,8 GB ssh, emacs, X, gcc (native compiler!)

Programexempel /* gcc lpthread threads.c o threads */ #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { int tid; tid = (int)threadid; printf("hello World! It's me, thread #%d!\n", tid); pthread_exit(null); } int main (int argc, char *argv[]) { pthread_t threads[num_threads]; int rc, t; for(t=0; t<num_threads; t++){ printf("in main: creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if (rc){ printf("error; return code from pthread_create() is %d\n", rc); exit(-1); } } pthread_exit(null); }

Kopplingsförslag 1 Eth Wi Fi USB USB BT styr mät RS232 AVR1 AVR2 AVR3 I2C styr mät

Kopplingsförslag 2 Eth Wi Fi USB USB BT USB ser RS232 USB ser styr mät AVR1 AVR2 AVR3 Tröghetsnavigering styr mät styr mät