Projet

Général

Profil

« Précédent | Suivant » 

Révision 859

Ajouté par jeleroy il y a presque 4 ans

Fin TP SP4_c1

Voir les différences:

branch/leroy/sp4c12/SP4_c1/SP4_c1/SessionM32C_E8a_SYSTEM.hsf
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" ""
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" ""
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "0"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" ""
......
0
[WINDOW_POSITION_STATE_DATA_VD1]
"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_00000001_IO}SP4_c1SessionM32C_E8a_SYSTEM" "WINDOW" 59422 0 1 "0.16" 383 0 0 350 200 18 0 "32817|32826|32819|32820|32821" "0.0"
"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.09" 383 1600 -533 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0"
"{WK_00000001_IO}SP4_c1SessionM32C_E8a_SYSTEM" "WINDOW" 59422 0 1 "0.14" 383 0 0 350 200 18 0 "32817|32826|32819|32820|32821" "0.0"
"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 383 534 287 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0"
"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 263 534 287 350 200 18 0 "" "0.0"
"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0"
......
"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0"
branch/leroy/sp4c12/SP4_c1/SP4_c1/SP4_c1.c
void uart0_init(void);
void uart0_tx(char c);
char uart0_rx(void);
int rec_trame(char* buffer);
void reception_trame(char* trame);
int rec_trame(char* trame);
int hex2int(char* c);
void uart0_init(void){
//Configuration des ports en entr?e ou en sortie
......
u0mr = 0x05; //longueur des donn?es 8 bits
//Configuration du registre PS0
ps0 = 0x08; //r?ception des donn?es sur RX
ps0 |= 0x08; //r?ception des donn?es sur RX
u0c1 = 0x05; //activation transmission et r?ception
u0c0 = 0x11; //diviseur de fr?quence par 8 et CTS d?sactiv?
......
}
void reception_trame(char* trame){
int i=0;
do{
trame[i] = uart0_rx();
uart0_tx(trame[i]);
int rec_trame(char* trame){
int i = 1,trame_ok =0;
int check_sum=0;
char check_sum_trame[2];
char c;
while (uart0_rx() != '$'); //Tant qu'on ne re?oit pas le carat?re quii indique le d?but de la trame, on attend
while ((c = uart0_rx()) != '*'){//Reception des caracteres jusqu'? la fin de la trame
trame[i] = c;
check_sum ^= trame[i]; //Calcul du checksum de la trame re?ue
i++;
}while ((uart0_rx() != 0x0D)||(uart0_rx() != 0x0A));
}
rec_trame(trame);
check_sum_trame[1] = uart0_rx(); //Acquisition du premier caractere du checksum
check_sum_trame[0] = uart0_rx();//Acquisition du deuxieme caractere du checksum
if (check_sum == hex2int(check_sum_trame)){
trame_ok = 1;
}else{
trame_ok = 0;
}
uart0_tx(trame_ok);
return i;
}
int rec_trame(char* buffer){
int valeur_retour,i = 0;
int hex2int(char* c){
int i;
while ((buffer[i] != 0x0D)||(buffer[i] != 0x0A)){
valeur_retour++;
i++;
for(i=0;i<2;i++){
if(c[i] >= '0' && c[i] <= '9'){
c[i] = c[i] - 48;
}
if(c[i] >= 'A' && c[i] <= 'F'){ //
c[i] = c[i] - 'A' + 10;
}
}
return(c[0] + 16* c[1]);
}
void uart0_tx(char c){
while(ti_u0c1 != 1); //tant qu'il n'y a pas de donn?e dans le registre de transmission
......
void main(void)
{
uart0_init();
uart0_init();
while(1){
reception_trame(trame);
rec_trame(trame); //Reception de la trame
}
}
branch/leroy/sp4c12/SP4c2/SP4c2/SP4c2.c
#include "sfr32c87.h"
void uart0_init(void);
void uart0_tx(char c);
char uart0_rx(void);
int rec_trame(char* trame);
int hex2int(char* c);
void uart0_init(void){
//Configuration des ports en entr?e ou en sortie
......
}
int rec_trame(char* trame){
int i = 0;
int i = 1,trame_ok =0;
int check_sum=0;
char check_sum_trame[2];
char c;
while (uart0_rx() != '$');
while ((c = uart0_rx()) != '*'){
while (uart0_rx() != '$'); //Tant qu'on ne re?oit pas le carat?re quii indique le d?but de la trame, on attend
while ((c = uart0_rx()) != '*'){//Reception des caracteres jusqu'? la fin de la trame
trame[i] = c;
check_sum ^= trame[i]; //Calcul du checksum de la trame re?ue
i++;
}
check_sum_trame[1] = uart0_rx(); //Acquisition du premier caractere du checksum
check_sum_trame[0] = uart0_rx();//Acquisition du deuxieme caractere du checksum
if (check_sum == hex2int(check_sum_trame)){
trame_ok = 1;
}else{
trame_ok = 0;
}
uart0_tx(trame_ok);
return i;
}
int hex2int(char* c){
int i;
for(i=0;i<2;i++){
if(c[i] >= '0' && c[i] <= '9'){
c[i] = c[i] - 48;
}
if(c[i] >= 'A' && c[i] <= 'F'){ //
c[i] = c[i] - 'A' + 10;
}
}
return(c[0] + 16* c[1]);
}
void uart0_tx(char c){
while(ti_u0c1 != 1); //tant qu'il n'y a pas de donn?e dans le registre de transmission
u0tb = c;
......
uart0_init();
while(1){
uart0_tx(rec_trame(trame));
rec_trame(trame); //Reception de la trame
}
}

Formats disponibles : Unified diff