@@ -37,19 +37,26 | |||||
37 | #define PUERTO_SERVIDOR 5500 |
|
37 | #define PUERTO_SERVIDOR 5500 | |
38 | #define TAM_BUFFER 1024 |
|
38 | #define TAM_BUFFER 1024 | |
39 |
|
39 | |||
40 | #define maskc_out PC30+PC28+PC26+PC24+PC22+PC20 //MSB-UP-LSB MSB-DOWN-LSB //APUNTE |
|
40 | #define maskc_out_beam PC30+PC28+PC26+PC24+PC22+PC20 //MSB-UP-LSB MSB-DOWN-LSB //APUNTE | |
41 |
|
41 | #define maskc_out_cntl PC4+PC5+PC6 //MONITORING CONTROL | ||
42 | #define maskb_in PB16+PB18+PB20+PB30+PB24+PB22 //MSB-UP-LSB MSB-DOWN-LSB //VERIFICACION |
|
42 | ||
43 |
|
43 | #define mask_sel_canal PC4 //MONITORING CONTROL | ||
44 | #define bit_up_2 0x00010000 //Mascara de cada bit a revisar: bit_up_2 es MSB |
|
44 | #define mask_sel_atenuacion PC5 | |
45 | #define bit_up_1 0x00040000 |
|
45 | #define mask_sel_calibracion PC6 | |
46 | #define bit_up_0 0x00100000 |
|
46 | ||
47 | #define bit_dow_2 0x40000000 |
|
47 | #define maskb_in PB16+PB18+PB20+PB30+PB24+PB22 //MSB-UP-LSB MSB-DOWN-LSB //VERIFICACION | |
48 | #define bit_dow_1 0x01000000 |
|
48 | ||
49 | #define bit_dow_0 0x00400000 |
|
49 | #define maskc_in_adc PC0+PC1 | |
50 |
|
50 | |||
51 | #define MyID 11 |
|
51 | #define bit_up_2 0x00010000 //Mascara de cada bit a revisar: bit_up_2 es MSB | |
52 | #define MAXPENDING 5 /* Maximum outstanding connection requests */ |
|
52 | #define bit_up_1 0x00040000 | |
|
53 | #define bit_up_0 0x00100000 | |||
|
54 | #define bit_dow_2 0x40000000 | |||
|
55 | #define bit_dow_1 0x01000000 | |||
|
56 | #define bit_dow_0 0x00400000 | |||
|
57 | ||||
|
58 | #define MyID 11 | |||
|
59 | #define MAXPENDING 5 /* Maximum outstanding connection requests */ | |||
53 |
|
60 | |||
54 | //parameters for the name of the output file |
|
61 | //parameters for the name of the output file | |
55 | #define FPRE "AD" //prefix for the output file name |
|
62 | #define FPRE "AD" //prefix for the output file name | |
@@ -58,7 +65,7 | |||||
58 |
|
65 | |||
59 | //ADC parameters |
|
66 | //ADC parameters | |
60 | #define REP 1 //defines how many times the data acquisation loop is repeated |
|
67 | #define REP 1 //defines how many times the data acquisation loop is repeated | |
61 |
#define NSAMPLES 10 |
|
68 | #define NSAMPLES 10 //defines how many samples are taken in one data acqu- | |
62 | // isation loop |
|
69 | // isation loop | |
63 | #define CNVTIME 14.3 //defines how long it takes to get one sample. Value |
|
70 | #define CNVTIME 14.3 //defines how long it takes to get one sample. Value | |
64 | // is only needed for the output file, doesn't change |
|
71 | // is only needed for the output file, doesn't change | |
@@ -71,6 +78,9 | |||||
71 |
|
78 | |||
72 | AT91S_PIO *pioc; |
|
79 | AT91S_PIO *pioc; | |
73 | AT91S_PIO *piob; |
|
80 | AT91S_PIO *piob; | |
|
81 | AT91S_PIO *pio_adc; | |||
|
82 | AT91S_ADC *padc; | |||
|
83 | AT91S_ADC *padd; | |||
74 |
|
84 | |||
75 | struct control_module_parameters { |
|
85 | struct control_module_parameters { | |
76 | char ID[20]; |
|
86 | char ID[20]; | |
@@ -99,6 +109,7 | |||||
99 | int rxData(int, char*); |
|
109 | int rxData(int, char*); | |
100 | void txData(int, char*); |
|
110 | void txData(int, char*); | |
101 | void inicializa_gpio(); |
|
111 | void inicializa_gpio(); | |
|
112 | void inicializa_adc(); | |||
102 | void procesa_peticion(char *rx_buffer, char *tx_buffer); |
|
113 | void procesa_peticion(char *rx_buffer, char *tx_buffer); | |
103 | int cambia_apuntamiento(char *puntero_char); |
|
114 | int cambia_apuntamiento(char *puntero_char); | |
104 | int carga_experimento(char *nombre_archivo); |
|
115 | int carga_experimento(char *nombre_archivo); | |
@@ -108,8 +119,8 | |||||
108 | void intToStr( int number, char* str ); |
|
119 | void intToStr( int number, char* str ); | |
109 |
|
120 | |||
110 | //ABS monitoring |
|
121 | //ABS monitoring | |
111 | int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth); |
|
122 | //int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth); | |
112 |
|
123 | char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth); | ||
113 | AT91S_ADC * configADC1(void); |
|
124 | AT91S_ADC * configADC1(void); | |
114 | AT91S_ADC * configADC2(void); |
|
125 | AT91S_ADC * configADC2(void); | |
115 |
|
126 | |||
@@ -144,6 +155,7 | |||||
144 | servSocket = inicializa_ethernet(); |
|
155 | servSocket = inicializa_ethernet(); | |
145 | /* Inicializamos el puerto GPIO del sistema embebido GSBC-9260S */ |
|
156 | /* Inicializamos el puerto GPIO del sistema embebido GSBC-9260S */ | |
146 | inicializa_gpio(); |
|
157 | inicializa_gpio(); | |
|
158 | inicializa_adc(); | |||
147 |
|
159 | |||
148 | while(1){ |
|
160 | while(1){ | |
149 | // Recepción TCP de petición |
|
161 | // Recepción TCP de petición | |
@@ -239,14 +251,19 | |||||
239 | */ |
|
251 | */ | |
240 | void inicializa_gpio(){ |
|
252 | void inicializa_gpio(){ | |
241 |
|
253 | |||
242 | // Configuracion de los pines de APUNTE |
|
254 | int desplazamiento_beam[6]={30,28,26,24,22,20}; //Desplazamientos para los pines de apunte | |
|
255 | int desplazamiento_cntl[3]={4,5,6}; //Desplazamientos para los pines de control de monitoreo | |||
|
256 | unsigned long acumulado_ceros=0; | |||
|
257 | int i; | |||
|
258 | ||||
|
259 | // Configuracion de los pines de APUNTE y control de monitoreo | |||
243 | pioc = pio_map(PIOC_BASE); |
|
260 | pioc = pio_map(PIOC_BASE); | |
244 | pio_enable(pioc, maskc_out); |
|
261 | pio_enable(pioc, maskc_out_beam + maskc_out_cntl); | |
245 | pio_disable_irq(pioc, maskc_out); |
|
262 | pio_disable_irq(pioc, maskc_out_beam + maskc_out_cntl); | |
246 | pio_disable_multiple_driver(pioc, maskc_out); |
|
263 | pio_disable_multiple_driver(pioc, maskc_out_beam + maskc_out_cntl); | |
247 | pio_disable_pull_ups(pioc, maskc_out); |
|
264 | pio_disable_pull_ups(pioc, maskc_out_beam + maskc_out_cntl); | |
248 | pio_synchronous_data_output(pioc, maskc_out); |
|
265 | pio_synchronous_data_output(pioc, maskc_out_beam + maskc_out_cntl); | |
249 | pio_output_enable(pioc, maskc_out); |
|
266 | pio_output_enable(pioc, maskc_out_beam + maskc_out_cntl); | |
250 |
|
267 | |||
251 | // Configuracion de los pines de VERIFICACION |
|
268 | // Configuracion de los pines de VERIFICACION | |
252 | piob = pio_map(PIOB_BASE); |
|
269 | piob = pio_map(PIOB_BASE); | |
@@ -255,6 +272,34 | |||||
255 | pio_disable_multiple_driver(piob, maskb_in); |
|
272 | pio_disable_multiple_driver(piob, maskb_in); | |
256 | pio_disable_pull_ups(piob, maskb_in); |
|
273 | pio_disable_pull_ups(piob, maskb_in); | |
257 | pio_input_enable(piob, maskb_in); |
|
274 | pio_input_enable(piob, maskb_in); | |
|
275 | ||||
|
276 | //Pînes de ADC | |||
|
277 | pio_adc = pio_map(PIOC_BASE); | |||
|
278 | pin_adc_enable(pio_adc,maskc_in_adc); //Habilitamos PC0 para usar con ADC0 y 1 | |||
|
279 | pio_disable_irq(pio_adc, maskc_in_adc); | |||
|
280 | pio_disable_multiple_driver(pio_adc, maskc_in_adc); | |||
|
281 | pio_disable_pull_ups(pio_adc, maskc_in_adc); | |||
|
282 | pio_input_enable(pio_adc, maskc_in_adc); | |||
|
283 | ||||
|
284 | //Inicializando a cero los pines de apunte | |||
|
285 | for(i=0;i<6;i++) | |||
|
286 | acumulado_ceros= acumulado_ceros + (1 << desplazamiento_beam[i]); | |||
|
287 | pio_out(pioc, maskc_out_beam, acumulado_ceros, 0); | |||
|
288 | ||||
|
289 | //Inicializando a cero los pines de control de monitoreo: atenuacion, calibracion y canal | |||
|
290 | for(i=0;i<3;i++) | |||
|
291 | acumulado_ceros= acumulado_ceros + (1 << desplazamiento_cntl[i]); | |||
|
292 | pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); | |||
|
293 | ||||
|
294 | } | |||
|
295 | ||||
|
296 | void inicializa_adc(){ | |||
|
297 | ||||
|
298 | if (configCLK() == 1) | |||
|
299 | printf("clock ADC enable.\n"); | |||
|
300 | //configure ADC Settings | |||
|
301 | padc=configADC1(); | |||
|
302 | padd=configADC2(); | |||
258 | } |
|
303 | } | |
259 |
|
304 | |||
260 |
|
305 | |||
@@ -316,7 +361,6 | |||||
316 | *(crc + 1) = '\0'; |
|
361 | *(crc + 1) = '\0'; | |
317 | } |
|
362 | } | |
318 |
|
363 | |||
319 |
|
||||
320 | /* |
|
364 | /* | |
321 | * Esta funcion procesa el mensaje de peticion y genera respuesta |
|
365 | * Esta funcion procesa el mensaje de peticion y genera respuesta | |
322 | */ |
|
366 | */ | |
@@ -351,8 +395,8 | |||||
351 | printf("%s\n",tx_data); |
|
395 | printf("%s\n",tx_data); | |
352 | } |
|
396 | } | |
353 | else if(strcmp(cmd,"ANPH") == 0){ |
|
397 | else if(strcmp(cmd,"ANPH") == 0){ | |
354 | ABS_monitoreo(1, 1, 50, 10); |
|
398 | tx_data = ABS_monitoreo(1, 1, 50, 10); | |
355 | tx_data = "Not implemented\n"; |
|
399 | // tx_data = "Not implemented\n"; | |
356 | printf("%s\n",tx_data); |
|
400 | printf("%s\n",tx_data); | |
357 | } |
|
401 | } | |
358 | else if(strcmp(cmd,"NTST") == 0){ |
|
402 | else if(strcmp(cmd,"NTST") == 0){ | |
@@ -491,8 +535,8 | |||||
491 | acumulado_unos= acumulado_unos + (1 << desplazamiento[offset]); |
|
535 | acumulado_unos= acumulado_unos + (1 << desplazamiento[offset]); | |
492 | } |
|
536 | } | |
493 | } |
|
537 | } | |
494 | pio_out(pioc, maskc_out, acumulado_unos, 1); |
|
538 | pio_out(pioc, maskc_out_beam, acumulado_unos, 1); | |
495 | pio_out(pioc, maskc_out, acumulado_ceros, 0); |
|
539 | pio_out(pioc, maskc_out_beam, acumulado_ceros, 0); | |
496 |
|
540 | |||
497 | return 1; |
|
541 | return 1; | |
498 |
|
542 | |||
@@ -617,16 +661,19 | |||||
617 | //ABS_monitoreo es la funci�n principal del proyecto ABS_Monitoreo. |
|
661 | //ABS_monitoreo es la funci�n principal del proyecto ABS_Monitoreo. | |
618 | //Esta funci�n es la que se debe agregar en otros c�digos. |
|
662 | //Esta funci�n es la que se debe agregar en otros c�digos. | |
619 | //***************************************************************** |
|
663 | //***************************************************************** | |
620 |
|
|
664 | char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth){ | |
621 |
|
665 | |||
622 | //local variables |
|
666 | //local variables | |
623 | AT91S_PIO *pioc; |
|
667 | /* AT91S_PIO *pioc; | |
624 | pioc = pio_map(PIOC_BASE); |
|
668 | pioc = pio_map(PIOC_BASE); | |
625 | unsigned int mask_sel_canal =PC4; //Aqu� se indican los pines que se desean usar como salidas. Las constantes PCx est�n defiidas en el header at91gpio.h |
|
669 | unsigned int mask_sel_canal =PC4; //Aqu� se indican los pines que se desean usar como salidas. Las constantes PCx est�n defiidas en el header at91gpio.h | |
626 | unsigned int mask_sel_atenuacion =PC5; |
|
670 | unsigned int mask_sel_atenuacion =PC5; | |
627 |
|
|
671 | unsigned int mask_sel_calibracion =PC6;*/ | |
628 | AT91S_ADC *padc; |
|
672 | ||
629 | AT91S_ADC *padd; |
|
673 | unsigned long acumulado_ceros=0; | |
|
674 | unsigned long acumulado_unos=0; | |||
|
675 | /* AT91S_ADC *padc; | |||
|
676 | AT91S_ADC *padd;*/ | |||
630 | FILE *fp; |
|
677 | FILE *fp; | |
631 | long int results1[NSAMPLES], results2[NSAMPLES], results3[NSAMPLES], results4[NSAMPLES]; |
|
678 | long int results1[NSAMPLES], results2[NSAMPLES], results3[NSAMPLES], results4[NSAMPLES]; | |
632 | unsigned int i=0; |
|
679 | unsigned int i=0; | |
@@ -636,12 +683,14 | |||||
636 | FILE *archivo; |
|
683 | FILE *archivo; | |
637 | float phase1; |
|
684 | float phase1; | |
638 | float phase2; |
|
685 | float phase2; | |
|
686 | char page0[30]; | |||
|
687 | char page1[20]; | |||
639 | //system("./map_clock"); |
|
688 | //system("./map_clock"); | |
640 |
|
689 | /* | ||
641 | if (configCLK() == 1) |
|
690 | if (configCLK() == 1) | |
642 | printf("clock ADC enable.\n"); |
|
691 | printf("clock ADC enable.\n"); | |
643 |
|
692 | */ | ||
644 |
|
693 | /* | ||
645 | //configurar tres pines como salida usando als m�scaras mask_sel_canal, mask_sel_atenuacion y mask_sel_calibracion. En este caso corresponden a los pines pc4, pc5 y pc6. |
|
694 | //configurar tres pines como salida usando als m�scaras mask_sel_canal, mask_sel_atenuacion y mask_sel_calibracion. En este caso corresponden a los pines pc4, pc5 y pc6. | |
646 | pio_enable(pioc, mask_sel_canal); |
|
695 | pio_enable(pioc, mask_sel_canal); | |
647 | pio_enable(pioc, mask_sel_atenuacion); |
|
696 | pio_enable(pioc, mask_sel_atenuacion); | |
@@ -649,20 +698,29 | |||||
649 | pio_output_enable(pioc, mask_sel_canal); //configurar pc4 como salida |
|
698 | pio_output_enable(pioc, mask_sel_canal); //configurar pc4 como salida | |
650 | pio_output_enable(pioc, mask_sel_atenuacion); //configurar pc5 como salida |
|
699 | pio_output_enable(pioc, mask_sel_atenuacion); //configurar pc5 como salida | |
651 | pio_output_enable(pioc, mask_sel_calibracion); //configurar pc6 como salida |
|
700 | pio_output_enable(pioc, mask_sel_calibracion); //configurar pc6 como salida | |
652 |
|
701 | */ | ||
653 |
|
702 | |||
654 | //Se modifican las salidas correspondientes a la selecci�n del atenuador y calibraci�n, de acuerdo a los par�metros ingresados en la funci�n ABS_monitoreo. |
|
703 | //Se modifican las salidas correspondientes a la selecci�n del atenuador y calibraci�n, de acuerdo a los par�metros ingresados en la funci�n ABS_monitoreo. | |
655 | if ( sel_atenuador == 1) |
|
704 | /*if ( sel_atenuador == 1) | |
656 | pio_out(pioc, mask_sel_atenuacion, sel_atenuador,1); |
|
705 | pio_out(pioc, mask_sel_atenuacion, sel_atenuador,1); | |
657 | else |
|
706 | else | |
658 | pio_out(pioc, mask_sel_atenuacion, sel_atenuador,0); |
|
707 | pio_out(pioc, mask_sel_atenuacion, sel_atenuador,0); | |
659 | if ( sel_calibracion == 1) |
|
708 | if ( sel_calibracion == 1) | |
660 | pio_out(pioc, mask_sel_calibracion, sel_calibracion,1); |
|
709 | pio_out(pioc, mask_sel_calibracion, sel_calibracion,1); | |
661 | else |
|
710 | else | |
662 |
|
|
711 | pio_out(pioc, mask_sel_calibracion, sel_calibracion,0);*/ | |
663 |
|
712 | |||
664 |
|
713 | if ( sel_atenuador == 1) | ||
665 | strcpy (fname, "/mnt/sd/archivos/absmonitoreo.txt"); //Direcci�n y nombre del archivo donde se desea guardar los datos. |
|
714 | acumulado_unos = acumulado_unos + (1 << 5); | |
|
715 | else | |||
|
716 | acumulado_ceros = acumulado_ceros + (1 << 5); | |||
|
717 | if ( sel_calibracion == 1) | |||
|
718 | acumulado_unos = acumulado_unos + (1 << 6); | |||
|
719 | else | |||
|
720 | acumulado_ceros = acumulado_ceros + (1 << 6); | |||
|
721 | ||||
|
722 | ||||
|
723 | strcpy (fname, "/mnt/sd/absmonitoreo.txt"); //Direcci�n y nombre del archivo donde se desea guardar los datos. | |||
666 |
|
724 | |||
667 | if (fExists(fname)==0){ //si el archivo no existe, crea uno y le asigna el titulo |
|
725 | if (fExists(fname)==0){ //si el archivo no existe, crea uno y le asigna el titulo | |
668 | archivo = fopen(fname,"a+"); |
|
726 | archivo = fopen(fname,"a+"); | |
@@ -671,82 +729,95 | |||||
671 | fclose(archivo); |
|
729 | fclose(archivo); | |
672 | } |
|
730 | } | |
673 |
|
731 | |||
674 |
|
732 | /* | ||
675 | //configure ADC Settings |
|
733 | //configure ADC Settings | |
676 | padc=configADC1(); |
|
734 | padc=configADC1(); | |
677 | padd=configADC2(); |
|
735 | padd=configADC2(); | |
678 |
|
736 | */ | ||
679 | while (1){ |
|
737 | //while (1){ | |
680 |
|
738 | |||
681 |
|
|
739 | ENABLE_CHANNEL(padc, ADC_CH0+ADC_CH1); | |
682 |
|
|
740 | printf("\nAdquiriendo datos...\n"); //Indica en el terminal que se est�n adquiriendo datos (muestreando la se�al). | |
683 |
|
741 | |||
684 |
|
742 | |||
685 |
|
|
743 | now = time(0); //Get current Time for File Name | |
686 |
|
744 | |||
687 |
|
745 | //Se pone la salida de selecci�n de canal para seleccionar el canal 1 del detector de fase | ||
688 | //Se pone la salida de selecci�n de canal para seleccionar el canal 1 del detector de fase |
|
746 | acumulado_ceros = acumulado_ceros + (1 << 4); | |
689 |
|
|
747 | pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); | |
690 |
|
|
748 | pio_out(pioc, maskc_out_cntl, acumulado_unos, 1); | |
691 |
|
749 | sleep(1); | ||
692 |
|
750 | |||
693 |
|
|
751 | //Se toman muestras para el canal 1 del detector de fase | |
694 |
|
|
752 | //while(1){ | |
695 | for(i=0; i < NSAMPLES; i++){ |
|
753 | for(i=0; i < NSAMPLES; i++){ | |
696 |
|
754 | |||
697 | ADC_INIT(padc); |
|
755 | ADC_INIT(padc); | |
698 | results1[i] = GET_ADC0(padc); |
|
756 | results1[i] = GET_ADC0(padc); | |
699 | results2[i] = GET_ADC1(padd); |
|
757 | results2[i] = GET_ADC1(padd); | |
700 | } |
|
758 | } | |
701 |
|
759 | /* | ||
702 |
|
||||
703 | if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso. |
|
760 | if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso. | |
704 | break; |
|
761 | break; | |
705 | } |
|
762 | } | |
706 | } |
|
763 | */ | |
707 |
|
764 | //} | ||
708 |
|
765 | |||
709 | //Se pone la salida de selecci�n de canal para seleccionar el canal 2 del detector de fase |
|
766 | ||
710 | pio_out(pioc, mask_sel_canal, 1,1); |
|
767 | //Se pone la salida de selecci�n de canal para seleccionar el canal 2 del detector de fase | |
711 |
|
768 | acumulado_ceros = acumulado_ceros - (1 << 4); | ||
712 |
|
769 | acumulado_unos = acumulado_unos + (1 << 4); | ||
713 |
|
770 | pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); | ||
714 | //Setoman muestras para el canal 2 del detector de fase |
|
771 | pio_out(pioc, maskc_out_cntl, acumulado_unos, 1); | |
715 | while(1){ |
|
772 | sleep(1); | |
|
773 | ||||
|
774 | ||||
|
775 | //Setoman muestras para el canal 2 del detector de fase | |||
|
776 | // while(1){ | |||
716 | for(i=0; i < NSAMPLES; i++){ |
|
777 | for(i=0; i < NSAMPLES; i++){ | |
717 |
|
778 | |||
718 | ADC_INIT(padc); |
|
779 | ADC_INIT(padc); | |
719 | results3[i] = GET_ADC0(padc); |
|
780 | results3[i] = GET_ADC0(padc); | |
720 | results4[i] = GET_ADC1(padd); |
|
781 | results4[i] = GET_ADC1(padd); | |
721 | } |
|
782 | } | |
722 |
|
783 | /* | ||
723 | if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso. |
|
784 | if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso. | |
724 | break; |
|
785 | break; | |
725 | } |
|
786 | } | |
726 | } |
|
787 | */ | |
727 |
|
788 | // } | ||
728 |
|
789 | |||
729 | //Una vez que se ha encontrado un pulso en cada canal, se calcula la fase de ambos. |
|
790 | ||
730 |
|
791 | //Una vez que se ha encontrado un pulso en cada canal, se calcula la fase de ambos. | ||
731 | phase1 = getPhase(results1, results2); //Calcular la fase del canal 1 del detector de fase. |
|
792 | ||
732 |
|
|
793 | phase1 = getPhase(results1, results2); //Calcular la fase del canal 1 del detector de fase. | |
733 | //create Output File |
|
794 | phase2 = getPhase(results3, results4); //Calcular la fase del canal 2 del detector de fase. | |
734 |
|
795 | //create Output File | ||
735 | strcpy (fname, "/mnt/sd/archivos/absmonitoreo.txt"); |
|
796 | ||
736 | printf("\nTerminada la prueba # %d \n", j++); |
|
797 | strcpy (fname, "/mnt/sd/absmonitoreo.txt"); | |
737 | fp=create_Output(fname, now); //Coloca la fecha y la hora en el archivo de texto |
|
798 | printf("\nTerminada la prueba # %d \n", j++); | |
738 | printf("mediana ch1 = %1.2f\n", phase1); //muestra resultado en terminal |
|
799 | fp=create_Output(fname, now); //Coloca la fecha y la hora en el archivo de texto | |
739 |
|
|
800 | printf("mediana ch1 = %1.2f\n", phase1); //muestra resultado en terminal | |
740 | writeOutput(phase1, fp); //graba el resultado en el archivo de texto |
|
801 | printf("mediana ch2 = %1.2f\n", phase2); //muestra resultado en terminal | |
741 |
|
|
802 | writeOutput(phase1, fp); //graba el resultado en el archivo de texto | |
742 | fprintf(fp, "\n"); //Pasa a la siguiente l�nea del archivo de texto |
|
803 | writeOutput(phase2, fp); //graba el resultado en el archivo de texto | |
743 | fclose(fp); |
|
804 | fprintf(fp, "\n"); //Pasa a la siguiente l�nea del archivo de texto | |
744 | printf("Resultado guardado en %s \n", fname); |
|
805 | fclose(fp); | |
745 |
|
806 | printf("Resultado guardado en %s \n", fname); | ||
746 | sleep(1); |
|
807 | ||
747 |
|
808 | sleep(1); | ||
748 | } |
|
809 | ||
749 | return 0; |
|
810 | strcpy(page0,parameters.ID); | |
|
811 | strcat(page0,"\n-------\n"); | |||
|
812 | ||||
|
813 | sprintf(page1,"UP:%1.2f DW:%1.2f\n",phase1, phase2); | |||
|
814 | strcat(page0,page1); | |||
|
815 | char *all_pages = malloc(strlen(page0)+1); | |||
|
816 | strcpy(all_pages, page0); | |||
|
817 | return all_pages; | |||
|
818 | ||||
|
819 | // } | |||
|
820 | // return 0; | |||
750 | } |
|
821 | } | |
751 | /*============================================================================= |
|
822 | /*============================================================================= | |
752 | Function definitions |
|
823 | Function definitions | |
@@ -755,6 +826,7 | |||||
755 | // Configures ADC registers in order to get a sample every 10us |
|
826 | // Configures ADC registers in order to get a sample every 10us | |
756 | AT91S_ADC * configADC1(void){ |
|
827 | AT91S_ADC * configADC1(void){ | |
757 | //Variables a usar: |
|
828 | //Variables a usar: | |
|
829 | /* | |||
758 | unsigned int maskc_adc =PC0; //Usamos ADC0 y ADC1 |
|
830 | unsigned int maskc_adc =PC0; //Usamos ADC0 y ADC1 | |
759 |
|
|
831 | ||
760 |
|
|
832 | //configuro pin: | |
@@ -765,10 +837,10 | |||||
765 | pio_disable_multiple_driver(pioc, maskc_adc); |
|
837 | pio_disable_multiple_driver(pioc, maskc_adc); | |
766 | pio_disable_pull_ups(pioc, maskc_adc); |
|
838 | pio_disable_pull_ups(pioc, maskc_adc); | |
767 | pio_input_enable(pioc, maskc_adc); |
|
839 | pio_input_enable(pioc, maskc_adc); | |
768 |
|
840 | */ | ||
769 |
|
841 | |||
770 | //Configuro el ADC: |
|
842 | //Configuro el ADC: | |
771 | AT91S_ADC *padc; |
|
843 | //AT91S_ADC *padc; | |
772 |
|
844 | |||
773 | padc = adc_map1(ADC_BASE); |
|
845 | padc = adc_map1(ADC_BASE); | |
774 |
|
846 | |||
@@ -783,26 +855,25 | |||||
783 | //ADC_RESET(padc); |
|
855 | //ADC_RESET(padc); | |
784 | CONFIG_ADC(padc,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM); |
|
856 | CONFIG_ADC(padc,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM); | |
785 | ENABLE_CHANNEL(padc,ADC_CH0); //habilito canal 0 |
|
857 | ENABLE_CHANNEL(padc,ADC_CH0); //habilito canal 0 | |
786 |
|
||||
787 |
|
||||
788 | return padc; |
|
858 | return padc; | |
789 | } |
|
859 | } | |
790 |
|
860 | |||
791 | AT91S_ADC * configADC2(void){ |
|
861 | AT91S_ADC * configADC2(void){ | |
792 | //Variables a usar: |
|
862 | //Variables a usar: | |
|
863 | /* | |||
793 | unsigned int maskc_adc =PC1; //Usamos ADC0 y ADC1 |
|
864 | unsigned int maskc_adc =PC1; //Usamos ADC0 y ADC1 | |
794 |
|
|
865 | ||
795 |
|
|
866 | //configuro pin: | |
796 | AT91S_PIO *piod; |
|
867 | AT91S_PIO *piod; | |
797 | piod = pio_map(PIOC_BASE); |
|
868 | piod = pio_map(PIOC_BASE); | |
798 |
pin_adc_enable(piod,maskc_adc); //Habilitamos PC |
|
869 | pin_adc_enable(piod,maskc_adc); //Habilitamos PC1 para usar con ADC0 y 1 | |
799 | pio_disable_irq(piod, maskc_adc); |
|
870 | pio_disable_irq(piod, maskc_adc); | |
800 | pio_disable_multiple_driver(piod, maskc_adc); |
|
871 | pio_disable_multiple_driver(piod, maskc_adc); | |
801 | pio_disable_pull_ups(piod, maskc_adc); |
|
872 | pio_disable_pull_ups(piod, maskc_adc); | |
802 | pio_input_enable(piod, maskc_adc); |
|
873 | pio_input_enable(piod, maskc_adc); | |
803 |
|
874 | */ | ||
804 | //Configuro el ADC: |
|
875 | //Configuro el ADC: | |
805 | AT91S_ADC *padd; |
|
876 | //AT91S_ADC *padd; | |
806 |
|
877 | |||
807 | padd = adc_map1(ADC_BASE); |
|
878 | padd = adc_map1(ADC_BASE); | |
808 |
|
879 | |||
@@ -837,7 +908,7 | |||||
837 |
|
908 | |||
838 | //Creates the file name out of the #define parameters |
|
909 | //Creates the file name out of the #define parameters | |
839 |
|
910 | |||
840 |
strcpy (fname, "/mnt/sd/a |
|
911 | strcpy (fname, "/mnt/sd/absmonitoreo.txt"); | |
841 | file = fopen(fname,"a+"); |
|
912 | file = fopen(fname,"a+"); | |
842 | fprintf(file,"%s", timestamp); |
|
913 | fprintf(file,"%s", timestamp); | |
843 | //printf("\nTerminada la prueba # %d. Guardando resultado en %s\n",r, fname); |
|
914 | //printf("\nTerminada la prueba # %d. Guardando resultado en %s\n",r, fname); |
General Comments 0
You need to be logged in to leave comments.
Login now