2015年6月10日水曜日

PRJ#3 Interesting application using multiple components

PRJ#3 Interesting application using multiple components

PRJ#2 Display number zero to 8 continuously

PRJ#2 Display number zero to 8 continuously

PRJ#1 All LEDs on in a seven segment display

PRJ#1 All LEDs on in a seven segment display

HW#6 Create Two Tasks and an Interrupt Handler (ISR)

HW#6 Create Two Tasks and an Interrupt Handler (ISR)

• Create two tasks and an interrupt handler (ISR)
• Task#1 should perform the following in a loop:
• delay (sleep) for about 200 ms
• send five messages in a queue#1 (to ISR())
• generate an sw interrupt
• ISR should perform the following:
• receive all the messages from queue#1
• modify each message and send them on queue#2
• Task#2 should perform the following in a loop:
• receive each item from queue#2

• print the value out

HW#5 Simulate High Frequency interrupts scenario

HW#5 Simulate High Frequency interrupts scenario

• Simulate high frequency interrupts scenario and use counting semaphores to avoid lost events between ISR and sync.task

• Hint: To simulate high frequency interrupts, each time an interrupt has arrived, perform multiple semaphore posts (gives) in the ISR.


• Expected output: You should see multiple prints from the sync. Task demonstrating that we have received multiple sem posts.

HW#4 Message Queue

HW#4 Message Queue (lec 7)

Summary: Design a three task application with producers and consumers (similar to the assignment #10)

------------


• Design a three task application with producers and consumers (similar to the previous exercise)
• two producers (writers) which send data into the shared queue
• a consumer (reader) which receives each item and prints that

• This time pass compound datatypes (structures) instead long or int into the messages queues

• Also, make both the writers (equal) higher priority compared to the reader task – you may have to make further changes to get everything reliably working (with no queue overflows, etc.)

• Observe how the schedule changes

• Describe the schedule in brief notes (just a few lines)

-------------

EX10
HW4
EX11-14
HW5
HW6

HW#3 Round Robin Queue Implementation

HW#3 Round Robin Queue Implementation


  1. • create two tasks with different priorities (hi and lo)
  2. • each task should never call a blocking function (delay, etc.)
  3. • so both tasks are always ready
  4. • Use the priorty-set and priority-get function calls to effectively obtain a round-robin schedule
http://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html

New Name Description
TaskHandle_t Used to reference tasks.
QueueHandle_t Used to reference queues.
SemaphoreHandle_t Used to reference binary, counting, recursive and mutex type semaphores.
TimerHandle_t Used to reference software timers.
CoRoutineHandle_t Used to reference co-routines.
TickType_t Used to hold tick count values
BaseType_t Defined to the most efficient signed type for the architecture.
UBaseType_t Defined to the most efficient unsigned type for the architecture.
QueueSetHandle_t Used to reference a queue set.
QueueSetMemberHandle_t Used to reference a member of a queue set, which can be a queue or any of the semaphore types.
MemoryRegion_t Used with ports that support memory protection.
TaskParameters_t Used with ports that support memory protection.
TaskStatus_t Used in with the uxTaskGetSystemState() function.
TaskHookFunction_t Used with the task tag functions (for example vTaskSetApplicationTag().
TaskFunction_t Used with the xTaskCreate() function.
TimerCallbackFunction_t Used with the xTimerCreate() function.
TimeOut_t For advanced users only.

#19 Run time stat

#19 Run time stat

#18 Trace Track Schedule

#18 Trace Track Schedule

#17 Software Timer Interrupts

#17 Software Timer Interrupts

#16 Push Button Interrupts

#16 Push Button Interrupts

#15 Gate Keeper

#15 Gate Keeper

#14 Create a new version of vPrintString() called vNewPrintString()

#14 Create a new version of vPrintString() called vNewPrintString()

#13 Create a new version of vPrintString() called vNewPrintString()

#13 Create a new version of vPrintString() called vNewPrintString()

#12 Push button implementation

#12 Push button implementation

#11 Implement a typical workflow with an ISR and a sync task

#11 Implement a typical workflow with an ISR and a sync task

#10 message queue: Three tasks application with producers and consumers

#10 message queue: Three tasks application with producers and consumers


• Design a three task application with producers and consumers
      • two producers (writers) which send data into the shared queue
      • a consumer (reader) which receives each item and prints that
• challenge:
      • What should be the priority of the reader so that it receives data immediately after a send, after one or two writers are able write to the queue (not just one writer)

#8 void vApplicationIdleHook(void)

#8 void vApplicationIdleHook(void)

Create an application to get an estimate of the idle CPU time

2015年6月9日火曜日

#7 Replace a busy loop with delay function vTaskDelayUntil()

FreeRTOS assignment #7

Replace a busy loop with delay function vTaskDelayUntil()

#6 Replace a busy for loop with delay functions

#6 Replace a busy for loop with delay functions
vTaskDelay()

#5 Use a for loop to create a delay, after a delay

FreeRTOS Assignment 5

#5 Use a for loop to create a delay, after a delay

#4 Parameter passing from main to task

FreeRTOS Assignment 4

Obective:

  • Parameter passing from main to task
  • Print parameter passed (pointer), not a local string

#3 FreeRTOS

Learning RTOS Assignment 3