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

Write a script for explicitly display of values, Write a script called 'pro...

Write a script called 'prob1.m' that solves for the variables y, and z in terms of a user inputed x. The variables y and z are defined as follows: y = x - 30                when

Program for operate the rolodex, Program for Operate the Rolodex Rolod...

Program for Operate the Rolodex Rolodex is a rotating file, usually used to record business contact information. Cards are inserted in alphabetic order by name. You operate th

Visual basic a simple help, hello there, I making a program for the collage...

hello there, I making a program for the collage but I got stuck at one point, I have a timmer that moves object pnl with the pnl.left function, but I want it when it gets to end of

Find the general solution, Example : Find the general solution to the subse...

Example : Find the general solution to the subsequent differential equation. x 2 y′′ - 7 xy′ + 16 y= 0   Solution First the roots of (3)  r (r -1) - 7r + 16= 0 r 2

Differentiate between high level and low level languages, The languages use...

The languages used in the module are of a type known as high-level languages. There is another set of languages known as low-level languages. (a) Differentiate between high-leve

Depth estimation from a single view camera, i doing a project about depth e...

i doing a project about depth estimation, i have done some research, and i used the block matching algorithm to get the motion vectors from the image sequences, i now have the prob

Write a program to show twenty ellipses, Write a Program to Show Twenty Ell...

Write a Program to Show Twenty Ellipses 1. Write a program to show twenty ellipses which move away from the mouse pointer. Their initial locations should be random.

Java source code classes and objects, Design and implement a stringed music...

Design and implement a stringed musical instrument class using the following guidelines: a. Data fields for your instrument should include number of strings, an array of stri

Oracal Query, Find out the selling cost average for packages developed in P...

Find out the selling cost average for packages developed in Pascal

Write an implementation for the prime machine, You should use the BToolkit ...

You should use the BToolkit to produce the answers to the questions below. Where applicable, please use the machine names and identifier names suggested in the question to help me

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