Autor Tema: Comprobar funcionamiento programa  (Leído 2185 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Comprobar funcionamiento programa
« en: 21 de Abril de 2014, 09:32:22 »
Hola a todos, alguien podría ayudarme a comprobar si el programa que he diseñado funciona bien?

Es decir yo recibiré por el puerto serie un dato del estilo "$ADQ,P01,CH0\r\n" y a partir de ahí hago una serie de cosas. Primero cojo el dato por el puerto serie luego lo copio a otra variable lo proceso y hago las demás cosas. Tampoco es comprobarlo todo pero si que las funciones que he diseñado funcionen bien. Les adjunto el código por si alguien puede ayudarme. Yo no puedo comprobarlo porque tengo unos problemas con mi laptop. En principio compila sin erroes solo seria comprobar que funcionan las cosas que he diseñado. Muchas gracias.  :)

Código: [Seleccionar]
#include <16f88.h>
#device ADC=10 //INDICO EL NÚMERO DE BITS DEL ADC

#include <stdio.h>
#include <string.h>


#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=PIN_B5, rcv=PIN_B2) //CONFIGURO PUERTO SERIE


//**VARIABLES PARA GESTIONAR LA TRAMA RECIBIDA Y LA TRAMA A ENVIAR POR PUERTO SERIE**//

long valor_adc=0; //Variable para lectura ADC

int P_W=0; //puntero escritura
int P_R=0; //puntero lectura

int i=0; //puntero bucle for
int j=0;

int inicio=0;
int final=0;

char string_valor_adc[6]={0};//Cadena de caracteres para guardar valor ADC en Carcteres
char trama_entrada[91]={0}; //String para guardar el dato de entrada por UART
char direccion_pic[4]={0};
char tipo_dato[4]={0};
char canal[4]={0};
char dato_salida[19]={0}; //String para guardar lo que envio por UART
char dato[13]={0};

short flag=0;
short flag_permiso=0;
short flag_tst=0;


void lectura(){

 for(P_R=0; P_R<91; P_R++){

  if(trama_entrada[P_R]==(char*)"$"){

  inicio=P_R;
 
  for(P_R=inicio; P_R<91; P_R++){
 
   if(trama_entrada[P_R]==(char*)"\r"){

   P_W=0;
   final=P_R;
   flag_permiso=1;
   break;

    }
 
   }
   break;
  }

 }

}


void escritura(){

for(i=inicio; i<=final; i++){
 
dato[j]=trama_entrada[i];
j++;

  }

i=0;
j=0;

}


void procesamiento(){

for(i=0; i<3; i++){

direccion_pic[i]=dato[i+5];

}


if((flag=strcmp(direccion_pic, (char*)"P01")==0)){

for(i=0; i<3; i++){

tipo_dato[i]=dato[i+1];

}

if((flag=strcmp(tipo_dato, (char*)"ADQ")==0)){

for(i=0; i<3; i++){

canal[i]=dato[i+9];

}


if((flag=strcmp(canal,(char*)"CH1"))==0){
      set_adc_channel(1); 
   }
 
   else if((flag=strcmp(canal,(char*)"CH2"))==0){
      set_adc_channel(2);
   }

   else if((flag=strcmp(canal,(char*)"CH3"))==0){
      set_adc_channel(3);
   }

   else if((flag=strcmp(canal,(char*)"CH4"))==0){
      set_adc_channel(4);
   }

  else if((flag=strcmp(canal,(char*)"CH5"))==0){
      set_adc_channel(5);
   }


delay_us(20);//retardo para leer ADC
valor_adc=read_adc();//lectura ADC

 }

else if((flag=strcmp(tipo_dato, (char*)"TST")==0)){

flag_tst=1;

}

}

}

void enviar(){

switch(flag_tst){

case 0:

    sprintf(string_valor_adc,",%04ld",valor_adc);

    strcat(dato_salida, (char*)"$");
    strcat(dato_salida, tipo_dato);
    strcat(dato_salida, (char*)",");
    strcat(dato_salida, direccion_pic); //Concateno DireccionPICrespuesta y el canal "CHX")
    strcat(dato_salida, (char*)",");
    strcat(dato_salida, canal);
    strcat(dato_salida, string_valor_adc);//concateno String anterior y Valor del ADC
    strcat(dato_salida, (char*)"\r");
    strcat(dato_salida, (char*)"\n");


    output_high(PIN_B0);

    printf("%s", dato_salida); //Envio un solo String con la direccion, canal CHX y el resutado del PIC por UART.

    output_high(PIN_B0);

    flag_permiso=0;

    break;

case 1:

    strcat(dato_salida, (char*)"$");
    strcat(dato_salida, tipo_dato);
    strcat(dato_salida, (char*)",");
    strcat(dato_salida, direccion_pic); //Concateno DireccionPICrespuesta y el canal "CHX")
    strcat(dato_salida, (char*)"\r");
    strcat(dato_salida, (char*)"\n");

    output_high(PIN_B0);

    printf("%s", dato_salida); //Envio un solo String con la direccion, canal CHX y el resutado del PIC por UART.

    output_high(PIN_B0);

    flag_permiso=0;
    flag_tst=0;

    break;

}

}


#INT_RDA

void INT_UART() {

trama_entrada[P_W]=getc();
P_W++;
 
}


void main(){

output_low(PIN_B0);

enable_interrupts(GLOBAL); //HABIlLITO TODAS LAS INTERRUPCIONES GLOBALES
enable_interrupts(INT_RDA); //HABILITO LA INTERRUPCIÓN UART
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5); //INDICO EL PIN A0/A1/A2/A3/A4/A5 COMO ENTRADA ANALÓGICA
setup_adc(ADC_CLOCK_INTERNAL); //CLOCK INTERNO PARA CONVERSIÓN ADC

 while(1){

 lectura();

if(flag_permiso==1){
 escritura();
 procesamiento();
 enviar();
  }
 }
}


Desconectado ze74hack

  • PIC10
  • *
  • Mensajes: 1
Re: Comprobar funcionamiento programa
« Respuesta #1 en: 24 de Junio de 2014, 17:33:11 »
no es clara tu descripcion podrías explicarte mejor? si


 

anything