Accelerometer Mouse System Software Design Chris Wittmier ET

  • Slides: 17
Download presentation
Accelerometer Mouse: System Software Design Chris Wittmier ET 474 Western WA University

Accelerometer Mouse: System Software Design Chris Wittmier ET 474 Western WA University

Timeslice Kernel Why Timeslice? l l Simplifies Design/ Debugging Eliminates potential μCOS issues with

Timeslice Kernel Why Timeslice? l l Simplifies Design/ Debugging Eliminates potential μCOS issues with MCU sleep mode

Task List (Tx) Power. Task l Tilt. Task l Pad. Task l Transmit. Task

Task List (Tx) Power. Task l Tilt. Task l Pad. Task l Transmit. Task l

Power. Task Functions: l Monitor activity, set operation mode (Wake/Snooze/Sleep) According to operation mode:

Power. Task Functions: l Monitor activity, set operation mode (Wake/Snooze/Sleep) According to operation mode: l l l Toggle accelerometer power Toggle RF transmitter power Sleep MCU, enable wake interrupts Period: ≈ 10 ms Execution Time: ≈ 10μs

Tilt. Task Functions: l l Get X-axis tilt (pulsewidth) Get Y-axis tilt (pulsewidth) How?

Tilt. Task Functions: l l Get X-axis tilt (pulsewidth) Get Y-axis tilt (pulsewidth) How? 1. Enable rising edge interrupt (& debounce) 2. Enable falling edge interrupt (& debounce) 3. Compare free-running counter values at edges Period: ≈ 10 ms Execution Time: ≈ 1. 5 ms

Pad. Task Functions: l Check status of 6 buttons: l l l Mouse 1,

Pad. Task Functions: l Check status of 6 buttons: l l l Mouse 1, Mouse 2, Mouse 3 Wheel 1, Wheel 2 Freeze (Cursor) Debounce buttons Interpret wheel direction Period: ≈ 10 ms Execution Time: ≈ 50μs

Transmit. Task Functions: l Transmit X-axis tilt (Write to SCI) Transmit Y-axis tilt Transmit

Transmit. Task Functions: l Transmit X-axis tilt (Write to SCI) Transmit Y-axis tilt Transmit button status Ø 1 byte each, 3 bytes total transmitted l l Period: ≈ 10 ms Execution Time: ≈ 500μs

MCU Load (Tx) In WAKE mode, max MCU load is estimated: L(max) = 50

MCU Load (Tx) In WAKE mode, max MCU load is estimated: L(max) = 50 μs + 1. 5 ms + 50 μs + 500 μs 10 ms =. 210

Intertask Communications (Tx)

Intertask Communications (Tx)

Modules Tasks Main. c Sensors. c Power. c Get. XWidth() Set. Wake() Get. YWidth()

Modules Tasks Main. c Sensors. c Power. c Get. XWidth() Set. Wake() Get. YWidth() Set. Snooze() Get. Pad() Set. Sleep() XByte Op. Mode Power. Task Tilt. Task Pad. Task Transmit. Task Functions Data Objects Tx. Init() YByte Pad. Byte

Task List (Rx) Receive. Task l Condition. Task l Report. Task l

Task List (Rx) Receive. Task l Condition. Task l Report. Task l

Receive. Task Functions: l Read Data from SCI Period: ≈ 10 ms Execution Time:

Receive. Task Functions: l Read Data from SCI Period: ≈ 10 ms Execution Time: ≈ 500μs

Condition. Task Functions: l l l Filter outlying tilt values Calculate tilt change rates

Condition. Task Functions: l l l Filter outlying tilt values Calculate tilt change rates Scale rates according to angles Smooth acceleration/ deceleration Predict values between transmitter reports Translate to MS Wheel. Mouse protocol Period: ≈ 5 ms Execution Time: ≈ 1 ms

Report. Task Functions: l Manage/Monitor SPI control lines l Write reports to USB UART

Report. Task Functions: l Manage/Monitor SPI control lines l Write reports to USB UART (Port T) l Ø Report rate of up to 200 reports/sec Period: ≈ 5 ms Execution Time: ≈ 500μs

MCU Load (Rx) Max MCU load is estimated: L(max) = 500 μs + 1

MCU Load (Rx) Max MCU load is estimated: L(max) = 500 μs + 1 ms + 500 μs 10 ms 5 ms =. 350

Intertask Communications (Rx)

Intertask Communications (Rx)

Modules Tasks Main. c Receive. c Condition. c Usb. c Get. Three() Calc. XSpeed()

Modules Tasks Main. c Receive. c Condition. c Usb. c Get. Three() Calc. XSpeed() Read. USB() Calc. YSpeed() Write. USB() Receive. Task Condition. Task Report. Task Functions Rx. Init() Form. Packet() Data Objects XByte XSpeed YByte YSpeed Pad. Byte Intelli. Packet