Carrera Racetrack Experiment
Daniel Richter
Embedded Operating Systems Operating Systems & Middleware Group
Carrera Racetrack Experiment Daniel Richter Embedded Operating - - PowerPoint PPT Presentation
Carrera Racetrack Experiment Daniel Richter Embedded Operating Systems Operating Systems & Middleware Group Carrera Digital 132 2 Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018 Basics lanes (scale
Embedded Operating Systems Operating Systems & Middleware Group
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
2
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
3
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
4
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
5
Race Track Control Unit/ Black Box Handset Control Board Position Sensor Position Sensor Position Sensor Position Sensor Position Sensor Anti-Collision S. Sensor Management Board PC Actuators Sensors (Lane Sensor)
USB USB
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018 6
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
7
Emulation of Handset Controls
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
8
Emulation of Handset Controls
8
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
9
Emulation of Handset Controls
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
10
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
11
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
12
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
13
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
14
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
15
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
16
Sensors
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018 17
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
18
AVR XMEGA A3 Microcontroller + Sensor Management Board
[XMEGA A [MANUAL] 3 8077I–AVR–11/2012]
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
19
AVR XMEGA A3 Microcontroller + Sensor Management Board
[AVRxmegaA3 Datasheet 8068U–AVR–06/2013]
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
20
AVR XMEGA A3 Microcontroller + Sensor Management Board
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
21
Hello World (Debug Pins)
Debug Pin 3 Debug Pin 2 Debug Pin 1 Debug Pin 0
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
22
Hello World (Debug Pins)
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
23
Hello World (Debug Pins)
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
24
Hello World (Debug Pins)
▪ DIR – Data Direction register
▪ OUT – Data Output Value register
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
25
Hello World (Debug Pins)
[XMEGA A [MANUAL] 3 8077I–AVR–11/2012]
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
26
Hello World (Debug Pins)
[XMEGA A [MANUAL] 3 8077I–AVR–11/2012]
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
27
Hello World (Debug Pins)
#include <asf.h> int main (void) { // define port B’s pins 4..7 as output (*(volatile uint8_t *) 0x0620) |= 0b11110000; while (true) { // turn pin 7 on (*(volatile uint8_t *) 0x0624) |= 0b10000000; // turn pin 7 off (*(volatile uint8_t *) 0x0624) &= ~(0b10000000); } }
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
28
Hello World (Debug Pins)
/* PORTB - Port B */ #define PORTB_DIR _SFR_MEM8(0x0620) #define PORTB_DIRSET _SFR_MEM8(0x0621) #define PORTB_DIRCLR _SFR_MEM8(0x0622) #define PORTB_DIRTGL _SFR_MEM8(0x0623) #define PORTB_OUT _SFR_MEM8(0x0624) #define PORTB_OUTSET _SFR_MEM8(0x0625) #define PORTB_OUTCLR _SFR_MEM8(0x0626) #define PORTB_OUTTGL _SFR_MEM8(0x0627) #define PORTB_IN _SFR_MEM8(0x0628) …
#define _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr) #define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))
#include <asf.h> int main (void) { // define port B’s pins 4..7 as output (*(volatile uint8_t *) 0x0620) |= 0b11110000; while (true) { // turn pin 7 on (*(volatile uint8_t *) 0x0624) |= 0b10000000; // turn pin 7 off (*(volatile uint8_t *) 0x0624) &= ~(0b10000000); } }
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
29
Hello World (Debug Pins)
#include <asf.h> int main (void) { // define port B’s pins 4..7 as output PORTB_DIR |= PIN4_bm | PIN5_bm | PIN6_bm | PIN7_bm; while (true) { // turn pin 7 on PORTB_OUT |= PIN7_bm; // turn pin 7 off PORTB_OUT &= ~(PIN7_bm); } }
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
30
Hello World (Debug Pins)
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
31
Hello World (Debug Pins)
// disable JTAG interface (uses upper 4 pins of port B) CCP = CCP_IOREG_gc; // Configuration Change Protection MCU_MCUCR = MCU_JTAGD_bm;
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
32
Hello World (Debug Pins)
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
33
Hello World (USB)
[Future Technology Devices International Ltd. FT245R USB FIFO IC]
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
34
Hello World (USB)
PORTB_DIR |= PIN0_bm|PIN1_bm; // output (USB RD, USB WR) PORTB_DIR &= ~(PIN2_bm|PIN3_bm); // input (USB RXF, USB TXE) PORTR_DIR &= ~(PIN1_bm); // input (USB PWREN) while (true) { unsigned char data = 255; while (PORTR_IN & PIN1_bm); // wait for PWREN (1=off) while (PORTB_IN & PIN3_bm); // wait for TXE (1=off) PORTA_DIR = 0xFF; // port A as output (USB DATA) PORTB_OUT |= PIN1_bm; // enable WR PORTA_OUT = data; // enable DATA PORTB_OUT &= ~PIN1_bm; // disable WR PORTA_DIR = 0x00; // port A as input }
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
35
AVR XMEGA A3 Microcontroller + Sensor Management Board
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
36
AVR XMEGA A3 Microcontroller + Sensor Management Board
int main (void) { PORTR_INT0MASK = PIN0_bm; PORTR_INTCTRL |= PORT_INT0LVL_MED_gc; PORTR_PIN0CTRL |= PORT_ISC_FALLING_gc; PMIC_CTRL |= PMIC_HILVLEN_bm | PMIC_MEDLVLEN_bm; sei(); while (true); } ISR (PORTR_INT0_vect) { DBG_OUT(PIN3_bm,0xff); DBG_OUT(PIN3_bm,0x00); }
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
37
AVR XMEGA A3 Microcontroller + Sensor Management Board
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
38
AVR XMEGA A3 Microcontroller + Sensor Management Board
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018 39
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
40
Connecting Sensors & Actuators
Race Track Control Unit/ Black Box Handset Control Board Position Sensor Position Sensor Position Sensor Position Sensor Position Sensor Anti-Collision S. Sensor Management Board PC Actuators Sensors (Lane Sensor)
USB USB
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
41
Connecting Sensors & Actuators
USB Data Package
7 6 5 4 3 2 1
MAGIC
1
TYPE R R R LENGTH
2
TIMER HIGH
3
TIMER LOW
#LENGTH
PAYLOAD TYPE Value Description 00 Lane Sensor 01 Junction Sensor 10 Position Sensor 11 Other
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
42
Connecting Sensors & Actuators
sensorStream .OfType<LaneSensorPacket>() .Where(lsp => lsp.ControllerID<6) .Subscribe(psp => this.Handsets[psp.ControllerID] .Refresh(psp.Speed,psp.ButtonPressed)}); sensorStream .OfType<PositionSensorPacket>() .GroupBy(psp => psp.CarId) .SelectMany(g => g.Throttle(TimeSpan.FromMilliseconds(10))) .Where(psp => psp.CarId<6) .Subscribe(psp => this.Handsets[psp.CarId].LapCompleted());
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
43
Connecting Sensors & Actuators
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
44
Carrera D132 Racetrack Experiment
Cascade Stage 1
Safety Controller 1 Communication Channel 1
Cascade Stage 2
Safety Controller 2 Communication Channel 2
Cascade Stage 3
Safety Controller 3 Communication Channel 3
Cascade Stage n Real-Time Constraints Computation Smartness
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
45
Carrera D132 Racetrack Experiment
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
46
Carrera D132 Racetrack Experiment
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
47
Carrera D132 Racetrack Experiment
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
48
Carrera D132 Racetrack Experiment
Embedded Operating Systems | Lukas Pirl & Daniel Richter | November 15, 2018
49
Carrera D132 Racetrack Experiment