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
S o m m a i r e
I. Systèmes temps réel
Définition
Taches
Exemples des systèmes temps réels
II. Création des taches dans un
environnement pic-c
Partie théorique
Partie pratique
Les RTOS
Préparation de RTOS
déclaration d’une tache
Programmation avec C
Simulation en ISIS
TP1
TP2
Programmation avec C
Simulation 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 aussi
Du 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:UsersuserDesktopNouveau
dossier 7main.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:UsersetudiantDesktopTP2TRéeletp2.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

Temps reel

  • 1.
    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
  • 2.
    S o mm a i r e I. Systèmes temps réel Définition Taches Exemples des systèmes temps réels II. Création des taches dans un environnement pic-c Partie théorique Partie pratique Les RTOS Préparation de RTOS déclaration d’une tache Programmation avec C Simulation en ISIS TP1 TP2 Programmation avec C Simulation en ISIS
  • 3.
    I. Systèmes tempsré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 aussi Du temps auquel les résultats sont produites. Définition
  • 4.
    Taches Une tâche estgé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.
  • 5.
  • 6.
    Création des tachesdans 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
  • 7.
    Préparation de RTOS déclarationd’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(); { ……. }
  • 8.
    Partie pratique Programmation avecC #include "C:UsersuserDesktopNouveau dossier 7main.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
  • 9.
  • 10.
  • 11.
    Partie pratique Programmation avecC #include "C:UsersetudiantDesktopTP2TRéeletp2.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
  • 12.
    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(); }
  • 13.