13
COMPTE RENDU Réalisé par: • Maha Achouri Conception des systèmes temps réel Programmation en multitaches INSTITUT SUPÉRIEUR D’INFORMATIQUE DE MÉDENINE

Temps reel

Embed Size (px)

Citation preview

COMPTE RENDURéalisé par:

• Maha Achouri

Conception des systèmes temps réelProgrammation en multitaches

INSTITUT SUPÉRIEUR D’INFORMATIQUE DE MÉDENINE

S o m m a i r eI. Systèmes temps réel

DéfinitionTaches Exemples des systèmes temps réels

II. Création des taches dans un environnement pic-c

Partie théorique

Partie pratique

Les RTOSPréparation de RTOS déclaration d’une tache

Programmation avec CSimulation en ISIS

TP1

TP2Programmation avec CSimulation en ISIS

I. Systèmes temps réel

C’est quoi

Un système

temps réel?

On dit un système temps réel tout systèmes qui ne dépend pas seulement des résultats logiques des traitements mais aussiDu temps auquel les résultats sont produites.

Définition

Taches

Une tâche est généralement caractérisée par un temps de calcul (Ci), une échéance (Di) qui est la date à laquelle la tâche doit avoir terminé son exécution, et dans le cas des tâches périodiques, par une période (Ti) qui représente la durée séparant ses instants d'activation. Une exécution de la tâche est appelée une instance.

Exemples des systèmes temps réels

Création des taches dans un environnement pic-c

Partie théorique

Les RTOS

rtos_run(): initialise l operateur de RTOS

rtos_terminate(): termine l’opération de rtos

rtos_enable(): reçoit le nom d’une tache en augment

rtos_disable(): permet de désactiver cette tache

rtos__msg_send(): elle permet d’envoyer l’octet à la tache indiqué

rtos_msg_read(): elle permet de lire l’octet envoyé à la tache

rtos_signal():reçoit le nom du sémaphore et incrémente cette sémaphore

Préparation de RTOS

déclaration d’une tache

La commande de pré processeur #use rtos() doit être indiqué au début du programme avant tout appel d’une fonction de l’RTOS

#use rtos (time=n, minor_cycle=n)

#task(rate=n, max=n, queue=n)void nom_tache();{…….}

Partie pratique

Programmation avec C

#include "C:\Users\user\Desktop\Nouveau dossier 7\main.h"#use rtos(timer=1,minor_cycle=10ms)#task(rate=20ms,max=10ms)void temp(){output_bit(pin_B0,0);}#task(rate=20ms,max=10ms)void temp2(){output_bit(pin_B0,1);}#task(rate=20ms,max=10ms)void temp3(){output_bit(pin_B1,1);}#task(rate=20ms,max=10ms)void temp4(){output_bit(pin_B1,0);}void main(){

TP1

setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE);

// TODO: USER CODE!! rtos_run();}

Simulation en ISIS

Partie pratique

Programmation avec C

#include "C:\Users\etudiant\Desktop\TP2TRéele\tp2.h"

#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)

#use rtos(timer=1,minor_cycle=10ms)#task(rate=20ms,max=4ms,queue=5)void task_A();#task(rate=20ms,max=4ms,queue=5)void task_B();void task_A(){rtos_msg_send (task_B,65);rtos_msg_send (task_B,66);rtos_msg_send (task_B,67);rtos_msg_send (task_B,68);rtos_msg_send (task_B,69);rtos_msg_send (task_B,70);rtos_msg_send (task_B,71);

}

TP2

void task_B(){int b,i;

//printf("dd");if(rtos_msg_poll()) {

b = rtos_msg_read();

printf("%c",b);}}

void main(){

setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE);

// TODO: USER CODE!!rtos_run();}

Simulation en ISIS