##// END OF EJS Templates
Get file function implemented.
imanay -
r215:216
parent child
Show More
@@ -1,1140 +1,1172
1 /* No newline at end of file
1 /*
2 * Servidor.c No newline at end of file
2 * Servidor.c
3 * No newline at end of file
3 *
4 * Created on: Nov 3, 2009 No newline at end of file
4 * Created on: Nov 3, 2009
5 * Author: Jose Francisco Quenta No newline at end of file
5 * Author: Jose Francisco Quenta
6 * No newline at end of file
6 *
7 * Se implementa: No newline at end of file
7 * Se implementa:
8 * -Carga en memoria los apuntes contenidos en un archivo de experimentos: apunte0 -> GPIO No newline at end of file
8 * -Carga en memoria los apuntes contenidos en un archivo de experimentos: apunte0 -> GPIO
9 * -Cambio de apunte. No newline at end of file
9 * -Cambio de apunte.
10 * -Lectura del estado actual del apunte y grabado del mismo en un archivo No newline at end of file
10 * -Lectura del estado actual del apunte y grabado del mismo en un archivo
11 * No newline at end of file
11 *
12 * Modified by Iván Manay since Nov 2012 No newline at end of file
12 * Modified by Iván Manay since Nov 2012
13 * -From UDP to TCP. No newline at end of file
13 * -From UDP to TCP.
14 * -Use of a frame for TCP communications with the central control module. No newline at end of file
14 * -Use of a frame for TCP communications with the central control module.
15 */ No newline at end of file
15 */
16 No newline at end of file
16
17 #include <stdio.h> No newline at end of file
17 #include <stdio.h>
18 #include <stdlib.h> No newline at end of file
18 #include <stdlib.h>
19 #include <string.h> No newline at end of file
19 #include <string.h>
20 #include <unistd.h> No newline at end of file
20 #include <unistd.h>
21 #include <errno.h> No newline at end of file
21 #include <errno.h>
22 No newline at end of file
22
23 #include <sys/types.h> No newline at end of file
23 #include <sys/types.h>
24 #include <sys/socket.h> No newline at end of file
24 #include <sys/socket.h>
25 #include <netinet/in.h> No newline at end of file
25 #include <netinet/in.h>
26 #include <arpa/inet.h> No newline at end of file
26 #include <arpa/inet.h>
27 #include <netdb.h> No newline at end of file
27 #include <netdb.h>
28 #include <time.h> No newline at end of file
28 #include <time.h>
29 #include <math.h> No newline at end of file
29 #include <math.h>
30 No newline at end of file
30
31 #include "./Librerias/at91gpio.h" No newline at end of file
31 #include "./Librerias/at91gpio.h"
32 //#include "./Librerias/Mensajes.h" No newline at end of file
32 //#include "./Librerias/Mensajes.h"
33 #include "./Librerias/at91adc.h" No newline at end of file
33 #include "./Librerias/at91adc.h"
34 //clock No newline at end of file
34 //clock
35 #include "./Librerias/at91sysclock.h" No newline at end of file
35 #include "./Librerias/at91sysclock.h"
36 No newline at end of file
36
37 #define PUERTO_SERVIDOR 5500 No newline at end of file
37 #define PUERTO_SERVIDOR 5500
38 #define TAM_BUFFER 1024 No newline at end of file
38 #define TAM_BUFFER 1024
39 No newline at end of file
39
40 #define maskc_out_beam PC30+PC28+PC26+PC24+PC22+PC20 //MSB-UP-LSB MSB-DOWN-LSB //APUNTE No newline at end of file
40 #define maskc_out_beam PC30+PC28+PC26+PC24+PC22+PC20 //MSB-UP-LSB MSB-DOWN-LSB //APUNTE
41 #define maskc_out_cntl PC4+PC5+PC6 //MONITORING CONTROL No newline at end of file
41 #define maskc_out_cntl PC4+PC5+PC6 //MONITORING CONTROL
42 No newline at end of file
42
43 #define mask_sel_canal PC4 //MONITORING CONTROL No newline at end of file
43 #define mask_sel_canal PC4 //MONITORING CONTROL
44 #define mask_sel_atenuacion PC5 No newline at end of file
44 #define mask_sel_atenuacion PC5
45 #define mask_sel_calibracion PC6 No newline at end of file
45 #define mask_sel_calibracion PC6
46 No newline at end of file
46
47 #define maskb_in PB16+PB18+PB20+PB30+PB24+PB22 //MSB-UP-LSB MSB-DOWN-LSB //VERIFICACION No newline at end of file
47 #define maskb_in PB16+PB18+PB20+PB30+PB24+PB22 //MSB-UP-LSB MSB-DOWN-LSB //VERIFICACION
48 No newline at end of file
48
49 #define maskc_in_adc PC0+PC1 No newline at end of file
49 #define maskc_in_adc PC0+PC1
50 No newline at end of file
50
51 #define bit_up_2 0x00010000 //Mascara de cada bit a revisar: bit_up_2 es MSB No newline at end of file
51 #define bit_up_2 0x00010000 //Mascara de cada bit a revisar: bit_up_2 es MSB
52 #define bit_up_1 0x00040000 No newline at end of file
52 #define bit_up_1 0x00040000
53 #define bit_up_0 0x00100000 No newline at end of file
53 #define bit_up_0 0x00100000
54 #define bit_dow_2 0x40000000 No newline at end of file
54 #define bit_dow_2 0x40000000
55 #define bit_dow_1 0x01000000 No newline at end of file
55 #define bit_dow_1 0x01000000
56 #define bit_dow_0 0x00400000 No newline at end of file
56 #define bit_dow_0 0x00400000
57 No newline at end of file
57
58 #define MyID 11 No newline at end of file
58 #define MyID 11
59 #define MAXPENDING 5 /* Maximum outstanding connection requests */ No newline at end of file
59 #define MAXPENDING 5 /* Maximum outstanding connection requests */
60 No newline at end of file
60
61 //parameters for the name of the output file No newline at end of file
61 //parameters for the name of the output file
62 #define FPRE "AD" //prefix for the output file name No newline at end of file
62 #define FPRE "AD" //prefix for the output file name
63 #define FEXT ".out" //file extension for the output file No newline at end of file
63 #define FEXT ".out" //file extension for the output file
64 #define FNAMELEN 40 No newline at end of file
64 #define FNAMELEN 40
65 No newline at end of file
65
66 //ADC parameters No newline at end of file
66 //ADC parameters
67 #define REP 1 //defines how many times the data acquisation loop is repeated No newline at end of file
67 #define REP 1 //defines how many times the data acquisation loop is repeated
68 #define NSAMPLES 10 //defines how many samples are taken in one data acqu- No newline at end of file
68 #define NSAMPLES 10 //defines how many samples are taken in one data acqu-
69 // isation loop No newline at end of file
69 // isation loop
70 No newline at end of file
70
71 #define NLOOPS 200 // Number of loops for the transmisor checking No newline at end of file
71 #define NLOOPS 200 // Number of loops for the transmisor checking
72 #define CNVTIME 14.3 //defines how long it takes to get one sample. Value No newline at end of file
72 #define CNVTIME 14.3 //defines how long it takes to get one sample. Value
73 // is only needed for the output file, doesn't change No newline at end of file
73 // is only needed for the output file, doesn't change
74 // any ADC configurations No newline at end of file
74 // any ADC configurations
75 #define UREF 3.3 //Reference Voltage of ADC (max. ADC Voltage) No newline at end of file
75 #define UREF 3.3 //Reference Voltage of ADC (max. ADC Voltage)
76 #define ADCRES 1023 //Resolution of ADC (10bit=1023) No newline at end of file
76 #define ADCRES 1023 //Resolution of ADC (10bit=1023)
77 No newline at end of file
77
78 No newline at end of file
78
79 char *buff_experimento= NULL; No newline at end of file
79 char *buff_experimento= NULL;
80 No newline at end of file
80
81 AT91S_PIO *pioc; No newline at end of file
81 AT91S_PIO *pioc;
82 AT91S_PIO *piob; No newline at end of file
82 AT91S_PIO *piob;
83 AT91S_PIO *pio_adc; No newline at end of file
83 AT91S_PIO *pio_adc;
84 AT91S_ADC *padc; No newline at end of file
84 AT91S_ADC *padc;
85 AT91S_ADC *padd; No newline at end of file
85 AT91S_ADC *padd;
86 No newline at end of file
86
87 struct control_module_parameters { No newline at end of file
87 struct control_module_parameters {
88 char ID[20]; No newline at end of file
88 char ID[20];
89 char param2[20]; No newline at end of file
89 char param2[20];
90 char param3[20]; No newline at end of file
90 char param3[20];
91 char param4[20]; No newline at end of file
91 char param4[20];
92 }; No newline at end of file
92 };
93 No newline at end of file
93
94 typedef struct control_module_parameters cmp; No newline at end of file
94 typedef struct control_module_parameters cmp;
95 No newline at end of file
95
96 char *header = NULL; No newline at end of file
96 char *header = NULL;
97 char *TypeOfInstrument = NULL; No newline at end of file
97 char *TypeOfInstrument = NULL;
98 char *iDSource = NULL; No newline at end of file
98 char *iDSource = NULL;
99 char *iDDestino = NULL; No newline at end of file
99 char *iDDestino = NULL;
100 char *rx_len = NULL; No newline at end of file
100 char *rx_len = NULL;
101 char *cmd = NULL; No newline at end of file
101 char *cmd = NULL;
102 char *rx_data = NULL; No newline at end of file
102 char *rx_data = NULL;
103 char *crc = NULL; No newline at end of file
103 char *crc = NULL;
104 No newline at end of file
104
105 cmp parameters; No newline at end of file
105 cmp parameters;
106 /* No newline at end of file
106 /*
107 * Zona de declaracion de cabeceras. No newline at end of file
107 * Zona de declaracion de cabeceras.
108 */ No newline at end of file
108 */
109 cmp inicializa_modulo(cmp p); No newline at end of file
109 cmp inicializa_modulo(cmp p);
110 int inicializa_ethernet(); No newline at end of file
110 int inicializa_ethernet();
111 int rxData(int, char*); No newline at end of file
111 int rxData(int, char*);
112 void txData(int, char*); No newline at end of file
112 void txData(int, char*);
113 void inicializa_gpio(); No newline at end of file
113 void inicializa_gpio();
114 void inicializa_adc(); No newline at end of file
114 void inicializa_adc();
115 void procesa_peticion(char *rx_buffer, char *tx_buffer); No newline at end of file
115 void procesa_peticion(char *rx_buffer, char *tx_buffer);
116 int cambia_apuntamiento(char *puntero_char); No newline at end of file
116 int cambia_apuntamiento(char *puntero_char);
117 int carga_experimento(char *nombre_archivo); No newline at end of file
117 int carga_experimento(char *nombre_archivo);
118 char *chequeo_sistema(char *filename, char *numero_muestras);
118 char *chequeo_sistema(char *filename, char *numero_muestras);
No newline at end of file
119 void escribe_experimento(char *data, char filename[]);
119 void recibe_experimento(char *data, char filename[]); No newline at end of file
No newline at end of file
120 char *Lee_experimento(char *filename);
No newline at end of file
121 void consigue_nombre_experimento(char *rx_data, char filename[]); No newline at end of file
120 void SplitFrame(char *frame); No newline at end of file
122 void SplitFrame(char *frame);
121 void intToStr( int number, char* str ); No newline at end of file
123 void intToStr( int number, char* str );
122 No newline at end of file
124
123 //ABS monitoring No newline at end of file
125 //ABS monitoring
124 //int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth); No newline at end of file
126 //int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth);
125 char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth); No newline at end of file
127 char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth);
126 AT91S_ADC * configADC1(void); No newline at end of file
128 AT91S_ADC * configADC1(void);
127 AT91S_ADC * configADC2(void); No newline at end of file
129 AT91S_ADC * configADC2(void);
128 No newline at end of file
130
129 FILE * create_Output(char*, time_t); No newline at end of file
131 FILE * create_Output(char*, time_t);
130 No newline at end of file
132
131 void writeOutput(float resultado, FILE * output); No newline at end of file
133 void writeOutput(float resultado, FILE * output);
132 No newline at end of file
134
133 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth); No newline at end of file
135 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth);
134 No newline at end of file
136
135 double mediana(long int *results, unsigned int cuenta); No newline at end of file
137 double mediana(long int *results, unsigned int cuenta);
136 float getPhase(long int results1[], long int results2[]); No newline at end of file
138 float getPhase(long int results1[], long int results2[]);
137 No newline at end of file
139
138 int fExists(char *); No newline at end of file
140 int fExists(char *);
139 int configCLK(); No newline at end of file
141 int configCLK();
140 // No newline at end of file
142 //
141 No newline at end of file
143
142 /* No newline at end of file
144 /*
143 * No newline at end of file
145 *
144 */ No newline at end of file
146 */
145 int main(){ No newline at end of file
147 int main(){
146 No newline at end of file
148
147 int servSocket; No newline at end of file
149 int servSocket;
148 int clntSocket; No newline at end of file
150 int clntSocket;
149 No newline at end of file
151
150 No newline at end of file
152
151 char *rx_buffer = (char *) malloc(TAM_BUFFER); No newline at end of file
153 char *rx_buffer = (char *) malloc(TAM_BUFFER);
152 char *tx_buffer = (char *) malloc(TAM_BUFFER); No newline at end of file
154 char *tx_buffer = (char *) malloc(TAM_BUFFER);
153 /* Inicializa parametros del modulo*/ No newline at end of file
155 /* Inicializa parametros del modulo*/
154 parameters = inicializa_modulo(parameters); No newline at end of file
156 parameters = inicializa_modulo(parameters);
155 printf("%s\n%s\n%s\n%s\n",parameters.ID, parameters.param2, parameters.param3, parameters.param4); No newline at end of file
157 printf("%s\n%s\n%s\n%s\n",parameters.ID, parameters.param2, parameters.param3, parameters.param4);
156 /* Inicializa red*/ No newline at end of file
158 /* Inicializa red*/
157 servSocket = inicializa_ethernet(); No newline at end of file
159 servSocket = inicializa_ethernet();
158 /* Inicializamos el puerto GPIO del sistema embebido GSBC-9260S */ No newline at end of file
160 /* Inicializamos el puerto GPIO del sistema embebido GSBC-9260S */
159 inicializa_gpio(); No newline at end of file
161 inicializa_gpio();
160 inicializa_adc(); No newline at end of file
162 inicializa_adc();
161 No newline at end of file
163
162 while(1){ No newline at end of file
164 while(1){
163 // Recepción TCP de petición No newline at end of file
165 // Recepción TCP de petición
164 clntSocket = rxData(servSocket, rx_buffer); No newline at end of file
166 clntSocket = rxData(servSocket, rx_buffer);
165 //testpoint No newline at end of file
167 //testpoint
166 printf("rx:%s\n",rx_buffer); No newline at end of file
168 printf("rx:%s\n",rx_buffer);
167 // Procesamiento de la petición No newline at end of file
169 // Procesamiento de la petición
168 procesa_peticion(rx_buffer, tx_buffer); No newline at end of file
170 procesa_peticion(rx_buffer, tx_buffer);
169 //testpoint No newline at end of file
171 //testpoint
170 printf("tx:%s\n",tx_buffer); No newline at end of file
172 printf("tx:%s\n",tx_buffer);
171 // Respuesta del modulo de control No newline at end of file
173 // Respuesta del modulo de control
172 txData(clntSocket, tx_buffer); No newline at end of file
174 txData(clntSocket, tx_buffer);
173 No newline at end of file
175
174 } No newline at end of file
176 }
175 } No newline at end of file
177 }
176 No newline at end of file
178
177 No newline at end of file
179
178 int inicializa_ethernet(){ No newline at end of file
180 int inicializa_ethernet(){
179 No newline at end of file
181
180 struct sockaddr_in inf_servidor; No newline at end of file
182 struct sockaddr_in inf_servidor;
181 No newline at end of file
183
182 int servSocket; No newline at end of file
184 int servSocket;
183 No newline at end of file
185
184 int resultado; No newline at end of file
186 int resultado;
185 No newline at end of file
187
186 /* Haciendo la estructura local*/ No newline at end of file
188 /* Haciendo la estructura local*/
187 memset(&inf_servidor, 0, sizeof(inf_servidor)); No newline at end of file
189 memset(&inf_servidor, 0, sizeof(inf_servidor));
188 inf_servidor.sin_family= AF_INET; No newline at end of file
190 inf_servidor.sin_family= AF_INET;
189 inf_servidor.sin_port= htons(PUERTO_SERVIDOR); No newline at end of file
191 inf_servidor.sin_port= htons(PUERTO_SERVIDOR);
190 inf_servidor.sin_addr.s_addr= INADDR_ANY; No newline at end of file
192 inf_servidor.sin_addr.s_addr= INADDR_ANY;
191 No newline at end of file
193
192 /* Se establece el socket */ No newline at end of file
194 /* Se establece el socket */
193 servSocket = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); No newline at end of file
195 servSocket = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
194 if (servSocket == -1){ No newline at end of file
196 if (servSocket == -1){
195 printf("No se establecio correctamente el socket: socket()\n"); No newline at end of file
197 printf("No se establecio correctamente el socket: socket()\n");
196 //ERROR_FATAL("No se establecio correctamente el socket: socket()\n"); No newline at end of file
198 //ERROR_FATAL("No se establecio correctamente el socket: socket()\n");
197 exit(-1); No newline at end of file
199 exit(-1);
198 } No newline at end of file
200 }
199 No newline at end of file
201
200 /* Se asocia el socket a un puerto y una IP */ No newline at end of file
202 /* Se asocia el socket a un puerto y una IP */
201 resultado = bind(servSocket,(struct sockaddr *)&inf_servidor,sizeof(inf_servidor)); No newline at end of file
203 resultado = bind(servSocket,(struct sockaddr *)&inf_servidor,sizeof(inf_servidor));
202 if (resultado== -1){ No newline at end of file
204 if (resultado== -1){
203 printf("No se establecio correctamente el socket: bind()\n"); No newline at end of file
205 printf("No se establecio correctamente el socket: bind()\n");
204 //ERROR_FATAL("No se establecio correctamente el socket: bind()\n"); No newline at end of file
206 //ERROR_FATAL("No se establecio correctamente el socket: bind()\n");
205 exit(-1); No newline at end of file
207 exit(-1);
206 } No newline at end of file
208 }
207 No newline at end of file
209
208 if (listen(servSocket, MAXPENDING) < 0){ No newline at end of file
210 if (listen(servSocket, MAXPENDING) < 0){
209 printf("listen() failed\n"); No newline at end of file
211 printf("listen() failed\n");
210 exit(-1); No newline at end of file
212 exit(-1);
211 } No newline at end of file
213 }
212 No newline at end of file
214
213 return servSocket; No newline at end of file
215 return servSocket;
214 No newline at end of file
216
215 } No newline at end of file
217 }
216 No newline at end of file
218
217 int rxData(int servSocket, char* rx_buffer){ No newline at end of file
219 int rxData(int servSocket, char* rx_buffer){
218 No newline at end of file
220
219 int clntSocket; No newline at end of file
221 int clntSocket;
220 struct sockaddr_in inf_cliente; No newline at end of file
222 struct sockaddr_in inf_cliente;
221 int numbytes_recibidos; No newline at end of file
223 int numbytes_recibidos;
222 unsigned int inf_client_Len; No newline at end of file
224 unsigned int inf_client_Len;
223 No newline at end of file
225
224 printf("\nEsperando solicitud de cliente...\n"); No newline at end of file
226 printf("\nEsperando solicitud de cliente...\n");
225 No newline at end of file
227
226 /* Set the size of the in-out parameter */ No newline at end of file
228 /* Set the size of the in-out parameter */
227 inf_client_Len = sizeof(inf_cliente); No newline at end of file
229 inf_client_Len = sizeof(inf_cliente);
228 /* Se espera hasta que un cliente se conecte */ No newline at end of file
230 /* Se espera hasta que un cliente se conecte */
229 if ((clntSocket = accept(servSocket, (struct sockaddr *) &inf_cliente, No newline at end of file
231 if ((clntSocket = accept(servSocket, (struct sockaddr *) &inf_cliente,
230 &inf_client_Len)) < 0) No newline at end of file
232 &inf_client_Len)) < 0)
231 printf("accept() failed\n"); No newline at end of file
233 printf("accept() failed\n");
232 No newline at end of file
234
233 if ((numbytes_recibidos = recv(clntSocket, rx_buffer, TAM_BUFFER, 0)) < 0) No newline at end of file
235 if ((numbytes_recibidos = recv(clntSocket, rx_buffer, TAM_BUFFER, 0)) < 0)
234 printf("recv() failed\n"); No newline at end of file
236 printf("recv() failed\n");
235 No newline at end of file
237
236 /* Se procede a procesar los datos recibidos */ No newline at end of file
238 /* Se procede a procesar los datos recibidos */
237 rx_buffer[numbytes_recibidos]= '\0'; No newline at end of file
239 rx_buffer[numbytes_recibidos]= '\0';
238 No newline at end of file
240
239 return clntSocket; No newline at end of file
241 return clntSocket;
240 } No newline at end of file
242 }
241 No newline at end of file
243
242 void txData(int clntSocket, char* data){ No newline at end of file
244 void txData(int clntSocket, char* data){
243 No newline at end of file
245
244 /* Echo message back to client */ No newline at end of file
246 /* Echo message back to client */
245 if (send(clntSocket, data, strlen(data), 0) != strlen(data)) No newline at end of file
247 if (send(clntSocket, data, strlen(data), 0) != strlen(data))
246 printf("send() failed\n"); No newline at end of file
248 printf("send() failed\n");
247 No newline at end of file
249
248 close(clntSocket); /* Close client socket */ No newline at end of file
250 close(clntSocket); /* Close client socket */
249 } No newline at end of file
251 }
250 No newline at end of file
252
251 /* No newline at end of file
253 /*
252 * Esta funcion incializa el puerto GPIO No newline at end of file
254 * Esta funcion incializa el puerto GPIO
253 */ No newline at end of file
255 */
254 void inicializa_gpio(){ No newline at end of file
256 void inicializa_gpio(){
255 No newline at end of file
257
256 int desplazamiento_beam[6]={30,28,26,24,22,20}; //Desplazamientos para los pines de apunte No newline at end of file
258 int desplazamiento_beam[6]={30,28,26,24,22,20}; //Desplazamientos para los pines de apunte
257 int desplazamiento_cntl[3]={4,5,6}; //Desplazamientos para los pines de control de monitoreo No newline at end of file
259 int desplazamiento_cntl[3]={4,5,6}; //Desplazamientos para los pines de control de monitoreo
258 unsigned long acumulado_ceros=0; No newline at end of file
260 unsigned long acumulado_ceros=0;
259 int i; No newline at end of file
261 int i;
260 No newline at end of file
262
261 // Configuracion de los pines de APUNTE y control de monitoreo No newline at end of file
263 // Configuracion de los pines de APUNTE y control de monitoreo
262 pioc = pio_map(PIOC_BASE); No newline at end of file
264 pioc = pio_map(PIOC_BASE);
263 pio_enable(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
265 pio_enable(pioc, maskc_out_beam + maskc_out_cntl);
264 pio_disable_irq(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
266 pio_disable_irq(pioc, maskc_out_beam + maskc_out_cntl);
265 pio_disable_multiple_driver(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
267 pio_disable_multiple_driver(pioc, maskc_out_beam + maskc_out_cntl);
266 pio_disable_pull_ups(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
268 pio_disable_pull_ups(pioc, maskc_out_beam + maskc_out_cntl);
267 pio_synchronous_data_output(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
269 pio_synchronous_data_output(pioc, maskc_out_beam + maskc_out_cntl);
268 pio_output_enable(pioc, maskc_out_beam + maskc_out_cntl); No newline at end of file
270 pio_output_enable(pioc, maskc_out_beam + maskc_out_cntl);
269 No newline at end of file
271
270 // Configuracion de los pines de VERIFICACION No newline at end of file
272 // Configuracion de los pines de VERIFICACION
271 piob = pio_map(PIOB_BASE); No newline at end of file
273 piob = pio_map(PIOB_BASE);
272 pio_enable(piob, maskb_in); No newline at end of file
274 pio_enable(piob, maskb_in);
273 pio_disable_irq(piob, maskb_in); No newline at end of file
275 pio_disable_irq(piob, maskb_in);
274 pio_disable_multiple_driver(piob, maskb_in); No newline at end of file
276 pio_disable_multiple_driver(piob, maskb_in);
275 pio_disable_pull_ups(piob, maskb_in); No newline at end of file
277 pio_disable_pull_ups(piob, maskb_in);
276 pio_input_enable(piob, maskb_in); No newline at end of file
278 pio_input_enable(piob, maskb_in);
277 No newline at end of file
279
278 //Pînes de ADC No newline at end of file
280 //Pînes de ADC
279 pio_adc = pio_map(PIOC_BASE); No newline at end of file
281 pio_adc = pio_map(PIOC_BASE);
280 pin_adc_enable(pio_adc,maskc_in_adc); //Habilitamos PC0 para usar con ADC0 y 1 No newline at end of file
282 pin_adc_enable(pio_adc,maskc_in_adc); //Habilitamos PC0 para usar con ADC0 y 1
281 pio_disable_irq(pio_adc, maskc_in_adc); No newline at end of file
283 pio_disable_irq(pio_adc, maskc_in_adc);
282 pio_disable_multiple_driver(pio_adc, maskc_in_adc); No newline at end of file
284 pio_disable_multiple_driver(pio_adc, maskc_in_adc);
283 pio_disable_pull_ups(pio_adc, maskc_in_adc); No newline at end of file
285 pio_disable_pull_ups(pio_adc, maskc_in_adc);
284 pio_input_enable(pio_adc, maskc_in_adc); No newline at end of file
286 pio_input_enable(pio_adc, maskc_in_adc);
285 No newline at end of file
287
286 //Inicializando a cero los pines de apunte No newline at end of file
288 //Inicializando a cero los pines de apunte
287 for(i=0;i<6;i++) No newline at end of file
289 for(i=0;i<6;i++)
288 acumulado_ceros= acumulado_ceros + (1 << desplazamiento_beam[i]); No newline at end of file
290 acumulado_ceros= acumulado_ceros + (1 << desplazamiento_beam[i]);
289 pio_out(pioc, maskc_out_beam, acumulado_ceros, 0); No newline at end of file
291 pio_out(pioc, maskc_out_beam, acumulado_ceros, 0);
290 No newline at end of file
292
291 //Inicializando a cero los pines de control de monitoreo: atenuacion, calibracion y canal No newline at end of file
293 //Inicializando a cero los pines de control de monitoreo: atenuacion, calibracion y canal
292 for(i=0;i<3;i++) No newline at end of file
294 for(i=0;i<3;i++)
293 acumulado_ceros= acumulado_ceros + (1 << desplazamiento_cntl[i]); No newline at end of file
295 acumulado_ceros= acumulado_ceros + (1 << desplazamiento_cntl[i]);
294 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); No newline at end of file
296 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0);
295 No newline at end of file
297
296 } No newline at end of file
298 }
297 No newline at end of file
299
298 void inicializa_adc(){ No newline at end of file
300 void inicializa_adc(){
299 No newline at end of file
301
300 if (configCLK() == 1) No newline at end of file
302 if (configCLK() == 1)
301 printf("clock ADC enable.\n"); No newline at end of file
303 printf("clock ADC enable.\n");
302 //configure ADC Settings No newline at end of file
304 //configure ADC Settings
303 padc=configADC1(); No newline at end of file
305 padc=configADC1();
304 padd=configADC2(); No newline at end of file
306 padd=configADC2();
305 } No newline at end of file
307 }
306 No newline at end of file
308
307 No newline at end of file
309
308 /* No newline at end of file
310 /*
309 * Divide rx frame into the frame components No newline at end of file
311 * Divide rx frame into the frame components
310 */ No newline at end of file
312 */
311 void SplitFrame(char *frame){ No newline at end of file
313 void SplitFrame(char *frame){
312 header = malloc(4); No newline at end of file
314 header = malloc(4);
313 *header = *frame; No newline at end of file
315 *header = *frame;
314 *(header + 1) = *(frame + 1); No newline at end of file
316 *(header + 1) = *(frame + 1);
315 *(header + 2) = *(frame + 2); No newline at end of file
317 *(header + 2) = *(frame + 2);
316 *(header + 3) = '\0'; No newline at end of file
318 *(header + 3) = '\0';
317 TypeOfInstrument = malloc(4); No newline at end of file
319 TypeOfInstrument = malloc(4);
318 *TypeOfInstrument = *(frame + 3); No newline at end of file
320 *TypeOfInstrument = *(frame + 3);
319 *(TypeOfInstrument + 1) = *(frame + 4); No newline at end of file
321 *(TypeOfInstrument + 1) = *(frame + 4);
320 *(TypeOfInstrument + 2) = *(frame + 5); No newline at end of file
322 *(TypeOfInstrument + 2) = *(frame + 5);
321 *(TypeOfInstrument + 3) = '\0'; No newline at end of file
323 *(TypeOfInstrument + 3) = '\0';
322 iDSource = malloc(8); No newline at end of file
324 iDSource = malloc(8);
323 *iDSource = *(frame + 6); No newline at end of file
325 *iDSource = *(frame + 6);
324 *(iDSource + 1) = *(frame + 7); No newline at end of file
326 *(iDSource + 1) = *(frame + 7);
325 *(iDSource + 2) = *(frame + 8); No newline at end of file
327 *(iDSource + 2) = *(frame + 8);
326 *(iDSource + 3) = *(frame + 9); No newline at end of file
328 *(iDSource + 3) = *(frame + 9);
327 *(iDSource + 4) = *(frame + 10); No newline at end of file
329 *(iDSource + 4) = *(frame + 10);
328 *(iDSource + 5) = *(frame + 11); No newline at end of file
330 *(iDSource + 5) = *(frame + 11);
329 *(iDSource + 6) = *(frame + 12); No newline at end of file
331 *(iDSource + 6) = *(frame + 12);
330 *(iDSource + 7) = '\0'; No newline at end of file
332 *(iDSource + 7) = '\0';
331 iDDestino = malloc(8); No newline at end of file
333 iDDestino = malloc(8);
332 *iDDestino = *(frame + 13); No newline at end of file
334 *iDDestino = *(frame + 13);
333 *(iDDestino + 1) = *(frame + 14); No newline at end of file
335 *(iDDestino + 1) = *(frame + 14);
334 *(iDDestino + 2) = *(frame + 15); No newline at end of file
336 *(iDDestino + 2) = *(frame + 15);
335 *(iDDestino + 3) = *(frame + 16); No newline at end of file
337 *(iDDestino + 3) = *(frame + 16);
336 *(iDDestino + 4) = *(frame + 17); No newline at end of file
338 *(iDDestino + 4) = *(frame + 17);
337 *(iDDestino + 5) = *(frame + 18); No newline at end of file
339 *(iDDestino + 5) = *(frame + 18);
338 *(iDDestino + 6) = *(frame + 19); No newline at end of file
340 *(iDDestino + 6) = *(frame + 19);
339 *(iDDestino + 7) = '\0'; No newline at end of file
341 *(iDDestino + 7) = '\0';
340 rx_len = malloc(7); No newline at end of file
342 rx_len = malloc(7);
341 *rx_len = *(frame + 20); No newline at end of file
343 *rx_len = *(frame + 20);
342 *(rx_len + 1) = *(frame + 21); No newline at end of file
344 *(rx_len + 1) = *(frame + 21);
343 *(rx_len + 2) = *(frame + 22); No newline at end of file
345 *(rx_len + 2) = *(frame + 22);
344 *(rx_len + 3) = *(frame + 23); No newline at end of file
346 *(rx_len + 3) = *(frame + 23);
345 *(rx_len + 4) = *(frame + 24); No newline at end of file
347 *(rx_len + 4) = *(frame + 24);
346 *(rx_len + 5) = *(frame + 25); No newline at end of file
348 *(rx_len + 5) = *(frame + 25);
347 *(rx_len + 6) = '\0'; No newline at end of file
349 *(rx_len + 6) = '\0';
348 cmd = malloc(5); No newline at end of file
350 cmd = malloc(5);
349 *cmd = *(frame + 26); No newline at end of file
351 *cmd = *(frame + 26);
350 *(cmd + 1) = *(frame + 27); No newline at end of file
352 *(cmd + 1) = *(frame + 27);
351 *(cmd + 2) = *(frame + 28); No newline at end of file
353 *(cmd + 2) = *(frame + 28);
352 *(cmd + 3) = *(frame + 29); No newline at end of file
354 *(cmd + 3) = *(frame + 29);
353 *(cmd + 4) = '\0'; No newline at end of file
355 *(cmd + 4) = '\0';
354 No newline at end of file
356
355 int l = atoi(rx_len); No newline at end of file
357 int l = atoi(rx_len);
356 rx_data = malloc(l + 1); No newline at end of file
358 rx_data = malloc(l + 1);
357 int i; No newline at end of file
359 int i;
358 for (i = 30; i < 30 + l; i++) No newline at end of file
360 for (i = 30; i < 30 + l; i++)
359 *(rx_data + (i-30)) = *(frame + i); No newline at end of file
361 *(rx_data + (i-30)) = *(frame + i);
360 *(rx_data + l) = '\0'; No newline at end of file
362 *(rx_data + l) = '\0';
361 crc = malloc(2); No newline at end of file
363 crc = malloc(2);
362 *crc = *(frame + 30 + l); No newline at end of file
364 *crc = *(frame + 30 + l);
363 *(crc + 1) = '\0'; No newline at end of file
365 *(crc + 1) = '\0';
364 } No newline at end of file
366 }
365 No newline at end of file
367
366 /* No newline at end of file
368 /*
367 * Esta funcion procesa el mensaje de peticion y genera respuesta No newline at end of file
369 * Esta funcion procesa el mensaje de peticion y genera respuesta
368 */ No newline at end of file
370 */
369 void procesa_peticion(char *rx_buffer, char *tx_buffer){ No newline at end of file
371 void procesa_peticion(char *rx_buffer, char *tx_buffer){
370 // int n = 0; No newline at end of file
372 // int n = 0;
371 char filename1[50]; No newline at end of file
373 char filename1[50];
372 char filename2[] = "verificacion.txt"; No newline at end of file
374 char filename2[] = "verificacion.txt";
373 char *tx_data = NULL; No newline at end of file
375 char *tx_data = NULL;
374 char *tx_len = NULL; No newline at end of file
376 char *tx_len = NULL;
375 SplitFrame(rx_buffer); No newline at end of file
377 SplitFrame(rx_buffer);
376 No newline at end of file
378
377 if ((cmd == NULL) || (rx_data == NULL)){ No newline at end of file
379 if ((cmd == NULL) || (rx_data == NULL)){
378 printf("procesarPeticion: formato de mensaje incorrecto"); No newline at end of file
380 printf("procesarPeticion: formato de mensaje incorrecto");
379 //ERROR("procesarPeticion: formato de mensaje incorrecto"); No newline at end of file
381 //ERROR("procesarPeticion: formato de mensaje incorrecto");
380 No newline at end of file
382
381 } No newline at end of file
383 }
382 else{ No newline at end of file
384 else{
383 if(strcmp(cmd,"SNDF") == 0){
385 if(strcmp(cmd,"SNDF") == 0){
No newline at end of file
386 escribe_experimento(rx_data,filename1); No newline at end of file
384 recibe_experimento(rx_data,filename1); No newline at end of file
385 carga_experimento(filename1);
387 carga_experimento(filename1);
No newline at end of file
388 //cambia_apuntamiento("0"); No newline at end of file
386 cambia_apuntamiento("0"); No newline at end of file
387 tx_data = (char*)malloc(3); No newline at end of file
389 tx_data = (char*)malloc(3);
388 tx_data = "OK"; No newline at end of file
390 tx_data = "OK";
391 }
No newline at end of file
392 else if(strcmp(cmd,"GETF") == 0){
No newline at end of file
393 consigue_nombre_experimento(rx_data,filename1); //get a filename from frame
No newline at end of file
394 tx_data = Lee_experimento(filename1); //return a pointer to the content of the filename
No newline at end of file
395 printf("%s\n",tx_data); No newline at end of file
389 } No newline at end of file
396 }
390 else if(strcmp(cmd,"CHGB") == 0){ No newline at end of file
397 else if(strcmp(cmd,"CHGB") == 0){
391 cambia_apuntamiento(rx_data); No newline at end of file
398 cambia_apuntamiento(rx_data);
392 tx_data = (char*)malloc(3); No newline at end of file
399 tx_data = (char*)malloc(3);
393 tx_data = "OK"; No newline at end of file
400 tx_data = "OK";
394 } No newline at end of file
401 }
395 else if(strcmp(cmd,"ANST") == 0){ No newline at end of file
402 else if(strcmp(cmd,"ANST") == 0){
396 tx_data = chequeo_sistema(filename2,rx_data); No newline at end of file
403 tx_data = chequeo_sistema(filename2,rx_data);
397 printf("%s\n",tx_data); No newline at end of file
404 printf("%s\n",tx_data);
398 } No newline at end of file
405 }
399 else if(strcmp(cmd,"BGPH") == 0){ No newline at end of file
406 else if(strcmp(cmd,"BGPH") == 0){
400 tx_data = ABS_monitoreo(1, 0, 50, 10); No newline at end of file
407 tx_data = ABS_monitoreo(1, 0, 50, 10);
401 // tx_data = "Not implemented\n"; No newline at end of file
408 // tx_data = "Not implemented\n";
402 printf("%s\n",tx_data); No newline at end of file
409 printf("%s\n",tx_data);
403 } No newline at end of file
410 }
404 else if(strcmp(cmd,"LWPH") == 0){ No newline at end of file
411 else if(strcmp(cmd,"LWPH") == 0){
405 tx_data = ABS_monitoreo(0, 0, 50, 10); No newline at end of file
412 tx_data = ABS_monitoreo(0, 0, 50, 10);
406 // tx_data = "Not implemented\n"; No newline at end of file
413 // tx_data = "Not implemented\n";
407 printf("%s\n",tx_data); No newline at end of file
414 printf("%s\n",tx_data);
408 } No newline at end of file
415 }
409 else if(strcmp(cmd,"NTST") == 0){ No newline at end of file
416 else if(strcmp(cmd,"NTST") == 0){
410 tx_data = malloc(strlen(parameters.ID) + 1); No newline at end of file
417 tx_data = malloc(strlen(parameters.ID) + 1);
411 strcpy(tx_data,parameters.ID); No newline at end of file
418 strcpy(tx_data,parameters.ID);
412 printf("%s\n",tx_data); No newline at end of file
419 printf("%s\n",tx_data);
413 } No newline at end of file
420 }
414 else{ No newline at end of file
421 else{
415 tx_data = (char*)malloc(6); No newline at end of file
422 tx_data = (char*)malloc(6);
416 tx_data = "Error"; No newline at end of file
423 tx_data = "Error";
417 printf("procesa_peticion: comando no reconocido"); No newline at end of file
424 printf("procesa_peticion: comando no reconocido");
418 //ERROR("procesa_peticion: comando no reconocido"); No newline at end of file
425 //ERROR("procesa_peticion: comando no reconocido");
419 } No newline at end of file
426 }
420 No newline at end of file
427
421 tx_len = malloc(7); No newline at end of file
428 tx_len = malloc(7);
422 int number = strlen(tx_data); No newline at end of file
429 int number = strlen(tx_data);
423 intToStr(number, tx_len ); No newline at end of file
430 intToStr(number, tx_len );
424 No newline at end of file
431
425 strcpy(tx_buffer,header); //3 No newline at end of file
432 strcpy(tx_buffer,header); //3
426 strcat(tx_buffer,TypeOfInstrument); //3 No newline at end of file
433 strcat(tx_buffer,TypeOfInstrument); //3
427 strcat(tx_buffer,parameters.ID); //7 No newline at end of file
434 strcat(tx_buffer,parameters.ID); //7
428 strcat(tx_buffer,iDSource); //7 No newline at end of file
435 strcat(tx_buffer,iDSource); //7
429 strcat(tx_buffer,tx_len); //6 No newline at end of file
436 strcat(tx_buffer,tx_len); //6
430 strcat(tx_buffer,cmd); //4 No newline at end of file
437 strcat(tx_buffer,cmd); //4
431 strcat(tx_buffer,tx_data); //? No newline at end of file
438 strcat(tx_buffer,tx_data); //?
432 strcat(tx_buffer,crc); //1 No newline at end of file
439 strcat(tx_buffer,crc); //1
433 No newline at end of file
440
434 } No newline at end of file
441 }
435 No newline at end of file
442
436 } No newline at end of file
443 }
437 No newline at end of file
444
445
No newline at end of file
446 char* Lee_experimento(char filename[]){
No newline at end of file
447 char *buffer = NULL;
No newline at end of file
448 FILE * fd = fopen(filename,"r");
No newline at end of file
449 fseek(fd, 0, SEEK_END);
No newline at end of file
450 size_t sz = ftell(fd);
No newline at end of file
451 fseek(fd, 0, SEEK_SET);
No newline at end of file
452 buffer = malloc(sz);
No newline at end of file
453 fread(buffer,sizeof(char),sz,fd);
No newline at end of file
454 fclose(fd);
No newline at end of file
455 return buffer;
No newline at end of file
456 } No newline at end of file
438 /* No newline at end of file
457 /*
439 * Esta función genera el archivo de experimento a partir de la trama TCP recibida No newline at end of file
458 * Esta función genera el archivo de experimento a partir de la trama TCP recibida
440 */
459 */
No newline at end of file
460 void escribe_experimento(char *p_data, char filename[]){ No newline at end of file
441 void recibe_experimento(char *p_data, char filename[]){ No newline at end of file
442 FILE *fd; No newline at end of file
461 FILE *fd;
443 int i = 0; No newline at end of file
462 int i = 0;
444 No newline at end of file
463
445 while (*p_data != '\n'){ No newline at end of file
464 while (*p_data != '\n'){
446 filename[i] = *p_data; No newline at end of file
465 filename[i] = *p_data;
447 i++; No newline at end of file
466 i++;
448 p_data++; No newline at end of file
467 p_data++;
449 } No newline at end of file
468 }
450 filename[i] = '\0'; No newline at end of file
469 filename[i] = '\0';
451 p_data = p_data - i; No newline at end of file
470 p_data = p_data - i;
452 fd = fopen(filename,"w"); No newline at end of file
471 fd = fopen(filename,"w");
453 fprintf(fd, p_data); No newline at end of file
472 fprintf(fd, p_data);
454 fclose(fd); No newline at end of file
473 fclose(fd);
474 }
No newline at end of file
475
No newline at end of file
476 void consigue_nombre_experimento(char *p_data, char filename[]){
No newline at end of file
477
No newline at end of file
478 int i = 0;
No newline at end of file
479
No newline at end of file
480 while (*p_data != '\n'){
No newline at end of file
481 filename[i] = *p_data;
No newline at end of file
482 i++;
No newline at end of file
483 p_data++;
No newline at end of file
484 }
No newline at end of file
485 filename[i] = '\0'; No newline at end of file
455 } No newline at end of file
486 }
456 No newline at end of file
487
457 /* No newline at end of file
488 /*
458 * Esta funcion carga un archivo en un buffer que esta ubicado en memoria, luego No newline at end of file
489 * Esta funcion carga un archivo en un buffer que esta ubicado en memoria, luego
459 * este buffer es usado en la funcion "cambia_apuntamiento" para obtener el dato No newline at end of file
490 * este buffer es usado en la funcion "cambia_apuntamiento" para obtener el dato
460 * que sera usado en el cambio de apuntamiento. No newline at end of file
491 * que sera usado en el cambio de apuntamiento.
461 */ No newline at end of file
492 */
462 int carga_experimento(char *nombre_archivo){ No newline at end of file
493 int carga_experimento(char *nombre_archivo){
463 No newline at end of file
494
464 FILE *Archivo_Fd; No newline at end of file
495 FILE *Archivo_Fd;
465 No newline at end of file
496
466 char *cadena = (char *) malloc(25); No newline at end of file
497 char *cadena = (char *) malloc(25);
467 No newline at end of file
498
468 int longitud_cadena; No newline at end of file
499 int longitud_cadena;
469 int num_bytes= 0; No newline at end of file
500 int num_bytes= 0;
470 int num_filas= 0; No newline at end of file
501 int num_filas= 0;
471 No newline at end of file
502
472 Archivo_Fd = fopen(nombre_archivo,"r"); // Se procede a abrir el archivo, segun la ruta especificada No newline at end of file
503 Archivo_Fd = fopen(nombre_archivo,"r"); // Se procede a abrir el archivo, segun la ruta especificada
473 if(!Archivo_Fd){ No newline at end of file
504 if(!Archivo_Fd){
474 printf("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n"); No newline at end of file
505 printf("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n");
475 //ERROR("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n"); No newline at end of file
506 //ERROR("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n");
476 return -1; No newline at end of file
507 return -1;
477 }else{ No newline at end of file
508 }else{
478 No newline at end of file
509
479 while(!feof(Archivo_Fd)){ // Se procede a calcular la longitud del archivo para separar memoria No newline at end of file
510 while(!feof(Archivo_Fd)){ // Se procede a calcular la longitud del archivo para separar memoria
480 fgets(cadena,20,Archivo_Fd); No newline at end of file
511 fgets(cadena,20,Archivo_Fd);
481 longitud_cadena= strlen(cadena); No newline at end of file
512 longitud_cadena= strlen(cadena);
482 cadena[longitud_cadena-1] = '\0'; No newline at end of file
513 cadena[longitud_cadena-1] = '\0';
483 num_bytes = num_bytes + longitud_cadena; No newline at end of file
514 num_bytes = num_bytes + longitud_cadena;
484 num_filas++; No newline at end of file
515 num_filas++;
485 } No newline at end of file
516 }
486 No newline at end of file
517
487 rewind(Archivo_Fd); // Se reinicia el puntero del archivo No newline at end of file
518 rewind(Archivo_Fd); // Se reinicia el puntero del archivo
488 No newline at end of file
519
489 char *buffer_temporal = (char *) malloc(num_bytes+1); // Se separa espacio de memoria segun No newline at end of file
520 char *buffer_temporal = (char *) malloc(num_bytes+1); // Se separa espacio de memoria segun
490 // la longitud del archivo No newline at end of file
521 // la longitud del archivo
491 fread(buffer_temporal, sizeof(char), num_bytes, Archivo_Fd); No newline at end of file
522 fread(buffer_temporal, sizeof(char), num_bytes, Archivo_Fd);
492 No newline at end of file
523
493 char *puntero= strstr(buffer_temporal,".ab1"); // Se procede a eliminar la cabecera del archivo No newline at end of file
524 char *puntero= strstr(buffer_temporal,".ab1"); // Se procede a eliminar la cabecera del archivo
494 puntero= puntero + 12; No newline at end of file
525 puntero= puntero + 12;
495 No newline at end of file
526
496 buff_experimento = (char *) malloc(7*(num_filas-3)); // num_bytes_fila*(num_filas-3); No newline at end of file
527 buff_experimento = (char *) malloc(7*(num_filas-3)); // num_bytes_fila*(num_filas-3);
497 strncpy(buff_experimento,puntero,7*(num_filas-3)); // Se carga en memoria la informacion del archivo No newline at end of file
528 strncpy(buff_experimento,puntero,7*(num_filas-3)); // Se carga en memoria la informacion del archivo
498 No newline at end of file
529
499 fclose(Archivo_Fd); No newline at end of file
530 fclose(Archivo_Fd);
500 No newline at end of file
531
501 return 1; No newline at end of file
532 return 1;
502 } No newline at end of file
533 }
503 } No newline at end of file
534 }
504 No newline at end of file
535
505 /* No newline at end of file
536 /*
506 * Esta funcion recibe un numero en formato char, el dato se transforma a su equivalente en No newline at end of file
537 * Esta funcion recibe un numero en formato char, el dato se transforma a su equivalente en
507 * un numero entero, que sera usado para sacar un dato del buffer "buff_experimento", esta No newline at end of file
538 * un numero entero, que sera usado para sacar un dato del buffer "buff_experimento", esta
508 * dato es el valor que se enviara al sistema de conmutacion RF para el cambio de apunte a No newline at end of file
539 * dato es el valor que se enviara al sistema de conmutacion RF para el cambio de apunte a
509 * traves del puerto GPIO. No newline at end of file
540 * traves del puerto GPIO.
510 */ No newline at end of file
541 */
511 int cambia_apuntamiento(char *puntero_char){ No newline at end of file
542 int cambia_apuntamiento(char *puntero_char){
512 No newline at end of file
543
513 /*MSB-UP-LSB MSB-DOWN-LSB*/ No newline at end of file
544 /*MSB-UP-LSB MSB-DOWN-LSB*/
514 int desplazamiento[6]={30,28,26,24,22,20}; // Defino los dezplazamientos que se aplicara No newline at end of file
545 int desplazamiento[6]={30,28,26,24,22,20}; // Defino los dezplazamientos que se aplicara
515 // al dato que ingresa para formar el número No newline at end of file
546 // al dato que ingresa para formar el número
516 // entero que se le pasara al puerto GPIO No newline at end of file
547 // entero que se le pasara al puerto GPIO
517 // Estos números son los pines del puerto GPIO No newline at end of file
548 // Estos números son los pines del puerto GPIO
518 // que se estan usando para el control No newline at end of file
549 // que se estan usando para el control
519 No newline at end of file
550
520 int puntero= atoi(puntero_char); // Se convierte a entero la direccion del puntero No newline at end of file
551 int puntero= atoi(puntero_char); // Se convierte a entero la direccion del puntero
521 No newline at end of file
552
522 int base= 7*puntero; // base= cantidad_bytes del dato x puntero No newline at end of file
553 int base= 7*puntero; // base= cantidad_bytes del dato x puntero
523 // cantidad de bytes es el numero de bytes que No newline at end of file
554 // cantidad de bytes es el numero de bytes que
524 printf("%s\n",puntero_char); // contiene cada dato, para este caso es 7 No newline at end of file
555 printf("%s\n",puntero_char); // contiene cada dato, para este caso es 7
525 // porque es 6 bits de datos + 1 bit del cambio No newline at end of file
556 // porque es 6 bits de datos + 1 bit del cambio
526 // de linea. No newline at end of file
557 // de linea.
527 char valor_char; No newline at end of file
558 char valor_char;
528 unsigned long valor; No newline at end of file
559 unsigned long valor;
529 unsigned long acumulado_ceros=0; No newline at end of file
560 unsigned long acumulado_ceros=0;
530 unsigned long acumulado_unos=0; No newline at end of file
561 unsigned long acumulado_unos=0;
531 No newline at end of file
562
532 int offset; // Defino offset para el desplazamiento a traves No newline at end of file
563 int offset; // Defino offset para el desplazamiento a traves
533 for(offset=0;offset<6;offset++){ // de cada dato que se obtiene del "buff_experimento" No newline at end of file
564 for(offset=0;offset<6;offset++){ // de cada dato que se obtiene del "buff_experimento"
534 No newline at end of file
565
535 valor_char= buff_experimento[base+offset]; // Obtengo el dato No newline at end of file
566 valor_char= buff_experimento[base+offset]; // Obtengo el dato
536 No newline at end of file
567
537 if (valor_char == '0'){ // Obtengo el número acumulado segun sea un cero o un uno No newline at end of file
568 if (valor_char == '0'){ // Obtengo el número acumulado segun sea un cero o un uno
538 valor= 0; No newline at end of file
569 valor= 0;
539 acumulado_ceros= acumulado_ceros + (1 << desplazamiento[offset]); No newline at end of file
570 acumulado_ceros= acumulado_ceros + (1 << desplazamiento[offset]);
540 }else{ No newline at end of file
571 }else{
541 valor= 1; No newline at end of file
572 valor= 1;
542 acumulado_unos= acumulado_unos + (1 << desplazamiento[offset]); No newline at end of file
573 acumulado_unos= acumulado_unos + (1 << desplazamiento[offset]);
543 } No newline at end of file
574 }
544 } No newline at end of file
575 }
545 pio_out(pioc, maskc_out_beam, acumulado_unos, 1); No newline at end of file
576 pio_out(pioc, maskc_out_beam, acumulado_unos, 1);
546 pio_out(pioc, maskc_out_beam, acumulado_ceros, 0); No newline at end of file
577 pio_out(pioc, maskc_out_beam, acumulado_ceros, 0);
547 No newline at end of file
578
548 return 1; No newline at end of file
579 return 1;
549 No newline at end of file
580
550 } No newline at end of file
581 }
551 No newline at end of file
582
552 /* No newline at end of file
583 /*
553 * Esta funcion lee "n" veces el estado del APUNTE actual y reporta No newline at end of file
584 * Esta funcion lee "n" veces el estado del APUNTE actual y reporta
554 * una cadena de Verificacion. No newline at end of file
585 * una cadena de Verificacion.
555 */ No newline at end of file
586 */
556 char* chequeo_sistema(char *filename, char *numero_muestras){ No newline at end of file
587 char* chequeo_sistema(char *filename, char *numero_muestras){
557 No newline at end of file
588
558 int i; No newline at end of file
589 int i;
559 int cnt = 0; No newline at end of file
590 int cnt = 0;
560 unsigned int entradac= 0; No newline at end of file
591 unsigned int entradac= 0;
561 No newline at end of file
592
562 char page0[250]; No newline at end of file
593 char page0[250];
563 No newline at end of file
594
564 /*strcpy(page0,"Verificacion\n"); No newline at end of file
595 /*strcpy(page0,"Verificacion\n");
565 strcat(page0,parameters.ID);*/ No newline at end of file
596 strcat(page0,parameters.ID);*/
566 strcpy(page0,parameters.ID); No newline at end of file
597 strcpy(page0,parameters.ID);
567 strcat(page0,"\n-------\n"); No newline at end of file
598 strcat(page0,"\n-------\n");
568 No newline at end of file
599
569 char page1[8]; No newline at end of file
600 char page1[8];
570 No newline at end of file
601
571 do{ No newline at end of file
602 do{
572 //Inicializando arreglo No newline at end of file
603 //Inicializando arreglo
573 for(i=0;i<6;i++) No newline at end of file
604 for(i=0;i<6;i++)
574 page1[i]='0'; No newline at end of file
605 page1[i]='0';
575 page1[6] = '\n'; No newline at end of file
606 page1[6] = '\n';
576 page1[7] = '\0'; No newline at end of file
607 page1[7] = '\0';
577 //Lectura de puerto No newline at end of file
608 //Lectura de puerto
578 entradac= pio_in(piob,maskb_in); No newline at end of file
609 entradac= pio_in(piob,maskb_in);
579 //Dandole formato al dato No newline at end of file
610 //Dandole formato al dato
580 if (!(entradac & bit_up_2)) No newline at end of file
611 if (!(entradac & bit_up_2))
581 page1[0] = '1'; No newline at end of file
612 page1[0] = '1';
582 if (!(entradac & bit_up_1)) No newline at end of file
613 if (!(entradac & bit_up_1))
583 page1[1] = '1'; No newline at end of file
614 page1[1] = '1';
584 if (!(entradac & bit_up_0)) No newline at end of file
615 if (!(entradac & bit_up_0))
585 page1[2] = '1'; No newline at end of file
616 page1[2] = '1';
586 if (!(entradac & bit_dow_2)) No newline at end of file
617 if (!(entradac & bit_dow_2))
587 page1[3] = '1'; No newline at end of file
618 page1[3] = '1';
588 if (!(entradac & bit_dow_1)) No newline at end of file
619 if (!(entradac & bit_dow_1))
589 page1[4] = '1'; No newline at end of file
620 page1[4] = '1';
590 if (!(entradac & bit_dow_0)) No newline at end of file
621 if (!(entradac & bit_dow_0))
591 page1[5] = '1'; No newline at end of file
622 page1[5] = '1';
592 No newline at end of file
623
593 strcat(page0, page1); No newline at end of file
624 strcat(page0, page1);
594 cnt=cnt+1; No newline at end of file
625 cnt=cnt+1;
595 usleep(1*1000*1000); No newline at end of file
626 usleep(1*1000*1000);
596 No newline at end of file
627
597 }while(cnt < atoi(numero_muestras)); No newline at end of file
628 }while(cnt < atoi(numero_muestras));
598 No newline at end of file
629
599 page0[strlen(page0)] = '\0'; No newline at end of file
630 page0[strlen(page0)] = '\0';
600 No newline at end of file
631
601 char *all_pages = malloc(strlen(page0)+1); No newline at end of file
632 char *all_pages = malloc(strlen(page0)+1);
602 strcpy(all_pages, page0); No newline at end of file
633 strcpy(all_pages, page0);
603 return all_pages; No newline at end of file
634 return all_pages;
604 } No newline at end of file
635 }
605 No newline at end of file
636
606 /* No newline at end of file
637 /*
607 * No newline at end of file
638 *
608 */ No newline at end of file
639 */
609 cmp inicializa_modulo(cmp p){ No newline at end of file
640 cmp inicializa_modulo(cmp p){
610 FILE *fd = fopen("configuration.txt","r"); No newline at end of file
641 FILE *fd = fopen("configuration.txt","r");
611 fgets(p.ID,20,fd); No newline at end of file
642 fgets(p.ID,20,fd);
612 p.ID[7]='\0'; No newline at end of file
643 p.ID[7]='\0';
613 fgets(p.param2,20,fd); No newline at end of file
644 fgets(p.param2,20,fd);
614 p.param2[10]='\0'; No newline at end of file
645 p.param2[10]='\0';
615 fgets(p.param3,20,fd); No newline at end of file
646 fgets(p.param3,20,fd);
616 p.param3[10]='\0'; No newline at end of file
647 p.param3[10]='\0';
617 fgets(p.param4,20,fd); No newline at end of file
648 fgets(p.param4,20,fd);
618 p.param4[10]='\0'; No newline at end of file
649 p.param4[10]='\0';
619 fclose(fd); No newline at end of file
650 fclose(fd);
620 return p; No newline at end of file
651 return p;
621 } No newline at end of file
652 }
622 No newline at end of file
653
623 /* No newline at end of file
654 /*
624 * No newline at end of file
655 *
625 */ No newline at end of file
656 */
626 void intToStr( int number, char* str ) No newline at end of file
657 void intToStr( int number, char* str )
627 No newline at end of file
658
628 { No newline at end of file
659 {
629 int index = 0; No newline at end of file
660 int index = 0;
630 No newline at end of file
661
631 while( number > 0 ) No newline at end of file
662 while( number > 0 )
632 { No newline at end of file
663 {
633 int digit = number%10; No newline at end of file
664 int digit = number%10;
634 str[index++] = digit + '0'; No newline at end of file
665 str[index++] = digit + '0';
635 number /= 10; No newline at end of file
666 number /= 10;
636 } No newline at end of file
667 }
637 str[index] = '\0'; No newline at end of file
668 str[index] = '\0';
638 //Adding zero to the left No newline at end of file
669 //Adding zero to the left
639 int n= strlen(str); No newline at end of file
670 int n= strlen(str);
640 if (n == 1) { No newline at end of file
671 if (n == 1) {
641 strcat(str,"00000"); No newline at end of file
672 strcat(str,"00000");
642 index = index + 5; No newline at end of file
673 index = index + 5;
643 }else if(n == 2){ No newline at end of file
674 }else if(n == 2){
644 strcat(str,"0000"); No newline at end of file
675 strcat(str,"0000");
645 index = index + 4; No newline at end of file
676 index = index + 4;
646 }else if(n == 3){ No newline at end of file
677 }else if(n == 3){
647 strcat(str,"000"); No newline at end of file
678 strcat(str,"000");
648 index = index + 3; No newline at end of file
679 index = index + 3;
649 }else if(n == 4){ No newline at end of file
680 }else if(n == 4){
650 strcat(str,"00"); No newline at end of file
681 strcat(str,"00");
651 index = index + 2; No newline at end of file
682 index = index + 2;
652 }else if(n == 5){ No newline at end of file
683 }else if(n == 5){
653 strcat(str,"0"); No newline at end of file
684 strcat(str,"0");
654 index = index + 1; No newline at end of file
685 index = index + 1;
655 } No newline at end of file
686 }
656 //Now reverse the numbers in the string. No newline at end of file
687 //Now reverse the numbers in the string.
657 int position; No newline at end of file
688 int position;
658 for( position = 0; position <= (index-1)/2; ++position ) No newline at end of file
689 for( position = 0; position <= (index-1)/2; ++position )
659 { No newline at end of file
690 {
660 char tmp = str[position]; No newline at end of file
691 char tmp = str[position];
661 str[position] = str[(index-1)-position]; No newline at end of file
692 str[position] = str[(index-1)-position];
662 str[(index-1)-position] = tmp; No newline at end of file
693 str[(index-1)-position] = tmp;
663 } No newline at end of file
694 }
664 } No newline at end of file
695 }
665 No newline at end of file
696
666 No newline at end of file
697
667 //***************************************************************** No newline at end of file
698 //*****************************************************************
668 //ABS_monitoreo es la funci�n principal del proyecto ABS_Monitoreo. No newline at end of file
699 //ABS_monitoreo es la funci�n principal del proyecto ABS_Monitoreo.
669 //Esta funci�n es la que se debe agregar en otros c�digos. No newline at end of file
700 //Esta funci�n es la que se debe agregar en otros c�digos.
670 //***************************************************************** No newline at end of file
701 //*****************************************************************
671 char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth){ No newline at end of file
702 char* ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth){
672 No newline at end of file
703
673 //local variables No newline at end of file
704 //local variables
674 /* AT91S_PIO *pioc; No newline at end of file
705 /* AT91S_PIO *pioc;
675 pioc = pio_map(PIOC_BASE); No newline at end of file
706 pioc = pio_map(PIOC_BASE);
676 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 No newline at end of file
707 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
677 unsigned int mask_sel_atenuacion =PC5; No newline at end of file
708 unsigned int mask_sel_atenuacion =PC5;
678 unsigned int mask_sel_calibracion =PC6;*/ No newline at end of file
709 unsigned int mask_sel_calibracion =PC6;*/
679 No newline at end of file
710
680 unsigned long acumulado_ceros=0; No newline at end of file
711 unsigned long acumulado_ceros=0;
681 unsigned long acumulado_unos=0; No newline at end of file
712 unsigned long acumulado_unos=0;
682 /* AT91S_ADC *padc; No newline at end of file
713 /* AT91S_ADC *padc;
683 AT91S_ADC *padd;*/ No newline at end of file
714 AT91S_ADC *padd;*/
684 FILE *fp; No newline at end of file
715 FILE *fp;
685 long int results1[NSAMPLES], results2[NSAMPLES], results3[NSAMPLES], results4[NSAMPLES]; No newline at end of file
716 long int results1[NSAMPLES], results2[NSAMPLES], results3[NSAMPLES], results4[NSAMPLES];
686 unsigned int i=0; No newline at end of file
717 unsigned int i=0;
687 char fname[FNAMELEN]; No newline at end of file
718 char fname[FNAMELEN];
688 int j=0; No newline at end of file
719 int j=0;
689 time_t now; No newline at end of file
720 time_t now;
690 FILE *archivo; No newline at end of file
721 FILE *archivo;
691 float phase1; No newline at end of file
722 float phase1;
692 float phase2; No newline at end of file
723 float phase2;
693 char page0[30]; No newline at end of file
724 char page0[30];
694 char page1[20]; No newline at end of file
725 char page1[20];
695 No newline at end of file
726
696 int cnt = 0; No newline at end of file
727 int cnt = 0;
697 //system("./map_clock"); No newline at end of file
728 //system("./map_clock");
698 /* No newline at end of file
729 /*
699 if (configCLK() == 1) No newline at end of file
730 if (configCLK() == 1)
700 printf("clock ADC enable.\n"); No newline at end of file
731 printf("clock ADC enable.\n");
701 */ No newline at end of file
732 */
702 /* No newline at end of file
733 /*
703 //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. No newline at end of file
734 //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.
704 pio_enable(pioc, mask_sel_canal); No newline at end of file
735 pio_enable(pioc, mask_sel_canal);
705 pio_enable(pioc, mask_sel_atenuacion); No newline at end of file
736 pio_enable(pioc, mask_sel_atenuacion);
706 pio_enable(pioc, mask_sel_calibracion); No newline at end of file
737 pio_enable(pioc, mask_sel_calibracion);
707 pio_output_enable(pioc, mask_sel_canal); //configurar pc4 como salida No newline at end of file
738 pio_output_enable(pioc, mask_sel_canal); //configurar pc4 como salida
708 pio_output_enable(pioc, mask_sel_atenuacion); //configurar pc5 como salida No newline at end of file
739 pio_output_enable(pioc, mask_sel_atenuacion); //configurar pc5 como salida
709 pio_output_enable(pioc, mask_sel_calibracion); //configurar pc6 como salida No newline at end of file
740 pio_output_enable(pioc, mask_sel_calibracion); //configurar pc6 como salida
710 */ No newline at end of file
741 */
711 No newline at end of file
742
712 //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. No newline at end of file
743 //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.
713 /*if ( sel_atenuador == 1) No newline at end of file
744 /*if ( sel_atenuador == 1)
714 pio_out(pioc, mask_sel_atenuacion, sel_atenuador,1); No newline at end of file
745 pio_out(pioc, mask_sel_atenuacion, sel_atenuador,1);
715 else No newline at end of file
746 else
716 pio_out(pioc, mask_sel_atenuacion, sel_atenuador,0); No newline at end of file
747 pio_out(pioc, mask_sel_atenuacion, sel_atenuador,0);
717 if ( sel_calibracion == 1) No newline at end of file
748 if ( sel_calibracion == 1)
718 pio_out(pioc, mask_sel_calibracion, sel_calibracion,1); No newline at end of file
749 pio_out(pioc, mask_sel_calibracion, sel_calibracion,1);
719 else No newline at end of file
750 else
720 pio_out(pioc, mask_sel_calibracion, sel_calibracion,0);*/ No newline at end of file
751 pio_out(pioc, mask_sel_calibracion, sel_calibracion,0);*/
721 No newline at end of file
752
722 if ( sel_atenuador == 1) No newline at end of file
753 if ( sel_atenuador == 1)
723 acumulado_unos = acumulado_unos + (1 << 5); No newline at end of file
754 acumulado_unos = acumulado_unos + (1 << 5);
724 else No newline at end of file
755 else
725 acumulado_ceros = acumulado_ceros + (1 << 5); No newline at end of file
756 acumulado_ceros = acumulado_ceros + (1 << 5);
726 if ( sel_calibracion == 1) No newline at end of file
757 if ( sel_calibracion == 1)
727 acumulado_unos = acumulado_unos + (1 << 6); No newline at end of file
758 acumulado_unos = acumulado_unos + (1 << 6);
728 else No newline at end of file
759 else
729 acumulado_ceros = acumulado_ceros + (1 << 6); No newline at end of file
760 acumulado_ceros = acumulado_ceros + (1 << 6);
730 No newline at end of file
761
731 No newline at end of file
762
732 strcpy (fname, "/mnt/sd/absmonitoreo.txt"); //Direcci�n y nombre del archivo donde se desea guardar los datos. No newline at end of file
763 strcpy (fname, "/mnt/sd/absmonitoreo.txt"); //Direcci�n y nombre del archivo donde se desea guardar los datos.
733 No newline at end of file
764
734 if (fExists(fname)==0){ //si el archivo no existe, crea uno y le asigna el titulo No newline at end of file
765 if (fExists(fname)==0){ //si el archivo no existe, crea uno y le asigna el titulo
735 archivo = fopen(fname,"a+"); No newline at end of file
766 archivo = fopen(fname,"a+");
736 fprintf(archivo,"%s"," Registro de datos del ABS Control \n"); No newline at end of file
767 fprintf(archivo,"%s"," Registro de datos del ABS Control \n");
737 fprintf(archivo,"%s"," Fecha y hora Fase UP Fase DOWN\n"); No newline at end of file
768 fprintf(archivo,"%s"," Fecha y hora Fase UP Fase DOWN\n");
738 fclose(archivo); No newline at end of file
769 fclose(archivo);
739 } No newline at end of file
770 }
740 No newline at end of file
771
741 /* No newline at end of file
772 /*
742 //configure ADC Settings No newline at end of file
773 //configure ADC Settings
743 padc=configADC1(); No newline at end of file
774 padc=configADC1();
744 padd=configADC2(); No newline at end of file
775 padd=configADC2();
745 */ No newline at end of file
776 */
746 //while (1){ No newline at end of file
777 //while (1){
747 No newline at end of file
778
748 ENABLE_CHANNEL(padc, ADC_CH0+ADC_CH1); No newline at end of file
779 ENABLE_CHANNEL(padc, ADC_CH0+ADC_CH1);
749 printf("\nAdquiriendo datos...\n"); //Indica en el terminal que se est�n adquiriendo datos (muestreando la se�al). No newline at end of file
780 printf("\nAdquiriendo datos...\n"); //Indica en el terminal que se est�n adquiriendo datos (muestreando la se�al).
750 No newline at end of file
781
751 No newline at end of file
782
752 now = time(0); //Get current Time for File Name No newline at end of file
783 now = time(0); //Get current Time for File Name
753 No newline at end of file
784
754 //Se pone la salida de selecci�n de canal para seleccionar el canal 1 del detector de fase No newline at end of file
785 //Se pone la salida de selecci�n de canal para seleccionar el canal 1 del detector de fase
755 acumulado_ceros = acumulado_ceros + (1 << 4); No newline at end of file
786 acumulado_ceros = acumulado_ceros + (1 << 4);
756 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); No newline at end of file
787 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0);
757 pio_out(pioc, maskc_out_cntl, acumulado_unos, 1); No newline at end of file
788 pio_out(pioc, maskc_out_cntl, acumulado_unos, 1);
758 sleep(1); No newline at end of file
789 sleep(1);
759 No newline at end of file
790
760 //Se toman muestras para el canal 1 del detector de fase No newline at end of file
791 //Se toman muestras para el canal 1 del detector de fase
761 /*while(1){ No newline at end of file
792 /*while(1){
762 for(i=0; i < NSAMPLES; i++){ No newline at end of file
793 for(i=0; i < NSAMPLES; i++){
763 No newline at end of file
794
764 ADC_INIT(padc); No newline at end of file
795 ADC_INIT(padc);
765 results1[i] = GET_ADC0(padc); No newline at end of file
796 results1[i] = GET_ADC0(padc);
766 results2[i] = GET_ADC1(padd); No newline at end of file
797 results2[i] = GET_ADC1(padd);
767 } No newline at end of file
798 }
768 No newline at end of file
799
769 if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso. No newline at end of file
800 if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso.
770 break; No newline at end of file
801 break;
771 } No newline at end of file
802 }
772 No newline at end of file
803
773 }*/ No newline at end of file
804 }*/
774 No newline at end of file
805
775 do{ No newline at end of file
806 do{
776 for(i=0; i < NSAMPLES; i++){ No newline at end of file
807 for(i=0; i < NSAMPLES; i++){
777 No newline at end of file
808
778 ADC_INIT(padc); No newline at end of file
809 ADC_INIT(padc);
779 results1[i] = GET_ADC0(padc); No newline at end of file
810 results1[i] = GET_ADC0(padc);
780 results2[i] = GET_ADC1(padd); No newline at end of file
811 results2[i] = GET_ADC1(padd);
781 } No newline at end of file
812 }
782 No newline at end of file
813
783 if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso. No newline at end of file
814 if (checkTx(results1, results2, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 1 del datector de fase //correspondan a un pulso.
784 break; No newline at end of file
815 break;
785 } No newline at end of file
816 }
786 cnt += 1; No newline at end of file
817 cnt += 1;
787 }while (cnt < NLOOPS); No newline at end of file
818 }while (cnt < NLOOPS);
788 No newline at end of file
819
789 //Se pone la salida de selecci�n de canal para seleccionar el canal 2 del detector de fase No newline at end of file
820 //Se pone la salida de selecci�n de canal para seleccionar el canal 2 del detector de fase
790 acumulado_ceros = acumulado_ceros - (1 << 4); No newline at end of file
821 acumulado_ceros = acumulado_ceros - (1 << 4);
791 acumulado_unos = acumulado_unos + (1 << 4); No newline at end of file
822 acumulado_unos = acumulado_unos + (1 << 4);
792 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0); No newline at end of file
823 pio_out(pioc, maskc_out_cntl, acumulado_ceros, 0);
793 pio_out(pioc, maskc_out_cntl, acumulado_unos, 1); No newline at end of file
824 pio_out(pioc, maskc_out_cntl, acumulado_unos, 1);
794 sleep(1); No newline at end of file
825 sleep(1);
795 No newline at end of file
826
796 No newline at end of file
827
797 //Setoman muestras para el canal 2 del detector de fase No newline at end of file
828 //Setoman muestras para el canal 2 del detector de fase
798 /* while(1){ No newline at end of file
829 /* while(1){
799 for(i=0; i < NSAMPLES; i++){ No newline at end of file
830 for(i=0; i < NSAMPLES; i++){
800 No newline at end of file
831
801 ADC_INIT(padc); No newline at end of file
832 ADC_INIT(padc);
802 results3[i] = GET_ADC0(padc); No newline at end of file
833 results3[i] = GET_ADC0(padc);
803 results4[i] = GET_ADC1(padd); No newline at end of file
834 results4[i] = GET_ADC1(padd);
804 } No newline at end of file
835 }
805 No newline at end of file
836
806 if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso. No newline at end of file
837 if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso.
807 break; No newline at end of file
838 break;
808 } No newline at end of file
839 }
809 }*/ No newline at end of file
840 }*/
810 cnt = 0; No newline at end of file
841 cnt = 0;
811 do{ No newline at end of file
842 do{
812 for(i=0; i < NSAMPLES; i++){ No newline at end of file
843 for(i=0; i < NSAMPLES; i++){
813 No newline at end of file
844
814 ADC_INIT(padc); No newline at end of file
845 ADC_INIT(padc);
815 results3[i] = GET_ADC0(padc); No newline at end of file
846 results3[i] = GET_ADC0(padc);
816 results4[i] = GET_ADC1(padd); No newline at end of file
847 results4[i] = GET_ADC1(padd);
817 } No newline at end of file
848 }
818 No newline at end of file
849
819 if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso. No newline at end of file
850 if (checkTx(results3, results4, umbral, pulsewidth)==1){ //Se verifica que las muestras tomadas del canal 2 del detector de fase //correspondan a un pulso.
820 break; No newline at end of file
851 break;
821 } No newline at end of file
852 }
822 cnt += 1; No newline at end of file
853 cnt += 1;
823 }while(cnt < NLOOPS); No newline at end of file
854 }while(cnt < NLOOPS);
824 No newline at end of file
855
825 //Una vez que se ha encontrado un pulso en cada canal, se calcula la fase de ambos. No newline at end of file
856 //Una vez que se ha encontrado un pulso en cada canal, se calcula la fase de ambos.
826 No newline at end of file
857
827 phase1 = getPhase(results1, results2); //Calcular la fase del canal 1 del detector de fase. No newline at end of file
858 phase1 = getPhase(results1, results2); //Calcular la fase del canal 1 del detector de fase.
828 phase2 = getPhase(results3, results4); //Calcular la fase del canal 2 del detector de fase. No newline at end of file
859 phase2 = getPhase(results3, results4); //Calcular la fase del canal 2 del detector de fase.
829 //create Output File No newline at end of file
860 //create Output File
830 No newline at end of file
861
831 strcpy (fname, "/mnt/sd/absmonitoreo.txt"); No newline at end of file
862 strcpy (fname, "/mnt/sd/absmonitoreo.txt");
832 printf("\nTerminada la prueba # %d \n", j++); No newline at end of file
863 printf("\nTerminada la prueba # %d \n", j++);
833 fp=create_Output(fname, now); //Coloca la fecha y la hora en el archivo de texto No newline at end of file
864 fp=create_Output(fname, now); //Coloca la fecha y la hora en el archivo de texto
834 printf("mediana ch1 = %1.2f\n", phase1); //muestra resultado en terminal No newline at end of file
865 printf("mediana ch1 = %1.2f\n", phase1); //muestra resultado en terminal
835 printf("mediana ch2 = %1.2f\n", phase2); //muestra resultado en terminal No newline at end of file
866 printf("mediana ch2 = %1.2f\n", phase2); //muestra resultado en terminal
836 writeOutput(phase1, fp); //graba el resultado en el archivo de texto No newline at end of file
867 writeOutput(phase1, fp); //graba el resultado en el archivo de texto
837 writeOutput(phase2, fp); //graba el resultado en el archivo de texto No newline at end of file
868 writeOutput(phase2, fp); //graba el resultado en el archivo de texto
838 fprintf(fp, "\n"); //Pasa a la siguiente l�nea del archivo de texto No newline at end of file
869 fprintf(fp, "\n"); //Pasa a la siguiente l�nea del archivo de texto
839 fclose(fp); No newline at end of file
870 fclose(fp);
840 printf("Resultado guardado en %s \n", fname); No newline at end of file
871 printf("Resultado guardado en %s \n", fname);
841 No newline at end of file
872
842 sleep(1); No newline at end of file
873 sleep(1);
843 No newline at end of file
874
844 strcpy(page0,parameters.ID); No newline at end of file
875 strcpy(page0,parameters.ID);
845 strcat(page0,"\n-------\n"); No newline at end of file
876 strcat(page0,"\n-------\n");
846
877
No newline at end of file
878 //sprintf(page1,"UP:%1.2f DW:%1.2f\n",phase1, phase2);
847 sprintf(page1,"UP:%1.2f DW:%1.2f\n",phase1, phase2); No newline at end of file
No newline at end of file
879 sprintf(page1,"%1.2f %1.2f\n",phase1, phase2); No newline at end of file
848 strcat(page0,page1); No newline at end of file
880 strcat(page0,page1);
849 char *all_pages = malloc(strlen(page0)+1); No newline at end of file
881 char *all_pages = malloc(strlen(page0)+1);
850 strcpy(all_pages, page0); No newline at end of file
882 strcpy(all_pages, page0);
851 return all_pages; No newline at end of file
883 return all_pages;
852 No newline at end of file
884
853 // } No newline at end of file
885 // }
854 // return 0; No newline at end of file
886 // return 0;
855 } No newline at end of file
887 }
856 /*============================================================================= No newline at end of file
888 /*=============================================================================
857 Function definitions No newline at end of file
889 Function definitions
858 =============================================================================*/ No newline at end of file
890 =============================================================================*/
859 No newline at end of file
891
860 // Configures ADC registers in order to get a sample every 10us No newline at end of file
892 // Configures ADC registers in order to get a sample every 10us
861 AT91S_ADC * configADC1(void){ No newline at end of file
893 AT91S_ADC * configADC1(void){
862 //Variables a usar: No newline at end of file
894 //Variables a usar:
863 /* No newline at end of file
895 /*
864 unsigned int maskc_adc =PC0; //Usamos ADC0 y ADC1 No newline at end of file
896 unsigned int maskc_adc =PC0; //Usamos ADC0 y ADC1
865 No newline at end of file
897
866 //configuro pin: No newline at end of file
898 //configuro pin:
867 AT91S_PIO *pioc; No newline at end of file
899 AT91S_PIO *pioc;
868 pioc = pio_map(PIOC_BASE); No newline at end of file
900 pioc = pio_map(PIOC_BASE);
869 pin_adc_enable(pioc,maskc_adc); //Habilitamos PC0 para usar con ADC0 y 1 No newline at end of file
901 pin_adc_enable(pioc,maskc_adc); //Habilitamos PC0 para usar con ADC0 y 1
870 pio_disable_irq(pioc, maskc_adc); No newline at end of file
902 pio_disable_irq(pioc, maskc_adc);
871 pio_disable_multiple_driver(pioc, maskc_adc); No newline at end of file
903 pio_disable_multiple_driver(pioc, maskc_adc);
872 pio_disable_pull_ups(pioc, maskc_adc); No newline at end of file
904 pio_disable_pull_ups(pioc, maskc_adc);
873 pio_input_enable(pioc, maskc_adc); No newline at end of file
905 pio_input_enable(pioc, maskc_adc);
874 */ No newline at end of file
906 */
875 No newline at end of file
907
876 //Configuro el ADC: No newline at end of file
908 //Configuro el ADC:
877 //AT91S_ADC *padc; No newline at end of file
909 //AT91S_ADC *padc;
878 No newline at end of file
910
879 padc = adc_map1(ADC_BASE); No newline at end of file
911 padc = adc_map1(ADC_BASE);
880 No newline at end of file
912
881 //clock ADC = 1MHz No newline at end of file
913 //clock ADC = 1MHz
882 //time startup = 8us No newline at end of file
914 //time startup = 8us
883 //time sample and hold = 2us No newline at end of file
915 //time sample and hold = 2us
884 // hold No newline at end of file
916 // hold
885 // ___________ No newline at end of file
917 // ___________
886 // start ___________| |___________ No newline at end of file
918 // start ___________| |___________
887 // No newline at end of file
919 //
888 // | --1.2us-- | --0.15us-- | No newline at end of file
920 // | --1.2us-- | --0.15us-- |
889 //ADC_RESET(padc); No newline at end of file
921 //ADC_RESET(padc);
890 CONFIG_ADC(padc,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM); No newline at end of file
922 CONFIG_ADC(padc,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM);
891 ENABLE_CHANNEL(padc,ADC_CH0); //habilito canal 0 No newline at end of file
923 ENABLE_CHANNEL(padc,ADC_CH0); //habilito canal 0
892 return padc; No newline at end of file
924 return padc;
893 } No newline at end of file
925 }
894 No newline at end of file
926
895 AT91S_ADC * configADC2(void){ No newline at end of file
927 AT91S_ADC * configADC2(void){
896 //Variables a usar: No newline at end of file
928 //Variables a usar:
897 /* No newline at end of file
929 /*
898 unsigned int maskc_adc =PC1; //Usamos ADC0 y ADC1 No newline at end of file
930 unsigned int maskc_adc =PC1; //Usamos ADC0 y ADC1
899 No newline at end of file
931
900 //configuro pin: No newline at end of file
932 //configuro pin:
901 AT91S_PIO *piod; No newline at end of file
933 AT91S_PIO *piod;
902 piod = pio_map(PIOC_BASE); No newline at end of file
934 piod = pio_map(PIOC_BASE);
903 pin_adc_enable(piod,maskc_adc); //Habilitamos PC1 para usar con ADC0 y 1 No newline at end of file
935 pin_adc_enable(piod,maskc_adc); //Habilitamos PC1 para usar con ADC0 y 1
904 pio_disable_irq(piod, maskc_adc); No newline at end of file
936 pio_disable_irq(piod, maskc_adc);
905 pio_disable_multiple_driver(piod, maskc_adc); No newline at end of file
937 pio_disable_multiple_driver(piod, maskc_adc);
906 pio_disable_pull_ups(piod, maskc_adc); No newline at end of file
938 pio_disable_pull_ups(piod, maskc_adc);
907 pio_input_enable(piod, maskc_adc); No newline at end of file
939 pio_input_enable(piod, maskc_adc);
908 */ No newline at end of file
940 */
909 //Configuro el ADC: No newline at end of file
941 //Configuro el ADC:
910 //AT91S_ADC *padd; No newline at end of file
942 //AT91S_ADC *padd;
911 No newline at end of file
943
912 padd = adc_map1(ADC_BASE); No newline at end of file
944 padd = adc_map1(ADC_BASE);
913 No newline at end of file
945
914 //clock ADC = 1MHz No newline at end of file
946 //clock ADC = 1MHz
915 //time startup = 8us No newline at end of file
947 //time startup = 8us
916 //time sample and hold = 2us No newline at end of file
948 //time sample and hold = 2us
917 // hold No newline at end of file
949 // hold
918 // ___________ No newline at end of file
950 // ___________
919 // start ___________| |___________ No newline at end of file
951 // start ___________| |___________
920 // No newline at end of file
952 //
921 // | --1.2us-- | --0.15us-- | No newline at end of file
953 // | --1.2us-- | --0.15us-- |
922 //ADC_RESET(padc); No newline at end of file
954 //ADC_RESET(padc);
923 CONFIG_ADC(padd,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM); No newline at end of file
955 CONFIG_ADC(padd,ADC_TRGEN_DIS | ADC_RES_10BIT | ADC_SLEEP_NORMAL_MODE | ADC_PRESCAL | ADC_STARTUP | ADC_SHTIM);
924 ENABLE_CHANNEL(padd,ADC_CH1); //habilito canal 1 No newline at end of file
956 ENABLE_CHANNEL(padd,ADC_CH1); //habilito canal 1
925 return padd; No newline at end of file
957 return padd;
926 } No newline at end of file
958 }
927 No newline at end of file
959
928 No newline at end of file
960
929 //++++++++++++++++++++ No newline at end of file
961 //++++++++++++++++++++
930 No newline at end of file
962
931 //creats the output file with a timestamp in the name No newline at end of file
963 //creats the output file with a timestamp in the name
932 FILE * create_Output(char *fname, time_t rawtime){ No newline at end of file
964 FILE * create_Output(char *fname, time_t rawtime){
933 FILE *file; No newline at end of file
965 FILE *file;
934 char timestamp[80];//, counter[5]="dcv"; No newline at end of file
966 char timestamp[80];//, counter[5]="dcv";
935 //char str[4]; No newline at end of file
967 //char str[4];
936 struct tm * timeinfo; No newline at end of file
968 struct tm * timeinfo;
937 No newline at end of file
969
938 //format time No newline at end of file
970 //format time
939 timeinfo = localtime ( &rawtime ); No newline at end of file
971 timeinfo = localtime ( &rawtime );
940 strftime (timestamp,sizeof(timestamp),"%a %y-%m-%d %H:%M:%S %Z",timeinfo); No newline at end of file
972 strftime (timestamp,sizeof(timestamp),"%a %y-%m-%d %H:%M:%S %Z",timeinfo);
941 No newline at end of file
973
942 No newline at end of file
974
943 //Creates the file name out of the #define parameters No newline at end of file
975 //Creates the file name out of the #define parameters
944 No newline at end of file
976
945 strcpy (fname, "/mnt/sd/absmonitoreo.txt"); No newline at end of file
977 strcpy (fname, "/mnt/sd/absmonitoreo.txt");
946 file = fopen(fname,"a+"); No newline at end of file
978 file = fopen(fname,"a+");
947 fprintf(file,"%s", timestamp); No newline at end of file
979 fprintf(file,"%s", timestamp);
948 //printf("\nTerminada la prueba # %d. Guardando resultado en %s\n",r, fname); No newline at end of file
980 //printf("\nTerminada la prueba # %d. Guardando resultado en %s\n",r, fname);
949 //printf("\nTerminada la prueba # %d/%d. Writing data to the file %s\n",r+1 , REP, fname); No newline at end of file
981 //printf("\nTerminada la prueba # %d/%d. Writing data to the file %s\n",r+1 , REP, fname);
950 //printf("\nAAAAAAAAAA %d...%s\n", counter[1], fname); No newline at end of file
982 //printf("\nAAAAAAAAAA %d...%s\n", counter[1], fname);
951 // return file pointer No newline at end of file
983 // return file pointer
952 return file; No newline at end of file
984 return file;
953 } No newline at end of file
985 }
954 No newline at end of file
986
955 //++++++++++++++++++++ No newline at end of file
987 //++++++++++++++++++++
956 No newline at end of file
988
957 //tests if a file already exists. returns 1 if it exists and 0 if it doesn't No newline at end of file
989 //tests if a file already exists. returns 1 if it exists and 0 if it doesn't
958 No newline at end of file
990
959 No newline at end of file
991
960 No newline at end of file
992
961 //Funci�n checkTx verifica que la se�al muestreada corresponda a un pulso. No newline at end of file
993 //Funci�n checkTx verifica que la se�al muestreada corresponda a un pulso.
962 //results1 y results2 son los arreglos que contienen los datos muestreados por ambos canales del ADC del embebido. No newline at end of file
994 //results1 y results2 son los arreglos que contienen los datos muestreados por ambos canales del ADC del embebido.
963 //umbral indica qu� valor debe superar una muestra para considerarla un posible pulso o pico. No newline at end of file
995 //umbral indica qu� valor debe superar una muestra para considerarla un posible pulso o pico.
964 //pulsewidth indica cu�ntas muestras consecutivas deben superar el umbral para que se considere que se ha detectado un pulso. No newline at end of file
996 //pulsewidth indica cu�ntas muestras consecutivas deben superar el umbral para que se considere que se ha detectado un pulso.
965 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth){ No newline at end of file
997 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth){
966 No newline at end of file
998
967 int i, cont; No newline at end of file
999 int i, cont;
968 float z[NSAMPLES], sum, avg; No newline at end of file
1000 float z[NSAMPLES], sum, avg;
969 int isSignal, pulse; No newline at end of file
1001 int isSignal, pulse;
970 No newline at end of file
1002
971 for(i=0;i<NSAMPLES;i++){ No newline at end of file
1003 for(i=0;i<NSAMPLES;i++){
972 No newline at end of file
1004
973 z[i] =sqrt(1.0*results1[i]*results1[i]+1.0*results2[i]*results2[i]); No newline at end of file
1005 z[i] =sqrt(1.0*results1[i]*results1[i]+1.0*results2[i]*results2[i]);
974 } No newline at end of file
1006 }
975 No newline at end of file
1007
976 pulse = 0; No newline at end of file
1008 pulse = 0;
977 isSignal = 0; No newline at end of file
1009 isSignal = 0;
978 cont =0; No newline at end of file
1010 cont =0;
979 No newline at end of file
1011
980 sum = 0; No newline at end of file
1012 sum = 0;
981 for(i=0;i<NSAMPLES;i++){ No newline at end of file
1013 for(i=0;i<NSAMPLES;i++){
982 No newline at end of file
1014
983 sum += z[i]; No newline at end of file
1015 sum += z[i];
984 avg = sum/(i+1); No newline at end of file
1016 avg = sum/(i+1);
985 if ((z[i] - avg) > umbral){ No newline at end of file
1017 if ((z[i] - avg) > umbral){
986 if (isSignal == 1){ No newline at end of file
1018 if (isSignal == 1){
987 cont += 1; No newline at end of file
1019 cont += 1;
988 } No newline at end of file
1020 }
989 if (cont == pulsewidth){ No newline at end of file
1021 if (cont == pulsewidth){
990 pulse = 1; No newline at end of file
1022 pulse = 1;
991 break; No newline at end of file
1023 break;
992 } No newline at end of file
1024 }
993 isSignal = 1; No newline at end of file
1025 isSignal = 1;
994 continue; No newline at end of file
1026 continue;
995 isSignal = 0; No newline at end of file
1027 isSignal = 0;
996 cont = 0; No newline at end of file
1028 cont = 0;
997 } No newline at end of file
1029 }
998 } No newline at end of file
1030 }
999 No newline at end of file
1031
1000 return pulse; //devuelve un entero: 1 si se ha detectado pulso, de lo contrario, 0. No newline at end of file
1032 return pulse; //devuelve un entero: 1 si se ha detectado pulso, de lo contrario, 0.
1001 } No newline at end of file
1033 }
1002 No newline at end of file
1034
1003 No newline at end of file
1035
1004 int fExists(char * fname){ No newline at end of file
1036 int fExists(char * fname){
1005 FILE * file; No newline at end of file
1037 FILE * file;
1006 No newline at end of file
1038
1007 file = fopen (fname, "r"); No newline at end of file
1039 file = fopen (fname, "r");
1008 if (file == NULL) No newline at end of file
1040 if (file == NULL)
1009 { No newline at end of file
1041 {
1010 return 0; No newline at end of file
1042 return 0;
1011 } No newline at end of file
1043 }
1012 fclose(file); No newline at end of file
1044 fclose(file);
1013 return 1; No newline at end of file
1045 return 1;
1014 } No newline at end of file
1046 }
1015 No newline at end of file
1047
1016 No newline at end of file
1048
1017 //Funci�n que calcula la mediana de un conjunto de muestras No newline at end of file
1049 //Funci�n que calcula la mediana de un conjunto de muestras
1018 double mediana(long int *results,unsigned int cuenta){ No newline at end of file
1050 double mediana(long int *results,unsigned int cuenta){
1019 unsigned int i=0,j=0,aux=0; No newline at end of file
1051 unsigned int i=0,j=0,aux=0;
1020 No newline at end of file
1052
1021 double median=0; No newline at end of file
1053 double median=0;
1022 /*Calculo mediana */ No newline at end of file
1054 /*Calculo mediana */
1023 No newline at end of file
1055
1024 for(i=0;i<cuenta-1;i++){ No newline at end of file
1056 for(i=0;i<cuenta-1;i++){
1025 for (j=i+1;j<cuenta;j++){ No newline at end of file
1057 for (j=i+1;j<cuenta;j++){
1026 if(results[i]>results[j] ){ No newline at end of file
1058 if(results[i]>results[j] ){
1027 No newline at end of file
1059
1028 aux=results[i]; No newline at end of file
1060 aux=results[i];
1029 results[i]=results[j]; No newline at end of file
1061 results[i]=results[j];
1030 results[j]=aux; No newline at end of file
1062 results[j]=aux;
1031 No newline at end of file
1063
1032 } No newline at end of file
1064 }
1033 } No newline at end of file
1065 }
1034 No newline at end of file
1066
1035 } No newline at end of file
1067 }
1036 median=results[cuenta/2]; No newline at end of file
1068 median=results[cuenta/2];
1037 return median; No newline at end of file
1069 return median;
1038 } No newline at end of file
1070 }
1039 No newline at end of file
1071
1040 No newline at end of file
1072
1041 No newline at end of file
1073
1042 //Funci�n que halla la fase de la se�al. No newline at end of file
1074 //Funci�n que halla la fase de la se�al.
1043 //Tiene como entradas las muestras correspondientes a la parte real e imaginaria de la se�al. No newline at end of file
1075 //Tiene como entradas las muestras correspondientes a la parte real e imaginaria de la se�al.
1044 float getPhase(long int results1[],long int results2[]){ No newline at end of file
1076 float getPhase(long int results1[],long int results2[]){
1045 No newline at end of file
1077
1046 unsigned int count=0, i=0,umbral=1000; No newline at end of file
1078 unsigned int count=0, i=0,umbral=1000;
1047 //long int results1[]; No newline at end of file
1079 //long int results1[];
1048 //long int results2[]; No newline at end of file
1080 //long int results2[];
1049 long int power[NSAMPLES]; No newline at end of file
1081 long int power[NSAMPLES];
1050 long int sumI=0,sumQ=0,I[NSAMPLES], Q[NSAMPLES],II[NSAMPLES], QQ[NSAMPLES]; No newline at end of file
1082 long int sumI=0,sumQ=0,I[NSAMPLES], Q[NSAMPLES],II[NSAMPLES], QQ[NSAMPLES];
1051 double median1=0,median2=0; No newline at end of file
1083 double median1=0,median2=0;
1052 long int promedioI=0,promedioQ=0;/*Calculo mediana 1*/ No newline at end of file
1084 long int promedioI=0,promedioQ=0;/*Calculo mediana 1*/
1053 float resultado=0; No newline at end of file
1085 float resultado=0;
1054 No newline at end of file
1086
1055 for(i=0;i<NSAMPLES;i++){ No newline at end of file
1087 for(i=0;i<NSAMPLES;i++){
1056 No newline at end of file
1088
1057 I[i] =results1[i]; No newline at end of file
1089 I[i] =results1[i];
1058 Q[i] =results2[i]; No newline at end of file
1090 Q[i] =results2[i];
1059 } No newline at end of file
1091 }
1060 No newline at end of file
1092
1061 /*Calculo mediana 1*/ No newline at end of file
1093 /*Calculo mediana 1*/
1062 median1=mediana(I,NSAMPLES); No newline at end of file
1094 median1=mediana(I,NSAMPLES);
1063 No newline at end of file
1095
1064 /*Calculo mediana 2*/ No newline at end of file
1096 /*Calculo mediana 2*/
1065 median2=mediana(Q,NSAMPLES); No newline at end of file
1097 median2=mediana(Q,NSAMPLES);
1066 No newline at end of file
1098
1067 No newline at end of file
1099
1068 No newline at end of file
1100
1069 No newline at end of file
1101
1070 No newline at end of file
1102
1071 No newline at end of file
1103
1072 for(i=0;i<NSAMPLES;i++){ No newline at end of file
1104 for(i=0;i<NSAMPLES;i++){
1073 No newline at end of file
1105
1074 I[i] =results1[i]; No newline at end of file
1106 I[i] =results1[i];
1075 Q[i] =results2[i]; No newline at end of file
1107 Q[i] =results2[i];
1076 No newline at end of file
1108
1077 } No newline at end of file
1109 }
1078 No newline at end of file
1110
1079 No newline at end of file
1111
1080 No newline at end of file
1112
1081 for(i = 0; i < NSAMPLES ; i++){ No newline at end of file
1113 for(i = 0; i < NSAMPLES ; i++){
1082 No newline at end of file
1114
1083 I[i]=(I[i]-median1); No newline at end of file
1115 I[i]=(I[i]-median1);
1084 Q[i]=(Q[i]-median2); No newline at end of file
1116 Q[i]=(Q[i]-median2);
1085 No newline at end of file
1117
1086 } No newline at end of file
1118 }
1087 No newline at end of file
1119
1088 for(i = 0; i < NSAMPLES ; i++){ No newline at end of file
1120 for(i = 0; i < NSAMPLES ; i++){
1089 No newline at end of file
1121
1090 power[i]=I[i]*I[i]+Q[i]*Q[i]; No newline at end of file
1122 power[i]=I[i]*I[i]+Q[i]*Q[i];
1091 No newline at end of file
1123
1092 if(power[i] > umbral) No newline at end of file
1124 if(power[i] > umbral)
1093 { No newline at end of file
1125 {
1094 No newline at end of file
1126
1095 II[count]=I[i]; No newline at end of file
1127 II[count]=I[i];
1096 QQ[count]=Q[i]; No newline at end of file
1128 QQ[count]=Q[i];
1097 count=count+1; No newline at end of file
1129 count=count+1;
1098 No newline at end of file
1130
1099 } No newline at end of file
1131 }
1100 No newline at end of file
1132
1101 } No newline at end of file
1133 }
1102 No newline at end of file
1134
1103 for(i = 0; i < count ; i++){ No newline at end of file
1135 for(i = 0; i < count ; i++){
1104 No newline at end of file
1136
1105 sumI=sumI+II[i]; No newline at end of file
1137 sumI=sumI+II[i];
1106 sumQ=sumQ+QQ[i]; No newline at end of file
1138 sumQ=sumQ+QQ[i];
1107 No newline at end of file
1139
1108 } No newline at end of file
1140 }
1109 No newline at end of file
1141
1110 promedioI=sumI; No newline at end of file
1142 promedioI=sumI;
1111 promedioQ=sumQ; No newline at end of file
1143 promedioQ=sumQ;
1112 No newline at end of file
1144
1113 resultado = atan2(1.0*promedioI,1.0*promedioQ)*180/3.1416+62-44; No newline at end of file
1145 resultado = atan2(1.0*promedioI,1.0*promedioQ)*180/3.1416+62-44;
1114 No newline at end of file
1146
1115 No newline at end of file
1147
1116 return resultado; No newline at end of file
1148 return resultado;
1117 No newline at end of file
1149
1118 } No newline at end of file
1150 }
1119 No newline at end of file
1151
1120 No newline at end of file
1152
1121 No newline at end of file
1153
1122 //Funci�n que muestra la fase detectada en el terminal y tambi�n la graba en el archivo de texto. No newline at end of file
1154 //Funci�n que muestra la fase detectada en el terminal y tambi�n la graba en el archivo de texto.
1123 void writeOutput(float resultado, FILE * output){ No newline at end of file
1155 void writeOutput(float resultado, FILE * output){
1124 No newline at end of file
1156
1125 No newline at end of file
1157
1126 // No newline at end of file
1158 //
1127 No newline at end of file
1159
1128 fprintf(output," %1.2f ",resultado); //graba resultado en archivo .txt No newline at end of file
1160 fprintf(output," %1.2f ",resultado); //graba resultado en archivo .txt
1129 // No newline at end of file
1161 //
1130 No newline at end of file
1162
1131 } No newline at end of file
1163 }
1132 No newline at end of file
1164
1133 int configCLK(){ No newline at end of file
1165 int configCLK(){
1134 //configuro pin: No newline at end of file
1166 //configuro pin:
1135 AT91S_PMC *sys_clock; No newline at end of file
1167 AT91S_PMC *sys_clock;
1136 sys_clock = clock_map(CLOCK_BASE); No newline at end of file
1168 sys_clock = clock_map(CLOCK_BASE);
1137 enable_clock_adc(sys_clock); No newline at end of file
1169 enable_clock_adc(sys_clock);
1138 //printf("clock ADC enable.\n"); No newline at end of file
1170 //printf("clock ADC enable.\n");
1139 return 1; No newline at end of file
1171 return 1;
1140 } No newline at end of file
1172 }
@@ -1,4 +1,4
1 S01 No newline at end of file
1 CnMod01 No newline at end of file
2 parameter2 No newline at end of file
2 parameter2
3 parameter3 No newline at end of file
3 parameter3
4 parameter4 No newline at end of file
4 parameter4
General Comments 0
You need to be logged in to leave comments. Login now