null
Transcription
null
KMM • • • • • • • 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 8 8 8 8 I/O A I/O B I/O C I/O D Flash Prog CPU RAM Data EE Data rst irq AVR-familjen. 8-bits RISC-dator + AVR = Alf Vegard Risc I/O 2 1 ATmega1284 <-> ATmega16<-> ATmega168 Egenskap 1284 Instruktioner 16 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 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 23 (28) 168 1284, 16 3 Principschema 2-stegs pipeline clk rst Motor, Servo, Sensor, Bluetooth, ... 4 2 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 Verkställ 1 Verkställ 2 brpl xxx yyy add brpl nop yyy 20000 instruktioner per millisekund! OBS, en FPGA på samma frekvens är klart snabbare! sekvensnät processor 5 20 MHz 20 MHz Programmerarmodell Program space Data space 32 8k 64 1024 8 16 3 • 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 AVR ddrB r0 r1 portB pinB r31 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 bar LED DIP switch 8 10 4 En pinne/bit i port B DDRBn Här är pinnen! 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 ; Skifta ner r16 fyra gånger swap r16 ; Skriv ut på LEDarna out PORTB,r16 jmp TILLBAKA 12 5 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? asm <-> 13 C Manualen har exempel för båda CPU registren r0-r31 försvinner I/O-programmeringen likadan. 64 I/O-register Struktur, if-satser, forloopar ..., datatyper ... Tidskritisk kod? Mer ”känsla” för maskinen ? Det går att blanda, fast gör inte det Kompilatorn fixar kod för avbrottsvektorer 14 6 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) 15 17 7 18 Kommunikation - UART - Parallell - I2C - SPI 19 8 Hur kommunicerar processorerna med varandra och med omvärlden? servon Modul 1 Atmel sensorer Modul 2 Atmel Modul 3 Atmel 20 1) UART (Universal Asynchronous Receiver/Transmitter) Protokoll: startbit databitar 1 stoppbit ...... AVR1 UART1 Firefly Dongle Bluetooth modul Bluetooth pinne USB term UART2 AVR2 UART1 • Max 115200 BAUD (databitar per sekund) • Full duplex • Flaggor signallerar sänt/mottaget data klart UART2 9 2) Parallellport AVR1 AVR2 + Enkelt (?) - Många pinnar - Eget protokoll - Dubbelriktad (?) - Egen handskakning Data Handskakning 22 3) I2C – Inter Integrated Circuit TWI -Two Wire Interface • 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) IRQ0 AVR1 master AVR2 master IRQ1 AVR1 master AVR3 master AVR2 slave AVR3 slave SDA SCL SDA SCL Multimaster Coolt men svårt! Master / Slaves Vanligare, lättare! 23 10 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 TWBR TWCR TWSR TWDR TWAR + 10 kohm SDA 24 SCL 4) SPI fmax = 8/4 MHz AVR1 (master) AVR2 (slave) 25 11 Sensorer - A/D-omvandling - Reglering - Telemetri -Tidsmätning 26 Sensor 1: IR-avståndsmätare spänning 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 12 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. Vid närmare studium av sensordatas kvalitet på oscilloskop upptäcks störningar på mätvärdena! Bäst är att bli av med dessa, med ett lågpassfilter, innan signalen går in i A/Domvandlaren. 28 Sensor 2: Tejpsensorn mäter tejpens läge +5 R1 analog spänning [0 - 5] V R2 IR-lysdiod 29 13 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 30 Att mäta analog spänning: A/D-omvandling +5 R1 omvandlare R2 analog mux Värde 10 bitar Kontroll/Status 8 kanaler 0->5 V => 0->1023 Start .... (gör nåt annat) Färdig 31 14 Sensordata 1 2 3 4 5 6 k Enkel tyngdpunktsberäkning: k T mk k k m k k Felet e 3,5 kT 32 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 33 15 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]. styrsignal felsignal e[n] Regulator 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 34 e[n] < 0 höger om linjen Lite reglerteknik Enklaste regulatorn: P-reglering u[n] = KP*e[n] Rattutslaget proportionellt mot felet 35 16 Lite reglerteknik P Näst enklaste regulatorn: PD-reglering u[n] = KP*e[n] + KD*(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 I-del behövs ej, kvarstående reglerfel finns ej här! e=0 => u=0 36 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 P e[n] K D K P e[n] 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 u[n] K P e[n] K 2 Var försiktig med talområdet! Använd C, int16_t u,e, …; Styrstopp? if u>MAX u=max; … 37 17 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! tx Inbyggt system Firefly fel styr USB rx 38 trigger out Sensor 4: Ultraljud 1 1 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. 39 18 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 Att mäta tid Polling 1) 2) 3) 4) 5) 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 Variabeln innehåller ”avståndet”! 41 19 Pulsbreddsmodulering (PWM) - ”D/A-omvandling” avbrott period komp S räknare R T ex motor komp Duty cycle Kontrollera om motorn/servot reagerar på pulskvot eller pulsbredd! 42 Ännu ett exempel Styrning av servon, som reagerar på pulsbredd. Gäller bara s k hobbyservon. 1-2 ms I2C Kommandon * sväng x vänster * Superstressad AVR? 8 st 20 ms 43 20 De flesta servon reagerar på pulsbredd 1-2 ms 1-2 ms 20 ms PWM 44 Avbrottskällor i ATmega16 Vanlig avbrottsingång Vanlig avbrottsingång 47 21 Avbrott i AVR mega 16 .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 RESET: … … jmp RESET ; här börjar ; mitt huvudprogram EXT_INT0: reti ; yttre avbrott ADC: ; A/D-omvandlaren reti 3) Spara undan SREG Ta ner Betjäning Ta tillbaka SREG reti ; klar 48 Sensor 5: RFID RFID Tags RFID Card Reader RS232 (UART) 2400 BAUD 49 22 Sensor 6: LIDAR-lite v2 Laseravståndssensor • Upp till 40 m (1 cm upplösning) • I2C-interface Finns i ett fåtal ex, 4-5 st Ny version på gång … 50 Sensor 7: Färgsensor + R G B - 3x A/D 51 23 Sensor 8: 3-axlig accelerometer .. .. .. x, y , z 52 Sensor 9: Angular rate sensor (”Gyro”) 24 Sensor 10 : IMU Inertia Measuring Unit - Tröghetsnavigering • • • • Accel & Gyro 6 axlar Rörelseprocessor Datablad 57 sidor!! 54 Sensor 11 : 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 55 25 Sensor 12 : LSM9DS0 Adafruit 9-DOF Accel/Mag/Gyro+Temp • • • • • • • Accelerometer Magnetometer (kompass) Gyro Temperatur 5V-kompatibel I2C-interface SPI-interface Kan anskaffas på begäran (endast test-ex finns hemma) 56 Sensor 13 : LSM303DLHC Adafruit 10-DOF IMU Breakout - L3GD20H + LSM303 + BMP180 • • • • • • • • Accelerometer Magnetometer (kompass) Gyro Temperatur Barometer 5V-kompatibel I2C-interface SPI-interface Kan anskaffas på begäran (endast test-ex finns hemma) 57 26 Beagleboard 58 Beagleboard 27 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 Processorn PDF-datablad finns, 3500 sidor! 28 Beagleboard ”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 BT USB USB-Serie RS232 (UART) styr mät AVR1 AVR2 AVR3 styr mät I2C 29 Kopplingsförslag 2 USB USB USB USB-Serie RS232 styr mät AVR1 USB-Serie RS232 AVR2 BT USB USB-Serie RS232 AVR3 styr mät styr mät Raspberry Pi 68 30 Raspberry Pi 3 • • • • • • • • • • • • • A 1.2GHz quad-core 64-bit ARMv8 CPU Bluetooth 4.1 BLE WLAN 802.11n 1GB RAM 4 USB 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 Kan anskaffas på begäran (endast test-ex finns hemma) Raspberry Pi 69 (raspberrypi.org) ”The good ... and the bad” PLUS MINUS • Ett operativsystem -Linux (Raspian, Ubuntu) • Stort arbetsminne, 1GB • Kraftfull processor • Många olika portar -USB, HDMI, ETH -Audio • I/O-portar (3.3V) • Ej 5V-kompatibel • Skrymmande storlek (relativt AVR) • Krävande att använda 31 Kan man göra ett eget PCB? Ja, om det inte blir för många grupper samt Man bör ha viss tidigare erfarenhet 71 The End Vad göra nu? -Fundera och planera -Kolla datablad vanheden.isy.liu.se -Prata med handledaren 4/10 : Designföreläsning 72 32