Week 16 - TEI Pir

Download Report

Transcript Week 16 - TEI Pir

Network and Systems Laboratory
nslab.ee.ntu.edu.tw
2011/12/23
Wireless Sensor Network And Labs fall 2011
1
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Admin
 Survey Presentation next week
Time
Team
9:10 am ~ 9:35 am
Team 1
9:35 am ~ 10:00 am
Team 2
Break
10:15 am ~ 10:40 am
Team 3
10:40 am ~ 11:05 am
Team 4
Break
11:20 am ~ 11:55 am
Team 5
 20 minutes presentation, 5 minutes Q&A
 During Q&A, next team prepare
 Term project demo will reverse the sequence
2011/12/23
Wireless Sensor Network And Labs fall 2011
2
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Administration
 Week 17 (1/6): Term Project workshop
 No class, I will be here to help you work on your term
project
 Deadline for the lab exercises

Demo and turn on your codes before 2011/1/6 23:59
 Check Point


2011/12/23
Make your car move (forward, backward, turn)
Avoid obstacle
 When your car detect obstacle, it will turn
Wireless Sensor Network And Labs fall 2011
3
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Outline
 More peripherals
 Watchdog Timer
 Supply Voltage Supervisor (SVS)
 Direct Memory Access (DMA)
 Flash Memory Controller
 External 8Mbit Flash Memory: M25P80
 Temperature/humidity sensor: SHT11
 Low Power Modes
 MSP430 Software Coding Techniques
2011/12/23
Wireless Sensor Network And Labs fall 2011
4
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Watchdog Timer
 Most embedded systems need to be self-reliant
 watchdog timer is a hardware
 that can watch for system hang
 reset the processor if any occur
 It is a counter
 counts down from some initial value to zero
 must select a counter value
 periodically restarts the counter

before it counts to zero
 If it counts to zero
 trigger a system reset
2011/12/23
Wireless Sensor Network And Labs fall 2011
5
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Watchdog timer on MSP430
 16-bit timer, four software-selectable time intervals
 (clock source)/32768, (clock source)/8192, (clock
source)/512, (clock source)/64
 Can be configured into watchdog mode or interval
mode
 Watchdog mode: generate a reset when timer expired
 Interval mode: generate a interrupt when timer expired
 When power up, it is automatically configured in the
watchdog mode
 Initial ~32-ms reset interval using the DCOCLK.
 Must halt or setup the timer at the beginning
2011/12/23
Wireless Sensor Network And Labs fall 2011
6
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Usage
ClockSource/32768:
 Stop watchdog timer
ClockSource/8192: WDTIS0
ClockSource/512: WDTIS1
 WDTCTL = WDTPW + WDTHOLD; ClockSource/64: WDTIS0 + WDTIS1
 Change watchdog timer interval
 WDTCTL = WDTPW+WDTCNTCL+(interval)
 Periodically clear an active watchdog
 WDTCTL |= WDTPW+WDTCNTCL
Password-protected: must include
the write password
2011/12/23
Wireless Sensor Network And Labs fall 2011
7
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Example
Select clock source: ACLK
Select timer interval:
(clock source)/8192
= 32768Hz/8192
= 4Hz
Reset watchdog counter
Reset watchdog counter
2011/12/23
Wireless Sensor Network And Labs fall 2011
8
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Supply Voltage Supervisor
 Monitor the AVCC supply voltage or an external
voltage
 Can be configured to set a flag or generate a reset
when the supply voltage or external voltage drops
below a user-selected threshold
 Comparison
 14 threshold levels for AVCC
 External input: SVSIN

2011/12/23
compared to an internal level of approximately 1.2 V
Wireless Sensor Network And Labs fall 2011
9
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
SVS Register
This bit will set to 1
if the voltage is
below threshold
 SVSCTL
 VLDx
2011/12/23
Wireless Sensor Network And Labs fall 2011
10
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Example
2011/12/23
Wireless Sensor Network And Labs fall 2011
11
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Direct Memory Access
 Transfers data from one address to another, without
CPU intervention
 Increase throughput and decrease power consumption
 DMA on MSP430
 Three independent transfer channels
 Configurable transfer trigger selections
 Timer, UART, SPI, ADC, …..
 Byte or word and mixed byte/word transfer capability
 Single, block, or burst-block transfer modes
 Block sizes up to 65535 bytes or words
2011/12/23
Wireless Sensor Network And Labs fall 2011
12
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
DMA Addressing Modes
Source/destination
address can be
configured to be
unchange/increment
/decrement after
each transfer
2011/12/23
Wireless Sensor Network And Labs fall 2011
13
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
DMA Transfer Modes
 Six transfer modes
 Single transfer, block transfer, burst-block transfer, repeated single
transfer, repeated block transfer, repeated burst-block transfer
 Single transfer
 Each transfer requires a separate trigger, DMA is disable after transfer

Must re-enable DMA before receive another trigger
 Repeated single transfer: DMA remains enable
 Another trigger start another transfer
 Block transfer
 Transfer of a complete block after one trigger, DMA is disable after
transfer
 Repeated block transfer: DMA remains enable,

Another trigger start another transfer
 Burst-block transfer
 Block transfers with CPU activity interleaved,
 Repeated burst-block transfer: DMA remains enable


2011/12/23
Keep transferring
CPU executes at 20% capacity
Wireless Sensor Network And Labs fall 2011
14
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
DMA Triggers
A transfer is triggered when
the CCIFG flag is set
A transfer is triggered when
USART0 receives new data
A transfer is triggered when
USART0 is ready to transmit
new data
A transfer is triggered by an
ADC12IFGx flag.
2011/12/23
Wireless Sensor Network And Labs fall 2011
15
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Initialization And Usage
(DMACTL0)
Configure
transfer trigger
(DMA0SA)
Configure source
address
(DMACTL1)
Select transfer mode, addressing
mode, and/or other setting, and
enable DMA
(DMA0DA)
Configure destination
address
(DMA0SZ)
Configure block size
 Example
2011/12/23
Repeated
single transfer
Use DMA to
transfer a string to
UART buffer, send
it out through UART
Source address is
source byte to
incremented
destination byte
Wireless Sensor Network And Labs fall 2011
DMA enable
16
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Others About DMA
 DMA Transfer Cycle Time
 DMA transfers are not interruptible by system
interrupts
2011/12/23
Wireless Sensor Network And Labs fall 2011
17
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Flash Memory Controller
 MSP430 flash memory is bit-, byte-, and word-
addressable and programmable
 Segment erase and mass erase
 Minimum VCC voltage during a flash write or
erase operation is 2.7 V
 Program code are stored in the flash
 Unused flash memory can be use to store other data
2011/12/23
Wireless Sensor Network And Labs fall 2011
18
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Flash Memory Characteristics
 Write in bit-, byte-, or word; erase in segment
 MSP430F1611 segment size
 Information memory: 128 bytes
 Main memory: 512 bytes
 Erase
 Make every bit in the segment as logic 1
 Write
 Generate logic 0 in the memory
 Flash endurance
 Maximum erase/write cycles
 In MSP430 datasheet


2011/12/23
Minimum: 10000 cycles
Typical: 100000 cycles
Wireless Sensor Network And Labs fall 2011
19
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Flash Memory Operation
 Read, write, erase mode
 Default mode is read mode
 Write/erase modes are selected with the BLKWRT,
WRT, MERAS, and ERASE bits
 Flash Memory Timing Generator
 Sourced from ACLK, SMCLK, or MCLK
 Must be in the range from ~ 257 kHz to ~ 476 kHz

2011/12/23
Incorrect frequency may result in unpredictable
write/erase operation
Wireless Sensor Network And Labs fall 2011
20
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Flash Memory Erase
Disable all
interrupts and
watchdog
(FCTL2)
Setup timing
generator
Re-enable
interrupt and
watchdog
(FCTL3)
lock flash
memory
(FCTL3)
Unlock flash
memory
Wait until erase
complete
(FCTL1)
Configure the
operation
Dummy write
 Example
Password protected
2011/12/23
Wireless Sensor Network And Labs fall 2011
21
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Flash Memory Write
Disable all
interrupts and
watchdog
(FCTL2)
Setup timing
generator
Re-enable
interrupt and
watchdog
(FCTL3)
lock flash
memory
(FCTL3)
Unlock flash
memory
(FCTL1)
Configure the
operation
Wait until write
complete
Write to specific
memory address
 Example
Password protected
2011/12/23
Wireless Sensor Network And Labs fall 2011
22
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Outline
 More peripherals
 Watchdog Timer
 Supply Voltage Supervisor (SVS)
 Direct Memory Access (DMA)
 Flash Memory Controller
 External 8Mbit Flash Memory: M25P80
 Temperature/humidity sensor: SHT11
 Low Power Modes
 MSP430 Software Coding Techniques
2011/12/23
Wireless Sensor Network And Labs fall 2011
23
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
M25P80




External Flash storage on Taroko
8 Mbit Flash Memory
SPI Bus Compatible Serial Interface
Memory organization
 16 sectors
 Each sector containing 256 pages
 Each page is 256 bytes
 Operations
 Erase: set all bit to 1
 Program(write): reset some bits to 0
 Read: read the content of the flash
2011/12/23
Wireless Sensor Network And Labs fall 2011
24
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Signals And Connections
2011/12/23
Wireless Sensor Network And Labs fall 2011
25
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
SPI
 Master–Slave mode
 Synchronous protocol
 All transmissions are referenced to a common clock
 Clock generated by the master (MCU)
 Four main signals
 Master Out Slave In (MOSI): data from master to slave
 Master In Slave Out (MISO): data from slave to master
 Serial Clock (SCLK or SCK): clock
 Chip Select (CS): select particular peripheral when
multiple peripherals are connected to master
2011/12/23
Wireless Sensor Network And Labs fall 2011
26
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Memory organization
2011/12/23
Wireless Sensor Network And Labs fall 2011
27
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Instruction Set
2011/12/23
Wireless Sensor Network And Labs fall 2011
28
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Operation
 Read Data Bytes (READ)
 Read data from memory
 Page Program
 Write bytes to a page
 Up to 256 bytes each time
 Sector Erase
 sets all bits to 1 inside
the chosen sector
 Bulk Erase
 Erase (sets to 1) all memory data
2011/12/23
Wireless Sensor Network And Labs fall 2011
29
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Device Driver
 Download here
 http://nslab.ee.ntu.edu.tw/courses/wsn-labs-spring09/labs/m25p80Driver.rar
 Important functions in hal_m25p80.c
 void halM25p80Init(void)
 void m25p80PowerUp(void);
 void m25p80PowerDown(void);
 void m25p80PageWrite(UINT16 add, UINT8 *buff, UINT8
size);
 void m25p80PageRead(UINT16 add, UINT8 *buff, UINT8
size);
 void m25p80SectorErase(UINT8 add);
 void m25p80BulkErase(void);
2011/12/23
Wireless Sensor Network And Labs fall 2011
30
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Functions
 void m25p80PageWrite(UINT16 add, UINT8 *buff, UINT8
size);
 address range from 0x0000 to 0x0fff (4096 pages in total)
 At most 256 bytes
 Always write from the beginning of the page
 void m25p80PageRead(UINT16 add, UINT8 *buff, UINT8 size);
 address range from 0x0000 to 0x0fff (4096 pages in total)
 At most 256 bytes
 Always read from the beginning of the page
 void m25p80SectorErase(UINT8 add);
 address range from 0x00 to 0x0f (16 sectors in total)
 Each sector is 65536 bytes
2011/12/23
Wireless Sensor Network And Labs fall 2011
31
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Example
2011/12/23
Wireless Sensor Network And Labs fall 2011
32
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Outline
 More peripherals
 Watchdog Timer
 Supply Voltage Supervisor (SVS)
 Direct Memory Access (DMA)
 Flash Memory Controller
 External 8Mbit Flash Memory: M25P80
 Temperature/humidity sensor: SHT11
 Low Power Modes
 MSP430 Software Coding Techniques
2011/12/23
Wireless Sensor Network And Labs fall 2011
33
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
SHT11
 Relative humidity and temperature sensors
 Digital output
 Manufacturer defined interface
 two wires bi-direction
1. Use a GPIO pin as clock (SCK), it
is always output direction
2. Use another GPIO as DATA,
dynamic setting it to input(read)
or output(write) direction
2011/12/23
Wireless Sensor Network And Labs fall 2011
34
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Taroko Connections
2011/12/23
Wireless Sensor Network And Labs fall 2011
35
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Start Transmission and Send Command
 How to start
 What are the commands available
2011/12/23
Wireless Sensor Network And Labs fall 2011
36
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Pull-up
An Example: SHT11
 Timing diagram
2011/12/23
Data pin in output
direction
Wireless Sensor Network And Labs fall 2011
Set data pin to input
direction, then SHT11
controls the DATA line
37
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Software Implementation
2011/12/23
Wireless Sensor Network And Labs fall 2011
38
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Software Implementation
2011/12/23
Wireless Sensor Network And Labs fall 2011
39
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Software Implementation
2011/12/23
Wireless Sensor Network And Labs fall 2011
40
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Convert to Physical Values
 12-bit humidity, 14-bit temperature
 Temperature
 Humidity
2011/12/23
Wireless Sensor Network And Labs fall 2011
41
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Device Driver
 Download here
 http://nslab.ee.ntu.edu.tw/courses/wsn-labs-spring09/labs/sht11Driver.rar
 Important functions in SHT1x_sensirion.c
 void sht1xInit();
 void sht1xReset();
 char sht1xMeasure(unsigned char *p_value,
unsigned char *p_checksum, unsigned char mode);
 void sht1xCalculate(float *p_humidity ,float
*p_temperature);
2011/12/23
Wireless Sensor Network And Labs fall 2011
42
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Functions
 char sht1xMeasure(unsigned char *p_value, unsigned char
*p_checksum, unsigned char mode);
 mode: { TEMP, HUMI }
 Store measured value to *p_value
 Store 8-CRC checksum to *p_checksum
 void sht1xCalculate(float *p_humidity ,float
*p_temperature);
 Convert measured value to physical value
 Put the measured value in *p_humidity, *p_temperature
 Result will also place in *p_humidity, *p_temperature
(overwrite)
2011/12/23
Wireless Sensor Network And Labs fall 2011
43
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Example
2011/12/23
Wireless Sensor Network And Labs fall 2011
44
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Outline
 More peripherals
 Watchdog Timer
 Supply Voltage Supervisor (SVS)
 Direct Memory Access (DMA)
 Flash Memory Controller
 External 8Mbit Flash Memory: M25P80
 Temperature/humidity sensor: SHT11
 Low Power Modes
 MSP430 Software Coding Techniques
2011/12/23
Wireless Sensor Network And Labs fall 2011
45
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
MSP430 Clock System
high-frequency
oscillator (optional)
digitally controlled oscillator
MSP430
Clock Signals
Clock Modules
DCOCLK
MCLK:
Master Clock
SMCLK:
Sub-main
clock
XT2CLK
LFXT1CLK
ACLK:
Auxiliary clock
CPU
Peripherals:
Timer,
UART, …
32.768KHz fixed rate
Low-frequency/highfrequency oscillator
2011/12/23
Wireless Sensor Network And Labs fall 2011
46
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
MSP430 Power Consumption
Characteristics
 Current increase with clock frequency
 Current increase with supply voltage
 Supply voltage vs frequency
 More active peripherals means more current
consumption
2011/12/23
Wireless Sensor Network And Labs fall 2011
47
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Operating Modes
 MSP430 has six operating modes
 The operating modes take into account three
different needs
 Ultralow-power


Speed and data throughput
Minimization of individual peripheral current
consumption
 Turn off different clocks in different operating
mode
2011/12/23
Wireless Sensor Network And Labs fall 2011
48
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Operating Modes
2011/12/23
Wireless Sensor Network And Labs fall 2011
49
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Typical Current Consumption
2011/12/23
Wireless Sensor Network And Labs fall 2011
50
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Low Power Modes
 Different low power mode disable different clocks
 Peripherals operating with any disabled clock are
disabled until the clock becomes active
 Wake up is possible through all enabled interrupts
 Returns to the previous operating mode if the status
register value is not altered during the ISR
2011/12/23
Wireless Sensor Network And Labs fall 2011
51
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Code Flow
2011/12/23
Wireless Sensor Network And Labs fall 2011
52
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Enter/Leave LPM
Intrinsic function
2011/12/23
Wireless Sensor Network And Labs fall 2011
53
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Which LPM To Enter?
 Depends on your configuration
 MSP430 has a flexible clock system
 Clock signal can select different clock source
 Peripheral can be configure to use different clock
signal
 Which clock signal still require when system goes
to sleep
 Remember the peripherals that use the clock signal
will also be disabled
2011/12/23
Wireless Sensor Network And Labs fall 2011
54
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Cautions
 Wakeup latency
 Clock module require some time to get stable


DCO: less than 6 μS
Low frequency oscillator (32.768KHz): hundreds of
milliseconds
 Temperature drift
 DCO change with temperature
 If temperature is possible to changes significantly,
re-calibrate DCO when leaving low power mode

2011/12/23
If DCO varying too large, some peripherals might not
function correctly, ex. UART
Wireless Sensor Network And Labs fall 2011
55
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Typical Configuration
digitally controlled oscillator
Clock Signals
Clock Modules
DCOCLK
XT2CLK
LFXT1CLK
MSP430
MCLK:
Master Clock
SMCLK:
Sub-main
clock
ACLK:
Auxiliary clock
CPU
Peripherals:
Timer,
UART, …
32.768KHz fixed rate
2011/12/23
Wireless Sensor Network And Labs fall 2011
56
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Useful Mode
 LPM0
 CPU, MCLK off
 DCO, SMCLK, ACLK on
 Power consumption: 60 μA (Taroko)
 SMCLK still required

Ex. UART use SMCLK
 LPM3
 CPU, MCLK, DCO, SMCLK off
 ACLK on
 Power consumption: 7 μA (Taroko)
 Only ACLK required

2011/12/23
Timer use ACLK (time keeping)
Wireless Sensor Network And Labs fall 2011
57
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Principles for Low-Power Applications
 Maximize the time in LPM3
 Use interrupts to wake the processor and control
program flow
 Peripherals should be switched on only when
needed
 Use low-power integrated peripheral modules in
place of software driven functions
 For example: Timer PWM, DMA
2011/12/23
Wireless Sensor Network And Labs fall 2011
58
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
MSP430 Software Coding Techniques
 Using these methods can greatly reduce debug
time and/or provide additional robustness in the
field
 Some should be used in every program, while
some are situation dependent
2011/12/23
Wireless Sensor Network And Labs fall 2011
59
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Techniques
 First Things First: Configure the Watchdog and
Oscillator
 Configuring the watchdog should be among the first
actions taken by any MSP430 program
 Using a low-frequency crystal on LFXT1 with a
device from the 4xx or 2xx families, the code should
configure the internal load capacitance (not for
MSP430F1611)
2011/12/23
Wireless Sensor Network And Labs fall 2011
60
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Techniques
 Always Use Standard Definitions From TI Header Files
 This is what we do
 Using Intrinsic Functions to Handle Low Power Modes
and Other Functions
Intrinsic
function
2011/12/23
Wireless Sensor Network And Labs fall 2011
61
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Techniques
 Write Handlers for Oscillator Faults
 In MSP430F1611, you can only delay for some time to
ensure the low frequency oscillator to stable

The other MSP430 family has specific circuit to detect
 Increasing the MCLK Frequency
 Make sure you have enough voltage level to operate
at the frequency you set

2011/12/23
Or unpredictable behavior
can occur
Wireless Sensor Network And Labs fall 2011
62
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Techniques
 Using a low-level initialization function
 Problem
 By default, when a C compiler generates assembly code, it
creates code that initializes all declared memory and inserts it
before the first instruction of the main() function
 In the event that the amount of declared memory is large
 The time required to initialize the long list of variables may be
so long that the watchdog expires before the first line of main()
can be executed
 Solution
 Disables the initialization of memory elements that don't need
pre-initialization
 __no_init int x_array[2500];
 Use a compiler-defined low-level initialization function
2011/12/23
Wireless Sensor Network And Labs fall 2011
63
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Techniques
 In-System Programming (ISP)
 If using the MSP430 ISP functionality to write to flash
memory
1.
2.
3.
4.
Set the correct timing value (257 kHz to ~ 476 kHz)
Set the flash lock bit after the ISP operation is complete
Take care that the cumulative programming time
Provide sufficient VCC
 Using Checksums to Verify Flash Integrity
 Flash memory data may corrupt, use checksum to
verify flash integrity periodically
2011/12/23
Wireless Sensor Network And Labs fall 2011
64
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Electromagnetic Compatibility
 EMI – Electromagnetic interference
 Unintentional generation, propagation and reception
of electromagnetic energy
 EMC - Electromagnetic compatibility
 Function properly in its intended electromagnetic
environment
 Not be a
2011/12/23
source of pollution
Wireless Sensor Network And Labs fall 2011
65
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
EMC on Software
 Usually EMC is consider as a hardware problem
 But some software techniques can greatly improve
the immunity of the system
 What will EMC cause
 False Signal Detection
 Code Runaway
 Disable interrupts
 Corrupt register setting
 Etc.
2011/12/23
Wireless Sensor Network And Labs fall 2011
66
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Software Immunity
 Reference
 “Improving the Transient Immunity Performance of
Microcontroller-Based Applications”
 by: Ross Carlton, Greg Racino, John Suchyta
 Freescale Semiconductor, Inc.
 They refer these techniques as “defensive
programming”
 You can find more on www
2011/12/23
Wireless Sensor Network And Labs fall 2011
67
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Digital Input Pins Error
 Majority vote
2011/12/23
Wireless Sensor Network And Labs fall 2011
68
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Update Registers Setting
 Digital Outputs and Crucial Registers
 In main system software loop

frequently update outputs and other critical registers
 Including



2011/12/23
Data direction registers
I/O modules that can be modified by software
RAM registers that are used for vital pieces of the
application
Wireless Sensor Network And Labs fall 2011
69
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Token Passing
2011/12/23
Wireless Sensor Network And Labs fall 2011
70
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Filling Unused Memory
 Fill unused memory with a single byte instruction
 SWI (software interrupt)
 NOP (no operation)
2011/12/23
Wireless Sensor Network And Labs fall 2011
71
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Some Others
 Boundary Checking
 Validating input signals
 For example: timer capture
TAR (counter)
TACCR_1 = 15000
Events
TACCR_2 = 60000
Noise TACCR_n = 15100
Filter this capture if it is too short
 Unused Interrupt Vectors
 Define all interrupt vectors
 Vectors from unused MCU functions should be
pointed to a safe routine
2011/12/23
Wireless Sensor Network And Labs fall 2011
72
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Choose What You Need
 These techniques come with some cost
 Increase code size
 Complexity
 Probably wouldn’t need these in this class
 But they might help in the future
 Choose the one you need
 For simple one (periodic update register, fill unused
memory, define all interrupt vectors),

Should probably do it every time
 For more complicated, depends on you
2011/12/23
Wireless Sensor Network And Labs fall 2011
73
Network and Systems Laboratory
nslab.ee.ntu.edu.tw
Thank You
2011/12/23
Wireless Sensor Network And Labs fall 2011
74