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
Jul 17, 2015
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.
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();}
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();}