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