01.06.2013 Views

RTOS Fundamentals

RTOS Fundamentals

RTOS Fundamentals

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1326 RTF<br />

<strong>RTOS</strong> <strong>Fundamentals</strong><br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 1


Objectives<br />

When you finish this class you will<br />

know:<br />

- The terminology used in the <strong>RTOS</strong> world<br />

- What functions an <strong>RTOS</strong> provides and<br />

how it affects your programming style<br />

- What factors to consider when choosing<br />

an <strong>RTOS</strong> for your next project<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 2


Agenda<br />

When is an <strong>RTOS</strong> appropriate?<br />

<strong>RTOS</strong> Introduction<br />

- Concepts<br />

Terminology<br />

- Operation<br />

- Terminology<br />

Techniques<br />

Demonstrations<br />

- Demonstrations<br />

Current Support<br />

How to choose<br />

- Factors influencing your decision<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 3


When is an <strong>RTOS</strong> appropriate?<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 4


Why an <strong>RTOS</strong>?<br />

Efficient Resource Management<br />

- 4 UARTs, 3 SPI, 3 I 2C, , CTMU, USB<br />

(Device/Host/OTG), Ethernet, CAN…. CAN<br />

Deterministic behavior<br />

- Provable real-time real time response<br />

Rapid application development<br />

- Commercial <strong>RTOS</strong> provides well tested platform<br />

- Popular <strong>RTOS</strong> provides large pool of knowledge<br />

Structured Design and System Management<br />

- Software re-use re use<br />

- CASE Tools<br />

- System Profiling<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 5


Software Management<br />

- Stacks<br />

Why an <strong>RTOS</strong>?<br />

Stacks<br />

- USB ~40k<br />

- ZigBee ® ~40k<br />

- Ethernet ~85k<br />

- QVGA ~50k<br />

- Timing<br />

- Liberating time for multiple tasks<br />

Interoperability<br />

- Third party software<br />

- lwIP<br />

- Compliance Testing<br />

- OSEK, AutoSAR<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 6


Concepts and Terminology<br />

Pre-emption<br />

Pre emption<br />

Multitasking<br />

Hard Real-Time<br />

Real Time<br />

Priority Inversion<br />

Re-entrancy<br />

Re entrancy<br />

Task<br />

Soft Real-Time<br />

Real Time<br />

Co-operative Co operative Multitasking<br />

Deterministic<br />

Mailbox<br />

Priority Inheritance<br />

Round-Robin<br />

Round Robin<br />

Livelock<br />

Thread<br />

Mutex<br />

Context Switch<br />

Deadlock<br />

Queue<br />

Semaphore<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 7


Concepts<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 8


Task<br />

A group of instructions that execute to solve a<br />

portion of a problem<br />

A “problem problem” could be:<br />

- Design of a dishwasher system<br />

A “task task” for such system can be:<br />

- Manage water level<br />

- Manage motor speed<br />

A single task ‘thinks thinks’ that it has the CPU available<br />

all the time<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 9


Water<br />

Level<br />

Manager<br />

Door<br />

Manager<br />

Dishwasher System<br />

Button<br />

Manager<br />

Cycle<br />

Selection<br />

Manager<br />

Manage<br />

Motor<br />

Speed<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 10


What is it?<br />

Multitasking<br />

- Ability to do many things at once<br />

- Drink coffee, talk on cell-phone, cell phone, drive, switch lane<br />

- ‘Manage Manage water level’ level and ‘Manage Manage motor speed’ speed<br />

Tasks can be created and deleted at run-time run<br />

time<br />

- Typically fixed number of tasks at compile time<br />

Typically fixed number of tasks at compile time<br />

- Sometimes extra tasks automatically created<br />

User Issues:<br />

- Resource sharing<br />

- CPU, Memory, I/O, etc.<br />

- Synchronization<br />

- Inter-task Inter task communication<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 11


<strong>RTOS</strong> Related Task Calls<br />

Create – to create a new task<br />

Start – some <strong>RTOS</strong> require starting a task after creation<br />

- Start<br />

Delete – to delete a task<br />

- <strong>RTOS</strong> may not release some system memory<br />

- Less common in embedded systems<br />

Suspend – to wait execution<br />

Resume – to resume execution<br />

Change Priority – to dynamically change task<br />

priority<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 12


What is it?<br />

- Multi<br />

Scheduling<br />

Multi-tasking tasking requires all tasks get scheduled to run on<br />

CPU according to some pre-determined pre determined scheme<br />

Types of Scheduling:<br />

- Co-operative, Co operative, Pre-emptive<br />

Pre emptive<br />

- Typical Real Time System Uses Pre-emptive<br />

Pre emptive<br />

- Round-robin, Round robin, Deadline Monotonic, Least Slack-Time<br />

Slack Time<br />

etc.<br />

Issues:<br />

- Task Dead-lines Dead lines<br />

- Missed dead-lines dead lines may have severe consequences<br />

- Context Switch Time<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 13


Real-time Real time<br />

Scheduling Tasks<br />

- Does not always mean ‘fast fast’<br />

- Tasks must be written to obtain best<br />

predictable response<br />

Soft Real-time Real time<br />

- Tasks will generally run on-time on time<br />

- Little effect if tasks are delayed<br />

Hard Real-time Real time<br />

- Tasks must be allowed to run on-time on time<br />

- Serious problems if task execution is<br />

delayed<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 14


Co-Operative Co Operative Multitasking<br />

Tasks execute until they pause or yield<br />

- Must be written to explicitly yield<br />

System performance can be optimised<br />

Tasks can be given priorities<br />

while (1) {<br />

x = x + 1;<br />

for(i=0;i


Pre-emptive Pre emptive Multitasking<br />

Tasks are swapped either voluntarily or<br />

automatically by the <strong>RTOS</strong><br />

Tasks normally selected based upon priority<br />

while (1) {<br />

for(i=0;i


Priority<br />

Real-time Real time systems are hierarchical<br />

Each task gets to execute according to<br />

pre-determined<br />

pre determined-priority priority<br />

- Priority determines right to run on CPU<br />

Priorities can be dynamically changed<br />

Truly deterministic real-time real time systems assign<br />

different priority to each task<br />

Round-robin robin for equal priorities<br />

- Round<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 17


Round-Robin Round Robin Scheduling<br />

Each task is given a fixed time to execute<br />

- Must be written accordingly<br />

The scheduler runs each task in turn<br />

while(1) {<br />

}<br />

switch(x) {<br />

}<br />

case 0: …<br />

break;<br />

case 1: …<br />

break;<br />

Task 1<br />

Scheduler<br />

while(1) {<br />

}<br />

switch(x) {<br />

}<br />

case 0: …<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 18<br />

break;<br />

case 1: …<br />

break;<br />

Task 2<br />

while(1) {<br />

}<br />

switch(x) {<br />

}<br />

case 0: …<br />

break;<br />

case 1: …<br />

break;<br />

Task 3


Priority<br />

t0<br />

Multi-tasking<br />

Starts<br />

Priority Based Pre-Emptive<br />

Pre Emptive<br />

Multi-Tasking<br />

Multi Tasking<br />

HP, MP and LP are READY at time t0<br />

HP Runs<br />

MP Ready<br />

HP Wait<br />

MP Runs<br />

LP Ready LP Ready<br />

t1<br />

HP Waits for<br />

Event<br />

HP Wait HP Runs HP Wait<br />

MP Dormant MP Dormant MP Dormant<br />

LP Runs<br />

t2<br />

MP Finishes<br />

LP Runs<br />

LP Pre-empted<br />

& Ready<br />

t3<br />

Event HP<br />

was waiting<br />

for occurs<br />

LP Runs<br />

HP = Highest Priority Task, MP = Medium Priority Task, LP = Lowest Priority Task<br />

t4<br />

HP waits for Resource<br />

LP Runs<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 19<br />

Time


Life of a Task<br />

Interrupt<br />

Running<br />

Dormant<br />

Interrupt<br />

Return<br />

Scheduler Pend<br />

Delete<br />

Scheduler<br />

TCB and Stack Allocated<br />

Create<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 20<br />

Post<br />

Delete<br />

Delete<br />

<strong>RTOS</strong>


Context Switches<br />

During a yield or pre-emption pre emption the task pushes the processor<br />

state<br />

The <strong>RTOS</strong> determines the next task to run<br />

The processor state is popped<br />

The next task runs<br />

PC<br />

PSVPAG<br />

w0-w15<br />

SR<br />

char buff[2];<br />

double y;<br />

int x;<br />

Task 1<br />

?<br />

PC<br />

PSVPAG<br />

w0-w15<br />

SR<br />

char ledState;<br />

int count;<br />

Task 2<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 21


#define portSAVE_CONTEXT() \<br />

asm volatile( "PUSH SR \n“ \<br />

"PUSH W0 \n“ \<br />

"MOV #32, W0 \n“ \ /*disable INTs*/<br />

"MOV W0, SR \n“ \<br />

"PUSH W1 \n“ \<br />

"PUSH.D W2 \n“ \<br />

"PUSH.D W4 \n“ \<br />

"PUSH.D W6 \n“ \<br />

"PUSH.D W8 \n“ \<br />

"PUSH.D W10 \n“ \<br />

"PUSH.D W12 \n“ \<br />

"PUSH W14 \n“ \<br />

"PUSH RCOUNT \n“ \<br />

"PUSH TBLPAG \n“ \<br />

"PUSH CORCON \n“ \<br />

"PUSH PSVPAG \n“ \<br />

"MOV _uxCriticalNesting, W0 \n“ \<br />

"PUSH W0 \n“ \<br />

"MOV _pxCurrentTCB, W0 \n“ \<br />

"MOV W15, [W0] ");<br />

Example PIC24F<br />

#define portRESTORE_CONTEXT() \<br />

asm volatile("MOV _pxCurrentTCB, W0 \n“ \<br />

"MOV [W0], W15 \n“ \<br />

"POP W0 \n“ \<br />

"MOV W0, _uxCriticalNesting \n“ \<br />

"POP PSVPAG \n“ \<br />

"POP CORCON \n“ \<br />

"POP TBLPAG \n“ \<br />

"POP RCOUNT \n“ \<br />

"POP W14 \n“ \<br />

"POP.D W12 \n“ \<br />

"POP.D W10 \n“ \<br />

"POP.D W8 \n“ \<br />

"POP.D W6 \n“ \<br />

"POP.D W4 \n“ \<br />

"POP.D W2 \n“ \<br />

"POP.D W0 \n“ \<br />

"POP SR " );<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 22


Demo concepts:<br />

- Task Creation<br />

- Multi-tasking<br />

Multi tasking<br />

Demo 1<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 23


Terminology<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 24


Memory Management<br />

Typical <strong>RTOS</strong>s provide memory allocation<br />

facilities<br />

- Frequently fixed block scheme<br />

- Deterministic service calls<br />

- Avoid memory fragmentation<br />

<strong>RTOS</strong> System Calls for Memory Allocation<br />

- Allocate –allocate allocate a block from memory<br />

- Free –release release a block of memory<br />

- Query –query query fixed block size, number of<br />

available blocks, etc. in a memory area<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 26


Events are signals to a task<br />

Events<br />

- That effect the execution of a task<br />

- Typically come from outside the task<br />

- Can be combinatorial<br />

External hardware events<br />

- Water level full in dishwasher<br />

- Hardware pushbutton pressed<br />

Software events<br />

- Another task has completed its operation<br />

- Signal from an ISR<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 27


Message Queue<br />

Standard method for inter-task inter task<br />

communication<br />

- Queue is allocated storage<br />

- Definable size and number of entries<br />

- May contain data or pointers<br />

Tasks can add messages<br />

- Many tasks can write<br />

Tasks can pend on the queue<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 29


What is it?<br />

Mailbox<br />

- Method to send ‘pointer pointer’ sized asynchronous data<br />

between tasks<br />

- Often implemented as a simple queue<br />

Tasks must agree on what ‘pointer pointer’ points to<br />

Multiple tasks can wait on a message to be posted<br />

- Highest priority task wins in retrieving message<br />

Multiple tasks can post a message<br />

- Only one message can be present in the mailbox at any<br />

time<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 30


Semaphore<br />

Semaphores are used for synchronization<br />

- A flag that can only be modified atomically<br />

- Protect Critical Section, Resource Management, Synchronization<br />

Two types of Semaphores:<br />

- Binary – A value of 0 or 1<br />

- Counting – non-negative non negative integer value<br />

- Zero<br />

- Another task is in specific critical section<br />

- Resource is busy<br />

- Non-zero Non zero<br />

- You can enter critical section of code<br />

- Resource is available<br />

Issues: ssues:<br />

- Priority Inversion<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 32


Mutex<br />

Prevents conflicting access to common resource<br />

- Hardware Registers<br />

- Peripherals<br />

- Data structures<br />

The same as binary semaphore<br />

Mutexes can lead to deadlocks occurring<br />

<strong>RTOS</strong> provide priority inheritance to overcome<br />

problem of priority inversion<br />

- Mutex may have inheritance<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 33


Deadlocks<br />

Each task waits for the other to release the<br />

mutex<br />

- Neither completes<br />

Thread A<br />

Owns Mutex X<br />

Waits on Mutex Y<br />

Mutex X<br />

Mutex Y<br />

Thread B<br />

Waits on Mutex X<br />

Owns Mutex Y<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 34


What is it?<br />

Priority Inversion<br />

- When a lower priority task holds a resource that a<br />

higher priority task needs, the higher priority task must<br />

wait (as if it were a lower priority task) until the lower<br />

priority task releases the resource.<br />

- In such scenario, the lower priority task executes as if it<br />

has higher priority.<br />

Problem typically encountered in dealing with<br />

<strong>RTOS</strong> service like Semaphore<br />

Can be solved by Priority Inheritance<br />

- Not always the best solution, design it out!<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 36


Priority<br />

LP Running at t0<br />

LP Runs<br />

t0<br />

LP<br />

gets<br />

Sem1<br />

HP Runs<br />

LP Ready<br />

t1<br />

HP<br />

created,<br />

LP ready<br />

Priority Inversion<br />

HP Wait<br />

LP Runs<br />

t2<br />

HP waits<br />

for Sem1,<br />

LP runs<br />

HP Wait<br />

MP Runs<br />

LP Ready<br />

t3<br />

MP<br />

created,<br />

LP ready<br />

HP Wait<br />

MP Dormant<br />

LP Runs<br />

t4<br />

MP<br />

finishes,<br />

LP runs<br />

HP Runs<br />

MP Dormant<br />

LP Ready<br />

t5<br />

LP puts<br />

Sem1,<br />

HP runs<br />

HP = Highest Priority Task, MP = Medium Priority Task, LP = Lowest Priority Task<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 37<br />

Time


Examples<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 38


Compile Time:<br />

<strong>RTOS</strong> Configuration<br />

- Configuration header file<br />

- Enable or disable OS services<br />

- Maximums: semaphores, mutex, message queues<br />

- Enable OS debug and statistic gathering facilities<br />

Run Time:<br />

- Hardware specific initialization (BSP)<br />

- Data structure initialization<br />

- Initialization of resource managers<br />

- Task creation, Memory allocations, Link-List Link List creations<br />

- Initialization of inter-task inter task messaging<br />

- Enter Multi-tasking<br />

Multi tasking<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 39


Example Configuration<br />

#define configUSE_PREEMPTION 1<br />

#define configUSE_IDLE_HOOK 0<br />

#define configUSE_TICK_HOOK 0<br />

#define configTICK_RATE_HZ ( 1000 )<br />

#define configCPU_CLOCK_HZ ( 80000000UL 80000000UL )<br />

#define configPERIPHERAL_CLOCK_HZ ( 40000000UL 40000000UL )<br />

#define configMAX_PRIORITIES ( 5 )<br />

#define configMINIMAL_STACK_SIZE ( 200 )<br />

#define configTOTAL_HEAP_SIZE ( 28000 )<br />

#define configMAX_TASK_NAME_LEN ( 8 )<br />

#define configUSE_TRACE_FACILITY 0<br />

#define configUSE_16_BIT_TICKS 0<br />

#define configIDLE_SHOULD_YIELD 1<br />

#define configUSE_MUTEXES 1<br />

/* Set the following definitions to 1 to include the API function, function,<br />

or zero to exclude the API function. */<br />

#define INCLUDE_vTaskPrioritySet 1<br />

#define INCLUDE_uxTaskPriorityGet 1<br />

#define INCLUDE_vTaskDelete 0<br />

#define INCLUDE_vTaskCleanUpResources 0<br />

#define INCLUDE_vTaskSuspend 1<br />

#define INCLUDE_vTaskDelayUntil 1<br />

#define INCLUDE_vTaskDelay 1<br />

#define INCLUDE_uxTaskGetStackHighWaterMark 1<br />

/* The priority at which the tick interrupt runs. This should probably probably<br />

be kept at 1. */<br />

#define configKERNEL_INTERRUPT_PRIORITY 0x01<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 40


Inter-task Inter task<br />

Communication<br />

Information passed between tasks; and<br />

between tasks and ISRs<br />

Two ways to perform inter-task inter task<br />

communication:<br />

- Global memory and semaphore or mutex<br />

- Mail-box Mail box and Message Queues<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 41


Demo Concepts<br />

- Inter-task Inter task<br />

Communication<br />

- Message Queues<br />

Demo 2<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 42


What is it?<br />

Critical Sections<br />

- A sequence of code that must execute<br />

atomically<br />

- E.g. update system data-structures<br />

data structures<br />

Semaphores and Mutexes used to guard<br />

Critical Sections<br />

Locking interrupts (or scheduler) may be<br />

desirable<br />

- If manipulating only one variable or so<br />

- Less OS overhead<br />

- This may degenerate Interrupt Response<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 43


Demo Concepts<br />

- Critical Sections<br />

- Semaphore<br />

- Note Critical Section in<br />

task creation code<br />

- Note atomic action in<br />

parallel port code<br />

- PIC32 version does not<br />

use critical section<br />

Demo 3<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 44


Current 3 rd Party Support<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 45


Vendor/<strong>RTOS</strong><br />

AVIX-RT 2.5<br />

CMX 5.30<br />

DSPNano<br />

Unison<br />

embOS V3.52<br />

Product<br />

ThreadX G5.1.5.0<br />

Free<strong>RTOS</strong> v5.2.0<br />

µC/OS-II v2.84<br />

Salvo 4 Pro and<br />

Salvo 4 LE<br />

<strong>RTOS</strong> Vendors<br />

MPLAB®<br />

Plug-in<br />

Yes<br />

Yes<br />

Yes<br />

Yes<br />

Yes<br />

No<br />

No<br />

Yes<br />

16/32<br />

8/16/32<br />

16/32<br />

16/32<br />

8/16/32<br />

8/16/32<br />

16/32<br />

DSP, TCP/IP, POSIX<br />

GUI, TCP/IP<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 46<br />

16<br />

32<br />

Microchip<br />

16/32 Ports<br />

TCP/IP<br />

TCP/IP<br />

Modules/ Support


<strong>RTOS</strong> Vendor Websites<br />

AVIX: http://www.avix-rt.com<br />

http://www.avix rt.com/<br />

CMX: http://www.cmx.com/<br />

Express Logic: http://www.rtos.com/<br />

Free<strong>RTOS</strong>: http://www.freertos.org/<br />

Micrium: http://www.micrium.com/<br />

Pumpkin: http://www.pumpkininc.com/<br />

RoweBots: RoweBots:<br />

http://www.rowebots.com/<br />

Segger: http://www.segger.com/<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 47


How to Choose<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 48


Many factors:<br />

Factors influencing<br />

- Context Switch Time<br />

- <strong>RTOS</strong> Service Call Performance<br />

- Interrupt Response Time<br />

- Highest Priority Interrupt Response Time<br />

- Scheduling Algorithms<br />

Tools and Middleware Integration<br />

- Additional libraries for TCP/IP, DSP, Graphics<br />

Business Model<br />

- Freeware, Open source, Support, License, Royalties<br />

- Reliability and user base<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 49


The Numbers Game<br />

Some <strong>RTOS</strong> vendors have done testing on<br />

Context switch time, Size, Interrupt response<br />

time, etc.<br />

However, few numbers are officially released<br />

Like-for for-like like comparisons can be difficult<br />

- Like<br />

It is very difficult to recommend one product<br />

- Much depends on the application<br />

- Users should expect to perform some tests<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 50


We discussed:<br />

Summary<br />

- Where an <strong>RTOS</strong> is useful<br />

- The basic concepts behind an <strong>RTOS</strong><br />

- The terminology used<br />

- Several demonstrations<br />

What to think about when selecting an <strong>RTOS</strong><br />

Please attend classes 1327 MRT, 1328 THR and<br />

1329 CAR for a more detailed and hands-on hands on look<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 51


Questions ?<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 52


Trademarks<br />

The Microchip name and logo, the Microchip logo, dsPIC, KeeLoq, KeeLoq logo, MPLAB,<br />

PIC, PICmicro, PICSTART, rfPIC and UNI/O are registered trademarks of Microchip<br />

Technology Incorporated in the U.S.A. and other countries.<br />

FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL<br />

and The Embedded Control Solutions Company are registered trademarks of Microchip<br />

Technology Incorporated in the U.S.A.<br />

Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net,<br />

dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial<br />

Programming, ICSP, ICEPIC, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB,<br />

MPLINK, mTouch, nanoWatt XLP, Omniscient Code Generation, PICC, PICC-18, PICkit,<br />

PICDEM, PICDEM.net, PICtail, PIC32 logo, REAL ICE, rfLAB, Select Mode, Total<br />

Endurance, TSHARC, WiperLock and ZENA are trademarks of Microchip Technology<br />

Incorporated in the U.S.A. and other countries.<br />

SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.<br />

All other trademarks mentioned herein are property of their respective companies.<br />

© 2009, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.<br />

© 2009 Microchip Technology Incorporated. All Rights Reserved. 1326 RTF Slide 53

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!