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