Program for nuclear reactor - embedded systems, Programming Languages

Assignment Help:

Implement the "Nuclear Reactor" example using the following:

 An ISR triggered by a button press
 A task to update the temperatures
 A semaphore to communicate between the ISR and the update task
 The update task should use dynamic memory allocation to get a buffer in which to place the temperature.
 Pass the buffer containing the temperatures to the checking task using an RTOS queue.

Write an "Introduction to using FreeRTOS" document in which you use your "Nuclear Reactor" code as an example to explain the key concepts of Semaphores, queues, dynamic memory allocation in an RTOS and timing in an RTOS.

This is a code: Nuclear reactor.
////////////////////////////////////////////////////////

////////////////////////////////////////////////////////

//// main.c

////////////////////////////////////////////////////////

////////////////////////////////////////////////////////

#include

/* Scheduler include files. */

#include

#include

#include

#include

/*-----------------------------------------------------------*/

voidTaskUpdatTemps(void *pvParameters);

voidTaskCheckTemps(void *pvParameters);

/*-----------------------------------------------------------*/

//global shared data

int temperatures[2];

//xSemaphoreHandle-Data structure managed by the RTOS

xSemaphoreHandletemperaturesSem;

xSemaphoreHandleReleaseSem;

ISR(INT0_vect)

{

 //Release the semaphore

 xSemaphoreGive(ReleaseSem);

}

intmain(void)

{

 //Set direction of PORTB pin 5,6,7 as output pins

 DDRB |= (1<
 DDRB |= (1<
 DDRB |= (1<
 //Generate in on rising edge on INT0 pin - bits in EICRA Reg

 EICRA |= (1 << ISC00);

 EICRA |= (1 << ISC01);

 //Enable - bits in EIMSK reg

 EIMSK |= (1 << INT0);

 //Enable interrupts - Set I bit in SR(status register)

 sei();

 xTaskCreate(

 TaskUpdatTemps

 , NULL

 , 256

 , NULL

 , 2

 , NULL );

 xTaskCreate(

 TaskCheckTemps

 , NULL

 , 256

 , NULL

 , 1

 , NULL );

 //Create semaphores

 vSemaphoreCreateBinary(temperaturesSem);

 vSemaphoreCreateBinary(ReleaseSem);

 //Start the task Scheduler

 vTaskStartScheduler();

/*while(1)

 {

 //do nothing

 }*/

}

/*-----------------------------------------------------------*/

voidTaskUpdatTemps(void *pvParameters)

{

//Just keep compiler happy

 (void)pvParameters;

 staticint count = 0;

while(1)

 {

 //Take the semaphore ReleaseSem

 xSemaphoreTake(ReleaseSem, portMAX_DELAY);

 //Take the semaphore temperatureSem to protect atomic variables

 xSemaphoreTake(temperaturesSem, portMAX_DELAY);

 temperatures[0]=count;

 temperatures[1]=count;

 //Give the semaphore back

 xSemaphoreGive(temperaturesSem);

 //Increment Count variable

 count ++;

 //Toggle portb pin 6 to turn LED on/off (Using Exclusive OR)

 PORTB ^= (1<
 //Delay for 1 sec

 //vTaskDelay( 1000 / portTICK_RATE_MS );

 }

}

/*-----------------------------------------------------------*/

voidTaskCheckTemps(void *pvParameters) // Main Green LED Flash

{

int temp0, temp1;

 (void) pvParameters;

//Set direction of pin to be an output

 DDRB |= (1<
while(1)

 {

 //Take the semaphore temperatureSem to protect atomic variables

 xSemaphoreTake(temperaturesSem, portMAX_DELAY);

 temp0=temperatures[0];

 //Delay for 1 sec

 vTaskDelay( 1000 / portTICK_RATE_MS );

 temp1=temperatures[1];

 //Give the semaphore back

 xSemaphoreGive(temperaturesSem);

 //Toggle portb pin 5 to turn LED on/off (Using Exclusive OR)

 PORTB ^= (1<
 //Checking to see if temperatures match

 if(temp0 != temp1)

 {

 PORTB |= (1<
 }

 }

}


Related Discussions:- Program for nuclear reactor - embedded systems

Built a liner program to manage a staff, A manager at the local Walmart nee...

A manager at the local Walmart needs to determine how many workers to hire to cover a 24-hour period. Each worker must work 9 consecutive hours but may only start work at the begin

Assembly language, I need help with having a user input a year, and my prog...

I need help with having a user input a year, and my program to spit out what day of the week Christmas is on.... any helping hands on this?

C++, You are to write a program which will answer a pair of questions for s...

You are to write a program which will answer a pair of questions for squares, triangles, circles and ellipses. A square is defined by its lower left corner (SLLx,SLLy), and the len

Matlab, ,how to write matlab program for fast decoupled method

,how to write matlab program for fast decoupled method

CMIS 102, Calculate the total price based on several key parts required to ...

Calculate the total price based on several key parts required to build a state-of-the-art gaming computer. The user will have the option of selecting different parts.

Motion field matlab with quiver, how to get the HORIZONTAL motion field fro...

how to get the HORIZONTAL motion field from motion vectors matrices

Irc or internet relay chat application, Programming Project Specification: ...

Programming Project Specification: IRC or Internet Relay Chat is an application that lets multiple users communicate via text messages with each other in common "virtual" rooms.

Write your own version of the strcmp function string_compare, Write your ow...

Write your own version of the strcmp function string_compare. Supply a main program that will test each of the 3 differing outcomes. int string_compare(char *s, cha

C# xna game project, I need to finish my game project within two weeks usin...

I need to finish my game project within two weeks using XNA. Would you guys can help me to finish it? Thank you

Matlab homework, Matlab Assignment # For each of the three datasets (data1....

Matlab Assignment # For each of the three datasets (data1.txt, data2.txt, and data3.txt in bnhw2q2.zip), cluster the data using k-means in Matlab, with k=2, 3, 4 and 5 using the pr

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd