KMM Hur fort går det?
Transcription
KMM Hur fort går det?
Enchipsdator = allt på ett chip, KMM • • • • • • CPU, RAM, ROM, I/O (parallell, seriell, A/D, timer/counter, PWM, I2C, SPI, ...) Enchipsdatorn AVR Kommunikation Sensorer Reglerteknik Avbrott Beagleboard 8 8 8 8 I/O A I/O B I/O C I/O D Flash Prog CPU RAM Data EE Data www.atmel.com clk rst irq www.avrfreaks.net AVR-familjen. 8-bits RISC-dator + AVR = Alf Vegard Risc 1 I/O 3 ATmega1284 <-> ATmega16<-> ATmega168 Egenskap 1284 16 Instruktioner Principschema 2-stegs pipeline 168 131 kraftfulla! Register 32 generella 8-bits Flash (program,konstanter) 128 kB 16 kB 16 kB EEPROM (konstanter) 4 kB 512 B 512 B SRAM (variabler) 16 kB 1 kB I/O (pinnar) 32 (40) 32 (40) Avbrott (antal) 36 20 26 I2C 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 1 kB 168 23 (28) 1284, 16 clk rst Motor, Servo, Sensor, Bluetooth, ... 4 5 Programmerarmodell Hur fort går det? Program space Data space Med 20 MHz klocka gör AVR 20 MIPS (miljoner instruktioner per sekund) 32 Hämta 1 Hämta 2 add Verkställ 1 Verkställ 2 brpl xxx yyy add brpl nop yyy 8k 64 20000 instruktioner per millisekund! OBS, en FPGA på samma frekvens är klart snabbare! 1024 processor sekvensnät 8 16 6 20 MHz 20 MHz 1 Ett litet exempel AVR ddrB r0 r1 portB pinB r31 • 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. bar LED PB4 PB5 PB6 PB7 DIP switch 8 10 11 Vanlig digital in/ut-matning - asm En pinne/bit i port B DDRBn .include "m16def.inc" .org 0 Här är pinnen! PORTBn PINBn Alltså * 3 register * skriv till PORT * läs från PIN ; 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 ; Skifta ner r16 fyra gånger swap r16 ; Skriv ut på LEDarna out PORTB,r16 jmp TILLBAKA 12 13 asm Vanlig digital in/ut-matning - C #include <avr/io.h> <-> C Manualen har exempel för båda CPU registren r0-r31 försvinner int main(void) { uint8_t i; ... /* Define directions for port pins */ DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); I/O-programmeringen likadan. 64 I/O-register while (1) { /* Läs av DIP-switchen */ i = PINB; /* kolla tryckknappar */ /* Skifta 4 steg höger, skriv ut på LEDarna */ PORTB = i>>4; } Struktur, if-satser, forloopar ..., datatyper ... Tidskritisk kod? Mer ”känsla” för maskinen ? } Kommentar: 1) I/O-programmering likadan som i asm! 2) Nytt är variabeln i. Var bor den? Hur stor är den? PB0 PB1 PB2 PB3 14 Det går att blanda, fast gör inte det Kompilatorn fixar kod för avbrottsvektorer 15 2 Utvecklingsmiljö för Atmel •Windows – Atmel Studio (asm, avr-gcc) JTAG-kabel USB-kabel I labbet: Med ICE, exekvering i AVR 1) 2) 3) 4) 1) 2) 3) 4) Upload + Programmering Läsa/skriva register (vrida på huvudet ...) Singlesteppa Köra med brytpunkt adress/data Hemma: Utan ICE, simulering i PCn Läsa/skriva register Singlesteppa Köra med brytpunkt program/data Stimuli (mata in 0/1 på pinnarna) 16 18 Kommunikation - UART Parallell I2C SPI 19 20 1) UART (Universal Asynchronous Receiver/Transmitter) Hur kommunicerar processorerna med varandra och med omvärlden? Protokoll: startbit databitar 1 stoppbit ...... servon sensorer Modul 1 Atmel AVR1 UART1 Firefly Dongle Bluetooth modul Bluetooth pinne USB term UART2 Modul 2 Atmel AVR2 Modul 3 Atmel UART1 • Max 115200 BAUD (databitar per sekund) • Full duplex • Flaggor signallerar sänt/mottaget data klart UART2 21 3 3) I2C – Inter Integrated Circuit TWI -Two Wire Interface 2) Parallellport AVR1 • 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) AVR2 + Enkelt (?) - Många pinnar - Eget protokoll - Dubbelriktad (?) - Egen handskakning Data IRQ0 Handskakning AVR1 master AVR2 master IRQ1 AVR1 master AVR3 master AVR2 slave AVR3 slave SDA SCL SDA SCL Multimaster Coolt men svårt! 23 3) I2C – Two wire interface Inter-integrated-circuit master AVR1 bit rate control status data slave address TWBR TWCR TWSR TWDR TWAR slave slave AVR2 AVR2 TWBR TWCR TWSR TWDR TWAR Master / Slaves Vanligare, lättare! 24 4) SPI fmax = 8/4 MHz TWBR TWCR TWSR TWDR TWAR + 10 kohm SDA 25 SCL AVR1 (master) AVR2 (slave) 26 Sensor 1: IR-avståndsmätare Sensorer - A/D-omvandling - Reglering - Telemetri -Tidsmätning spänning 27 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 28 avstånd 4 Sensordata Sensor 2: Tejpsensorn 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. mäter tejpens läge Vid närmare studium av sensordatas kvalitet på oscilloskop upptäcks störningar på mätvärdena! +5 R1 Bäst är att bli av med dessa, med ett lågpassfilter, innan signalen går in i A/Domvandlaren. R2 analog spänning [0 - 5] V IR-lysdiod 29 30 Att mäta analog spänning: A/D-omvandling 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 +5 R1 R2 analog mux omvandlare Värde 10 bitar Kontroll/Status 8 kanaler 0->5 V => 0->1023 Start .... (gör nåt annat) Färdig 31 32 Lite reglerteknik Sensordata 1 2 3 4 5 6 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 k Enkel tyngdpunktsberäkning: kT mk k k m k k Felet lägessensor e 3,5 kT styrdon 34 33 5 Lite reglerteknik 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] = xh[n] – xv[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]. u[n] = KP*e[n] styrsignal felsignal e[n] Enklaste regulatorn: P-reglering Regulator u[n] Rattutslaget proportionellt mot felet 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 35 e[n] < 0 höger om linjen 36 Lite reglerteknik Lite reglerteknik P OBS: 1) Det är viktigt att känna till T. PD-formeln ska ju egentligen se ut så här: Näst enklaste regulatorn: PD-reglering u[n] = KP*e[n] + KD*(e[n] –e[n-1]) u[ n] K P e[ n] K D Alla bilarna har samma e[n] => samma positiva P-del K P e[ n] 1) Neg D-del => minskat rattutslag 2) Pos D-del => ökat rattutslag 3) Mycket neg D-del => styr åt andra hållet e[n] e[ n 1] T KD (e[ n] e[ n 1]) T Det är ju felderivatan vi ska reagera på!!! Styregenskaperna ska inte ändras om T ändras! Variant: om vinkeln kan mätas I-del behövs ej, kvarstående reglerfel finns ej här! e=0 => u=0 trigger Inbyggt system tx Firefly out fel int16_t u,e, …; Styrstopp? if u>MAX u=max; … u[ n] K P e[ n] K 2 37 Telemetri 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! Var försiktig med talområdet! Använd C, 38 Sensor 4: Ultraljud 1 1 styr Voltage 5v Frequency 40KHz Max Range 3m Min Range 3 cm Sensitivity Detect a 3cm diameter stick at > 2m Input Trigger 10uS Min. TTL level pulse Echo Pulse Positive TTL level signal, width proportional to range. USB rx 39 40 6 Att mäta tid Timer/Counter AVR har 3 timer/counters (ATMega 16) Detta är timer/counter1. ”Simplified block diagram”! Polling 16-bits räknare 1) 2) 3) 4) 5) jämförelseregister Vänta på att pinnen går hög Läs av räknaren TCNT1 Vänta på att pinnen går låg Läs av räknaren TCNT1 Subtrahera 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 tidregister kontrollregister 41 Pulsbreddsmodulering (PWM) Variabeln innehåller ”avståndet”! 42 Avbrottskällor i ATmega16 - ”D/A-omvandling” avbrott Vanlig avbrottsingång period komp S räknare R T ex motor komp Duty cycle Kontrollera om motorn/servot reagerar på pulskvot eller pulsbredd! Vanlig avbrottsingång 43 45 Sensor 6: 3-axlig accelerometer Sensor 5: RFID RFID Tags .. .. .. x, y , z RFID Card Reader RS232 (UART) 2400 BAUD 50 52 7 Sensor 7: Angular rate sensor (”Gyro”) Sensor 8 : IMU Inertia Measuring Unit - Tröghetsnavigering • • • • Accel & Gyro 6 axlar Rörelseprocessor Datablad 57 sidor!! 54 Sensor 9 : LIDAR LIght Detection And Ranging ”Avståndet till ett objekt mäts via tidsfördröjningen mellan utsänd laserpuls och den registrerade reflexen.” • • • • Range: 0-40m Accurucy: +/-2.5cm Rep rate: 1-500Hz Interface: I2C eller PWM ”Reserverad” för kartrobotar Beagleboard 55 56 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 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 8 Processorn Beagleboard PDF-datablad finns, 3500 sidor! ”The good ... and the bad” PLUS MINUS • Ett operativsystem -Linux (Ångström, Ubuntu) -Windows CE -RTOS • Stort arbetsminne, 512MB • Kraftfull processor • Många olika portar -USB, DVI, ETH -Serieport, PS/2 -Audio in/ut • I/O-portar och I2C: (1.8V) • Ej 5V-kompatibel (ansl. till AVR bara via UART) • Skrymmande storlek (relativt AVR) • ”Ett tungt svärd att svinga” (krävande att använda) Kopplingsförslag 1 WiFi USB USB Kopplingsförslag 2 BT USB USB USB USB USB-Serie USB-Serie RS232 (UART) styr mät AVR1 AVR2 AVR3 RS232 styr mät styr mät I2C AVR1 USB-Serie RS232 AVR2 BT USB USB-Serie RS232 AVR3 styr mät styr mät The End Vad göra nu? -Fundera och planera -Kolla datablad vanheden.isy.liu.se -Prata med handledaren 6/10 : Designföreläsning -Tänkvärt vid design av inbyggda system -Designspecar 65 9