##// END OF EJS Templates
Joining with abs monitoring.
imanay -
r116:117
parent child
Show More
@@ -0,0 +1,17
1 /*
No newline at end of file
2 * Mensajes.h
No newline at end of file
3 *
No newline at end of file
4 * Created on: Nov 12, 2009
No newline at end of file
5 * Author: redes
No newline at end of file
6 */
No newline at end of file
7
No newline at end of file
8 #ifndef MENSAJES_H_
No newline at end of file
9 #define MENSAJES_H_
No newline at end of file
10
No newline at end of file
11 void LOG_SERVIDOR(char *mensaje);
No newline at end of file
12 void LOG_CLIENTE(char *mensaje);
No newline at end of file
13 void ERROR_FATAL(char *mensaje);
No newline at end of file
14 void ERROR(char *mensaje);
No newline at end of file
15
No newline at end of file
16
No newline at end of file
17 #endif /* MENSAJES_H_ */ No newline at end of file
@@ -0,0 +1,124
1 // *****************************************************************************
No newline at end of file
2 // SOFTWARE API DEFINITION FOR Analog to Digital Convertor
No newline at end of file
3 // *****************************************************************************
No newline at end of file
4
No newline at end of file
5 #ifndef ADC_AT91_H
No newline at end of file
6 #define ADC_AT91_H
No newline at end of file
7
No newline at end of file
8 #define MAP_SIZE 4096Ul
No newline at end of file
9 #define MAP_MASK (MAP_SIZE - 1)
No newline at end of file
10
No newline at end of file
11 #define ADC_BASE 0xFFFE0000
No newline at end of file
12
No newline at end of file
13 // -------- ADC_CR : (ADC Offset: 0x0) ADC Control Register --------
No newline at end of file
14 #define ADC_SWRST ((unsigned int) 0x1 << 0) // (ADC) Software Reset
No newline at end of file
15 #define ADC_START ((unsigned int) 0x1 << 1) // (ADC) Start Conversion
No newline at end of file
16 // -------- ADC_MR : (ADC Offset: 0x4) ADC Mode Register --------
No newline at end of file
17 #define ADC_TRGEN_DIS ((unsigned int) 0x0) // (ADC) Hradware triggers are disabled. Starting a conversion is only possible by software
No newline at end of file
18 #define ADC_TRGEN_EN ((unsigned int) 0x1) // (ADC) Hardware trigger selected by TRGSEL field is enabled.
No newline at end of file
19
No newline at end of file
20 #define ADC_TRGSEL_TIOA0 ((unsigned int) 0x0 << 1) // (ADC) Selected TRGSEL = TIAO0
No newline at end of file
21 #define ADC_TRGSEL_TIOA1 ((unsigned int) 0x1 << 1) // (ADC) Selected TRGSEL = TIAO1
No newline at end of file
22 #define ADC_TRGSEL_TIOA2 ((unsigned int) 0x2 << 1) // (ADC) Selected TRGSEL = TIAO2
No newline at end of file
23 #define ADC_TRGSEL_TIOA3 ((unsigned int) 0x3 << 1) // (ADC) Selected TRGSEL = TIAO3
No newline at end of file
24 #define ADC_TRGSEL_TIOA4 ((unsigned int) 0x4 << 1) // (ADC) Selected TRGSEL = TIAO4
No newline at end of file
25 #define ADC_TRGSEL_TIOA5 ((unsigned int) 0x5 << 1) // (ADC) Selected TRGSEL = TIAO5
No newline at end of file
26 #define ADC_TRGSEL_EXT ((unsigned int) 0x6 << 1) // (ADC) Selected TRGSEL = External Trigger
No newline at end of file
27
No newline at end of file
28 #define ADC_RES_10BIT ((unsigned int) 0x0 << 4) // (ADC) 10-bit resolution
No newline at end of file
29 #define ADC_RES_8BIT ((unsigned int) 0x1 << 4) // (ADC) 8-bit resolution
No newline at end of file
30
No newline at end of file
31 #define ADC_SLEEP_NORMAL_MODE ((unsigned int) 0x0 << 5) // (ADC) Normal Mode
No newline at end of file
32 #define ADC_SLEEP_MODE ((unsigned int) 0x1 << 5) // (ADC) Sleep Mode
No newline at end of file
33
No newline at end of file
34 #define ADC_PRESCAL ((unsigned int) 0x31 << 2) // (ADC) Prescaler rate selection
No newline at end of file
35 #define ADC_STARTUP ((unsigned int) 0x00 << 2) // (ADC) Startup Time
No newline at end of file
36 #define ADC_SHTIM ((unsigned int) 0x01 << 9) // (ADC) Sample & Hold Time
No newline at end of file
37
No newline at end of file
38 // -------- ADC_CHER : (ADC Offset: 0x10) ADC Channel Enable Register --------
No newline at end of file
39 #define ADC_CH0 ((unsigned int) 0x1 << 0) // (ADC) Channel 0
No newline at end of file
40 #define ADC_CH1 ((unsigned int) 0x1 << 1) // (ADC) Channel 1
No newline at end of file
41 #define ADC_CH2 ((unsigned int) 0x1 << 2) // (ADC) Channel 2
No newline at end of file
42 #define ADC_CH3 ((unsigned int) 0x1 << 3) // (ADC) Channel 3
No newline at end of file
43
No newline at end of file
44 /*Anadido por DCordova*/
No newline at end of file
45 // -------- ADC_CHSR : (ADC Offset: 0x10) ADC Channel Status Register --------
No newline at end of file
46 #define ADC_CHSR0 ((unsigned int) 0x1 << 0) // (ADC) Channel 0
No newline at end of file
47 #define ADC_CHSR1 ((unsigned int) 0x1 << 1) // (ADC) Channel 1
No newline at end of file
48 #define ADC_CHSR2 ((unsigned int) 0x1 << 2) // (ADC) Channel 2
No newline at end of file
49 #define ADC_CHSR3 ((unsigned int) 0x1 << 3) // (ADC) Channel 3
No newline at end of file
50 /*Anadido por DCordova*/
No newline at end of file
51
No newline at end of file
52
No newline at end of file
53 // -------- ADC_CHDR : (ADC Offset: 0x14) ADC Channel Disable Register --------
No newline at end of file
54 // -------- ADC_CHSR : (ADC Offset: 0x18) ADC Channel Status Register --------
No newline at end of file
55 // -------- ADC_SR : (ADC Offset: 0x1c) ADC Status Register --------
No newline at end of file
56
No newline at end of file
57 #define MASK_EOC0 ((unsigned int) 0x1 << 0) // (ADC) End of Conversion
No newline at end of file
58 #define MASK_EOC1 ((unsigned int) 0x1 << 1) // (ADC) End of Conversion
No newline at end of file
59 #define MASK_EOC2 ((unsigned int) 0x1 << 2) // (ADC) End of Conversion
No newline at end of file
60 #define MASK_EOC3 ((unsigned int) 0x1 << 3) // (ADC) End of Conversion
No newline at end of file
61 #define MASK_OVRE0 ((unsigned int) 0x1 << 8) // (ADC) Overrun Error
No newline at end of file
62 #define MASK_OVRE1 ((unsigned int) 0x1 << 9) // (ADC) Overrun Error
No newline at end of file
63 #define MASK_OVRE2 ((unsigned int) 0x1 << 10) // (ADC) Overrun Error
No newline at end of file
64 #define MASK_OVRE3 ((unsigned int) 0x1 << 11) // (ADC) Overrun Error
No newline at end of file
65 #define MASK_DRDY ((unsigned int) 0x1 << 16) // (ADC) Data Ready
No newline at end of file
66 #define MASK_GOVRE ((unsigned int) 0x1 << 17) // (ADC) General Overrun
No newline at end of file
67
No newline at end of file
68 // -------- ADC_LCDR : (ADC Offset: 0x20) ADC Last Converted Data Register --------
No newline at end of file
69 #define ADC_LDATA ((unsigned int) 0x3FF << 0) // (ADC) Last Data Converted
No newline at end of file
70 #define ADC_DATA ((unsigned int) 0x3FF << 0) // (ADC) Converted Data
No newline at end of file
71 #define ADC_DISABLE_INTERRUP ((unsigned int) 0x0F0F0F << 0) //(ADC) Disable all interrup
No newline at end of file
72
No newline at end of file
73 typedef volatile unsigned int AT91_REG2;// Hardware register definition
No newline at end of file
74
No newline at end of file
75 typedef struct _AT91S_ADC {
No newline at end of file
76 AT91_REG2 ADC_CR; // ADC Control Register
No newline at end of file
77 AT91_REG2 ADC_MR; // ADC Mode Register
No newline at end of file
78 AT91_REG2 Reserved0[2]; //
No newline at end of file
79 AT91_REG2 ADC_CHER; // ADC Channel Enable Register
No newline at end of file
80 AT91_REG2 ADC_CHDR; // ADC Channel Disable Register
No newline at end of file
81 AT91_REG2 ADC_CHSR; // ADC Channel Status Register
No newline at end of file
82 AT91_REG2 ADC_SR; // ADC Status Register
No newline at end of file
83 AT91_REG2 ADC_LCDR; // ADC Last Converted Data Register
No newline at end of file
84 AT91_REG2 ADC_IER; // ADC Interrupt Enable Register
No newline at end of file
85 AT91_REG2 ADC_IDR; // ADC Interrupt Disable Register
No newline at end of file
86 AT91_REG2 ADC_IMR; // ADC Interrupt Mask Register
No newline at end of file
87 AT91_REG2 ADC_CDR0; // ADC Channel Data Register 0
No newline at end of file
88 AT91_REG2 ADC_CDR1; // ADC Channel Data Register 1
No newline at end of file
89 AT91_REG2 ADC_CDR2; // ADC Channel Data Register 2
No newline at end of file
90 AT91_REG2 ADC_CDR3; // ADC Channel Data Register 3
No newline at end of file
91 AT91_REG2 ADC_CDR4; // ADC Channel Data Register 4
No newline at end of file
92 AT91_REG2 ADC_CDR5; // ADC Channel Data Register 5
No newline at end of file
93 AT91_REG2 ADC_CDR6; // ADC Channel Data Register 6
No newline at end of file
94 AT91_REG2 ADC_CDR7; // ADC Channel Data Register 7
No newline at end of file
95 AT91_REG2 Reserved1[44]; //
No newline at end of file
96 AT91_REG2 ADC_RPR; // Receive Pointer Register
No newline at end of file
97 AT91_REG2 ADC_RCR; // Receive Counter Register
No newline at end of file
98 AT91_REG2 ADC_TPR; // Transmit Pointer Register
No newline at end of file
99 AT91_REG2 ADC_TCR; // Transmit Counter Register
No newline at end of file
100 AT91_REG2 ADC_RNPR; // Receive Next Pointer Register
No newline at end of file
101 AT91_REG2 ADC_RNCR; // Receive Next Counter Register
No newline at end of file
102 AT91_REG2 ADC_TNPR; // Transmit Next Pointer Register
No newline at end of file
103 AT91_REG2 ADC_TNCR; // Transmit Next Counter Register
No newline at end of file
104 AT91_REG2 ADC_PTCR; // PDC Transfer Control Register
No newline at end of file
105 AT91_REG2 ADC_PTSR; // PDC Transfer Status Register
No newline at end of file
106 } AT91S_ADC, *AT91PS_ADC;
No newline at end of file
107
No newline at end of file
108 AT91S_ADC *adc_map(unsigned int adcbase);
No newline at end of file
109 /**********************Aniadido por DCV*********/
No newline at end of file
110 AT91S_ADC *adc_map1(unsigned int adcbase);
No newline at end of file
111 /**********************Aniadido por DCV*********/
No newline at end of file
112
No newline at end of file
113 void ADC_INIT(AT91S_ADC * adc);
No newline at end of file
114 void ADC_RESET(AT91S_ADC * adc);
No newline at end of file
115 void CONFIG_ADC(AT91S_ADC * adc,unsigned int REG_CONFIG);
No newline at end of file
116 void ENABLE_CHANNEL(AT91S_ADC * adc,unsigned int CHANNEL);
No newline at end of file
117 unsigned int STATUS_CHANNEL(AT91S_ADC * adc);
No newline at end of file
118 unsigned int GET_ADC(AT91S_ADC * adc);
No newline at end of file
119 unsigned int GET_ADC0(AT91S_ADC * adc);
No newline at end of file
120 unsigned int GET_ADC1(AT91S_ADC * adc);
No newline at end of file
121 unsigned int GET_ADC3(AT91S_ADC * adc);
No newline at end of file
122 unsigned int ver_reg_mode(AT91S_ADC * adc);
No newline at end of file
123 unsigned int GET_STATUS(AT91S_ADC * adc);
No newline at end of file
124 #endif No newline at end of file
@@ -0,0 +1,137
1 /*
No newline at end of file
2 * This programmer uses AT91' GPIO lines
No newline at end of file
3 *
No newline at end of file
4 * 2006 by Carlos Camargo
No newline at end of file
5 * 2007.May.10 Andres Calderon
No newline at end of file
6 * 2009.Aug.26 Jose Francisco Quenta
No newline at end of file
7 */
No newline at end of file
8
No newline at end of file
9 #ifndef ECB_AT91_H
No newline at end of file
10 #define ECB_AT91_H
No newline at end of file
11
No newline at end of file
12
No newline at end of file
13 #define MAP_SIZE 4096Ul
No newline at end of file
14 #define MAP_MASK (MAP_SIZE - 1)
No newline at end of file
15
No newline at end of file
16 #define PIOA_BASE 0xFFFFF400
No newline at end of file
17 #define PIOB_BASE 0xFFFFF600
No newline at end of file
18 #define PIOC_BASE 0xFFFFF800
No newline at end of file
19 #define PIOD_BASE 0xFFFFFA00
No newline at end of file
20
No newline at end of file
21 #define PB0 (1 << 0)
No newline at end of file
22 #define PB1 (1 << 1)
No newline at end of file
23 #define PB2 (1 << 2)
No newline at end of file
24 #define PB3 (1 << 3)
No newline at end of file
25 #define PB8 (1 << 8)
No newline at end of file
26 #define PB9 (1 << 9)
No newline at end of file
27 #define PB10 (1 << 10)
No newline at end of file
28 #define PB11 (1 << 11)
No newline at end of file
29 #define PB16 (1 << 16)
No newline at end of file
30 #define PB17 (1 << 17)
No newline at end of file
31 #define PB18 (1 << 18)
No newline at end of file
32 #define PB19 (1 << 19)
No newline at end of file
33 #define PB20 (1 << 20)
No newline at end of file
34 #define PB21 (1 << 21)
No newline at end of file
35 #define PB22 (1 << 22)
No newline at end of file
36 #define PB23 (1 << 23)
No newline at end of file
37 #define PB24 (1 << 24)
No newline at end of file
38 #define PB25 (1 << 25)
No newline at end of file
39 #define PB30 (1 << 30)
No newline at end of file
40 #define PB31 (1 << 31)
No newline at end of file
41
No newline at end of file
42 #define PC0 (1 << 0)
No newline at end of file
43 #define PC1 (1 << 1)
No newline at end of file
44 #define PC4 (1 << 4)
No newline at end of file
45 #define PC5 (1 << 5)
No newline at end of file
46 #define PC6 (1 << 6)
No newline at end of file
47 #define PC7 (1 << 7)
No newline at end of file
48 #define PC8 (1 << 8)
No newline at end of file
49 #define PC9 (1 << 9)
No newline at end of file
50 #define PC10 (1 << 10)
No newline at end of file
51 #define PC11 (1 << 11)
No newline at end of file
52 #define PC16 (1 << 16)
No newline at end of file
53 #define PC17 (1 << 17)
No newline at end of file
54 #define PC18 (1 << 18)
No newline at end of file
55 #define PC19 (1 << 19)
No newline at end of file
56 #define PC20 (1 << 20)
No newline at end of file
57 #define PC21 (1 << 21)
No newline at end of file
58 #define PC22 (1 << 22)
No newline at end of file
59 #define PC23 (1 << 23)
No newline at end of file
60 #define PC24 (1 << 24)
No newline at end of file
61 #define PC25 (1 << 25)
No newline at end of file
62 #define PC26 (1 << 26)
No newline at end of file
63 #define PC27 (1 << 27)
No newline at end of file
64 #define PC28 (1 << 28)
No newline at end of file
65 #define PC29 (1 << 29)
No newline at end of file
66 #define PC30 (1 << 30)
No newline at end of file
67 #define PC31 (1 << 31)
No newline at end of file
68
No newline at end of file
69
No newline at end of file
70 typedef volatile unsigned int AT91_REG;
No newline at end of file
71 /* Hardware register definition */
No newline at end of file
72
No newline at end of file
73 typedef struct _AT91S_PIO {
No newline at end of file
74 AT91_REG PIO_PER; /* PIO Enable Register */
No newline at end of file
75 AT91_REG PIO_PDR; /* PIO Disable Register */
No newline at end of file
76 AT91_REG PIO_PSR; /* PIO Status Register */
No newline at end of file
77 AT91_REG Reserved0[1];
No newline at end of file
78 AT91_REG PIO_OER; /* Output Enable Register */
No newline at end of file
79 AT91_REG PIO_ODR; /* Output Disable Registerr */
No newline at end of file
80 AT91_REG PIO_OSR; /* Output Status Register */
No newline at end of file
81 AT91_REG Reserved1[1];
No newline at end of file
82 AT91_REG PIO_IFER; /* Input Filter Enable Register */
No newline at end of file
83 AT91_REG PIO_IFDR; /* Input Filter Disable Register */
No newline at end of file
84 AT91_REG PIO_IFSR; /* Input Filter Status Register */
No newline at end of file
85 AT91_REG Reserved2[1];
No newline at end of file
86 AT91_REG PIO_SODR; /* Set Output Data Register */
No newline at end of file
87 AT91_REG PIO_CODR; /* Clear Output Data Register */
No newline at end of file
88 AT91_REG PIO_ODSR; /* Output Data Status Register */
No newline at end of file
89 AT91_REG PIO_PDSR; /* Pin Data Status Register */
No newline at end of file
90 AT91_REG PIO_IER; /* Interrupt Enable Register */
No newline at end of file
91 AT91_REG PIO_IDR; /* Interrupt Disable Register */
No newline at end of file
92 AT91_REG PIO_IMR; /* Interrupt Mask Register */
No newline at end of file
93 AT91_REG PIO_ISR; /* Interrupt Status Register */
No newline at end of file
94 AT91_REG PIO_MDER; /* Multi-driver Enable Register */
No newline at end of file
95 AT91_REG PIO_MDDR; /* Multi-driver Disable Register */
No newline at end of file
96 AT91_REG PIO_MDSR; /* Multi-driver Status Register */
No newline at end of file
97 AT91_REG Reserved3[1];
No newline at end of file
98 AT91_REG PIO_PUDR; /* Pull-up Disable Register */
No newline at end of file
99 AT91_REG PIO_PUER; /* Pull-up Enable Register */
No newline at end of file
100 AT91_REG PIO_PUSR; /* Pad Pull-up Status Register */
No newline at end of file
101 AT91_REG Reserved4[1];
No newline at end of file
102 AT91_REG PIO_ASR; /* Select A Register */
No newline at end of file
103 AT91_REG PIO_BSR; /* Select B Register */
No newline at end of file
104 AT91_REG PIO_ABSR; /* AB Select Status Register */
No newline at end of file
105 AT91_REG Reserved5[9];
No newline at end of file
106 AT91_REG PIO_OWER; /* Output Write Enable Register */
No newline at end of file
107 AT91_REG PIO_OWDR; /* Output Write Disable Register */
No newline at end of file
108 AT91_REG PIO_OWSR; /* Output Write Status Register */
No newline at end of file
109 } AT91S_PIO, *AT91PS_PIO;
No newline at end of file
110
No newline at end of file
111 void pio_out(AT91S_PIO * pio, int mask, unsigned long val, int opcion);
No newline at end of file
112
No newline at end of file
113 int pio_in(AT91S_PIO * pio, int mask);
No newline at end of file
114
No newline at end of file
115 AT91S_PIO *pio_map(unsigned int piobase);
No newline at end of file
116
No newline at end of file
117 void pio_enable(AT91S_PIO * pio, int mask);
No newline at end of file
118
No newline at end of file
119 void pio_output_enable(AT91S_PIO * pio, int mask);
No newline at end of file
120
No newline at end of file
121 void pio_input_enable(AT91S_PIO * pio, int mask);
No newline at end of file
122
No newline at end of file
123 void pio_disable_irq(AT91S_PIO * pio, int mask);
No newline at end of file
124
No newline at end of file
125 void pio_disable_multiple_driver(AT91S_PIO * pio, int mask);
No newline at end of file
126
No newline at end of file
127 void pio_disable_pull_ups(AT91S_PIO * pio, int mask);
No newline at end of file
128
No newline at end of file
129 void pio_synchronous_data_output(AT91S_PIO * pio, int mask);
No newline at end of file
130
No newline at end of file
131 //funciones agregadas para la realizar el estado de algunos registros:
No newline at end of file
132 int ver_registro(AT91S_PIO * pio);
No newline at end of file
133 void pin_adc_enable(AT91S_PIO * pio, int mask);
No newline at end of file
134 void periferico_a(AT91S_PIO * pio, int mask);
No newline at end of file
135 int ver_periferico(AT91S_PIO * pio);
No newline at end of file
136
No newline at end of file
137 #endif No newline at end of file
@@ -0,0 +1,83
1 // *****************************************************************************
No newline at end of file
2 // SOFTWARE API DEFINITION FOR Power Management Controler
No newline at end of file
3 // *****************************************************************************
No newline at end of file
4 #ifndef SYSCLOCK_AT91_H
No newline at end of file
5 #define SYSCLOCK_AT91_H
No newline at end of file
6
No newline at end of file
7 #define MAP_SIZE 4096Ul
No newline at end of file
8 #define MAP_MASK (MAP_SIZE - 1)
No newline at end of file
9
No newline at end of file
10 #define CLOCK_BASE 0xFFFFFC00
No newline at end of file
11 // -------- PMC_SCER : (PMC Offset: 0x0) System Clock Enable Register --------
No newline at end of file
12 #define AT91C_PMC_PCK ((unsigned int) 0x1 << 0) // (PMC) Processor Clock
No newline at end of file
13 #define AT91C_PMC_UHP ((unsigned int) 0x1 << 6) // (PMC) USB Host Port Clock
No newline at end of file
14 #define AT91C_PMC_UDP ((unsigned int) 0x1 << 7) // (PMC) USB Device Port Clock
No newline at end of file
15 #define AT91C_PMC_PCK0 ((unsigned int) 0x1 << 8) // (PMC) Programmable Clock Output
No newline at end of file
16 #define AT91C_PMC_PCK1 ((unsigned int) 0x1 << 9) // (PMC) Programmable Clock Output
No newline at end of file
17 #define AT91C_PMC_HCK0 ((unsigned int) 0x1 << 16) // (PMC) AHB UHP Clock Output
No newline at end of file
18 #define AT91C_PMC_HCK1 ((unsigned int) 0x1 << 17) // (PMC) AHB LCDC Clock Output
No newline at end of file
19 // -------- PMC_SCDR : (PMC Offset: 0x4) System Clock Disable Register --------
No newline at end of file
20 // -------- PMC_SCSR : (PMC Offset: 0x8) System Clock Status Register --------
No newline at end of file
21 // -------- CKGR_MOR : (PMC Offset: 0x20) Main Oscillator Register --------
No newline at end of file
22 // -------- CKGR_MCFR : (PMC Offset: 0x24) Main Clock Frequency Register --------
No newline at end of file
23 // -------- CKGR_PLLAR : (PMC Offset: 0x28) PLL A Register --------
No newline at end of file
24 // -------- CKGR_PLLBR : (PMC Offset: 0x2c) PLL B Register --------
No newline at end of file
25 // -------- PMC_MCKR : (PMC Offset: 0x30) Master Clock Register --------
No newline at end of file
26 #define AT91C_PMC_CSS ((unsigned int) 0x3 << 0) // (PMC) Programmable Clock Selection
No newline at end of file
27 #define AT91C_PMC_CSS_SLOW_CLK ((unsigned int) 0x0) // (PMC) Slow Clock is selected
No newline at end of file
28 #define AT91C_PMC_CSS_MAIN_CLK ((unsigned int) 0x1) // (PMC) Main Clock is selected
No newline at end of file
29 #define AT91C_PMC_CSS_PLLA_CLK ((unsigned int) 0x2) // (PMC) Clock from PLL A is selected
No newline at end of file
30 #define AT91C_PMC_CSS_PLLB_CLK ((unsigned int) 0x3) // (PMC) Clock from PLL B is selected
No newline at end of file
31 #define AT91C_PMC_PRES ((unsigned int) 0x7 << 2) // (PMC) Programmable Clock Prescaler
No newline at end of file
32 #define AT91C_PMC_PRES_CLK ((unsigned int) 0x0 << 2) // (PMC) Selected clock
No newline at end of file
33 #define AT91C_PMC_PRES_CLK_2 ((unsigned int) 0x1 << 2) // (PMC) Selected clock divided by 2
No newline at end of file
34 #define AT91C_PMC_PRES_CLK_4 ((unsigned int) 0x2 << 2) // (PMC) Selected clock divided by 4
No newline at end of file
35 #define AT91C_PMC_PRES_CLK_8 ((unsigned int) 0x3 << 2) // (PMC) Selected clock divided by 8
No newline at end of file
36 #define AT91C_PMC_PRES_CLK_16 ((unsigned int) 0x4 << 2) // (PMC) Selected clock divided by 16
No newline at end of file
37 #define AT91C_PMC_PRES_CLK_32 ((unsigned int) 0x5 << 2) // (PMC) Selected clock divided by 32
No newline at end of file
38 #define AT91C_PMC_PRES_CLK_64 ((unsigned int) 0x6 << 2) // (PMC) Selected clock divided by 64
No newline at end of file
39 #define AT91C_PMC_MDIV ((unsigned int) 0x3 << 8) // (PMC) Master Clock Division
No newline at end of file
40 #define AT91C_PMC_MDIV_1 ((unsigned int) 0x0 << 8) // (PMC) The master clock and the processor clock are the same
No newline at end of file
41 #define AT91C_PMC_MDIV_2 ((unsigned int) 0x1 << 8) // (PMC) The processor clock is twice as fast as the master clock
No newline at end of file
42 #define AT91C_PMC_MDIV_3 ((unsigned int) 0x2 << 8) // (PMC) The processor clock is four times faster than the master clock
No newline at end of file
43 // -------- PMC_PCKR : (PMC Offset: 0x40) Programmable Clock Register --------
No newline at end of file
44 // -------- PMC_IER : (PMC Offset: 0x60) PMC Interrupt Enable Register --------
No newline at end of file
45 #define AT91C_PMC_MOSCS ((unsigned int) 0x1 << 0) // (PMC) MOSC Status/Enable/Disable/Mask
No newline at end of file
46 #define AT91C_PMC_LOCKA ((unsigned int) 0x1 << 1) // (PMC) PLL A Status/Enable/Disable/Mask
No newline at end of file
47 #define AT91C_PMC_LOCKB ((unsigned int) 0x1 << 2) // (PMC) PLL B Status/Enable/Disable/Mask
No newline at end of file
48 #define AT91C_PMC_MCKRDY ((unsigned int) 0x1 << 3) // (PMC) Master Clock Status/Enable/Disable/Mask
No newline at end of file
49 #define AT91C_PMC_PCK0RDY ((unsigned int) 0x1 << 8) // (PMC) PCK0_RDY Status/Enable/Disable/Mask
No newline at end of file
50 #define AT91C_PMC_PCK1RDY ((unsigned int) 0x1 << 9) // (PMC) PCK1_RDY Status/Enable/Disable/Mask
No newline at end of file
51 // -------- PMC_IDR : (PMC Offset: 0x64) PMC Interrupt Disable Register --------
No newline at end of file
52 // -------- PMC_SR : (PMC Offset: 0x68) PMC Status Register --------
No newline at end of file
53 // -------- PMC_IMR : (PMC Offset: 0x6c) PMC Interrupt Mask Register --------
No newline at end of file
54
No newline at end of file
55 typedef volatile unsigned int AT91_REG3;// Hardware register definition
No newline at end of file
56 typedef struct _AT91S_PMC {
No newline at end of file
57 AT91_REG3 PMC_SCER; // System Clock Enable Register
No newline at end of file
58 AT91_REG3 PMC_SCDR; // System Clock Disable Register
No newline at end of file
59 AT91_REG3 PMC_SCSR; // System Clock Status Register
No newline at end of file
60 AT91_REG3 Reserved0[1]; //
No newline at end of file
61 AT91_REG3 PMC_PCER; // Peripheral Clock Enable Register
No newline at end of file
62 AT91_REG3 PMC_PCDR; // Peripheral Clock Disable Register
No newline at end of file
63 AT91_REG3 PMC_PCSR; // Peripheral Clock Status Register
No newline at end of file
64 AT91_REG3 Reserved1[1]; //
No newline at end of file
65 AT91_REG3 PMC_MOR; // Main Oscillator Register
No newline at end of file
66 AT91_REG3 PMC_MCFR; // Main Clock Frequency Register
No newline at end of file
67 AT91_REG3 PMC_PLLAR; // PLL A Register
No newline at end of file
68 AT91_REG3 PMC_PLLBR; // PLL B Register
No newline at end of file
69 AT91_REG3 PMC_MCKR; // Master Clock Register
No newline at end of file
70 AT91_REG3 Reserved2[3]; //
No newline at end of file
71 AT91_REG3 PMC_PCKR[8]; // Programmable Clock Register
No newline at end of file
72 AT91_REG3 PMC_IER; // Interrupt Enable Register
No newline at end of file
73 AT91_REG3 PMC_IDR; // Interrupt Disable Register
No newline at end of file
74 AT91_REG3 PMC_SR; // Status Register
No newline at end of file
75 AT91_REG3 PMC_IMR; // Interrupt Mask Register
No newline at end of file
76 } AT91S_PMC, *AT91PS_PMC;
No newline at end of file
77
No newline at end of file
78 //Funciones:
No newline at end of file
79 AT91S_PMC *clock_map(unsigned int clockbase);
No newline at end of file
80 void enable_clock_adc(AT91S_PMC * clock);
No newline at end of file
81 unsigned int status_clock_adc(AT91S_PMC * clock);
No newline at end of file
82 #endif
No newline at end of file
83 No newline at end of file
@@ -0,0 +1,39
1 /*
No newline at end of file
2 * Mensajes.c
No newline at end of file
3 *
No newline at end of file
4 * Created on: Nov 12, 2009
No newline at end of file
5 * Author: Jose Francisco Quenta
No newline at end of file
6 */
No newline at end of file
7
No newline at end of file
8 #include <stdio.h>
No newline at end of file
9 #include <stdlib.h>
No newline at end of file
10
No newline at end of file
11 /*
No newline at end of file
12 * Imprime mensajes del servidor
No newline at end of file
13 */
No newline at end of file
14 void LOG_SERVIDOR(char *mensaje){
No newline at end of file
15 printf("SERVIDOR: %s\n",mensaje);
No newline at end of file
16 }
No newline at end of file
17
No newline at end of file
18 /*
No newline at end of file
19 * Imprime mensajes del cliente
No newline at end of file
20 */
No newline at end of file
21 void LOG_CLIENTE(char *mensaje){
No newline at end of file
22 printf("CLIENTE: %s\n",mensaje);
No newline at end of file
23 }
No newline at end of file
24
No newline at end of file
25 /*
No newline at end of file
26 * Error no fatal, permite la continuación del programa
No newline at end of file
27 */
No newline at end of file
28 void ERROR(char *mensaje){
No newline at end of file
29 fprintf(stderr, "ERROR. %s\n", mensaje);
No newline at end of file
30 }
No newline at end of file
31
No newline at end of file
32 /*
No newline at end of file
33 * Error fatal, aborta la ejecución del programa con código de salida de error
No newline at end of file
34 */
No newline at end of file
35 void ERROR_FATAL(char *mensaje){
No newline at end of file
36 fprintf(stderr, "ERROR FATAL. %s\n", mensaje);
No newline at end of file
37 exit(EXIT_FAILURE);
No newline at end of file
38 }
No newline at end of file
39 No newline at end of file
@@ -0,0 +1,138
1 /*
No newline at end of file
2 * This programmer uses AT91' ADC Module
No newline at end of file
3 *
No newline at end of file
4 * 2010 by Ricardo V. Rojas Quispe
No newline at end of file
5 */
No newline at end of file
6
No newline at end of file
7 #include <stdint.h>
No newline at end of file
8 #include <stdlib.h>
No newline at end of file
9 #include <stdio.h>
No newline at end of file
10 #include <unistd.h>
No newline at end of file
11
No newline at end of file
12 #include <sys/types.h>
No newline at end of file
13 #include <sys/stat.h>
No newline at end of file
14 #include <sys/mman.h>
No newline at end of file
15 #include <fcntl.h>
No newline at end of file
16
No newline at end of file
17 #include "./Librerias/at91adc.h"
No newline at end of file
18
No newline at end of file
19 AT91S_ADC *adc_map(unsigned int adcbase){
No newline at end of file
20 int fd;
No newline at end of file
21 void *base;
No newline at end of file
22
No newline at end of file
23 AT91S_ADC *adc;
No newline at end of file
24
No newline at end of file
25 off_t addr = adcbase;
No newline at end of file
26
No newline at end of file
27 if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
No newline at end of file
28 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
29 exit(EXIT_FAILURE);
No newline at end of file
30 }
No newline at end of file
31
No newline at end of file
32
No newline at end of file
33 base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK);
No newline at end of file
34
No newline at end of file
35 if (base == (void *) -1) {
No newline at end of file
36 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
37 exit(EXIT_FAILURE);
No newline at end of file
38 }
No newline at end of file
39
No newline at end of file
40
No newline at end of file
41 adc = base + (addr & MAP_MASK);
No newline at end of file
42
No newline at end of file
43 return adc;
No newline at end of file
44 }
No newline at end of file
45 /**********************Anadido por DCV*ini********/
No newline at end of file
46 AT91S_ADC *adc_map1(unsigned int adcbase){
No newline at end of file
47 int fd;
No newline at end of file
48 void *base;
No newline at end of file
49
No newline at end of file
50 AT91S_ADC *adc;
No newline at end of file
51
No newline at end of file
52 off_t addr = adcbase;
No newline at end of file
53
No newline at end of file
54 if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
No newline at end of file
55 //fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
56 exit(EXIT_FAILURE);
No newline at end of file
57 }
No newline at end of file
58
No newline at end of file
59 base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK);
No newline at end of file
60
No newline at end of file
61 if (base == (void *) -1) {
No newline at end of file
62 //fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
63 exit(EXIT_FAILURE);
No newline at end of file
64 }
No newline at end of file
65
No newline at end of file
66 adc = base + (addr & MAP_MASK);
No newline at end of file
67
No newline at end of file
68 return adc;
No newline at end of file
69 }
No newline at end of file
70
No newline at end of file
71 /*********************Anadido por DCV*fin**********/
No newline at end of file
72 void ADC_INIT(AT91S_ADC * adc){
No newline at end of file
73 //Incia conversion ADC
No newline at end of file
74 adc->ADC_CR = ADC_START;
No newline at end of file
75 }
No newline at end of file
76
No newline at end of file
77 void ADC_RESET(AT91S_ADC * adc){
No newline at end of file
78 //Reset de ADC
No newline at end of file
79 adc->ADC_CR = ADC_SWRST;
No newline at end of file
80 }
No newline at end of file
81 void CONFIG_ADC(AT91S_ADC * adc,unsigned int REG_CONFIG){
No newline at end of file
82 //configura ADC
No newline at end of file
83 adc->ADC_MR = REG_CONFIG;
No newline at end of file
84 adc->ADC_IDR = ADC_DISABLE_INTERRUP;
No newline at end of file
85 }
No newline at end of file
86 void ENABLE_CHANNEL(AT91S_ADC * adc,unsigned int CHANNEL){
No newline at end of file
87 //Habilita canal selecconado y deshabilita el resto
No newline at end of file
88 adc->ADC_CHER = CHANNEL & 0x0F;
No newline at end of file
89 adc->ADC_CHDR = ~CHANNEL & 0x0F;
No newline at end of file
90 }
No newline at end of file
91 unsigned int STATUS_CHANNEL(AT91S_ADC * adc){
No newline at end of file
92 //Retorna el estado del canal habilitado
No newline at end of file
93 return (adc->ADC_CHSR);
No newline at end of file
94 }
No newline at end of file
95 unsigned int GET_ADC(AT91S_ADC * adc){
No newline at end of file
96 //unsigned int valor=1;
No newline at end of file
97 //Retorna el valor de ADC (resolucion de 10BIT)
No newline at end of file
98 while(1){
No newline at end of file
99 if ((adc-> ADC_SR & MASK_DRDY) == MASK_DRDY)
No newline at end of file
100 break;
No newline at end of file
101 }
No newline at end of file
102 return (adc->ADC_LCDR & ADC_LDATA);
No newline at end of file
103 }
No newline at end of file
104 unsigned int GET_STATUS(AT91S_ADC * adc){
No newline at end of file
105 //Retorna el estado del ADC (registro)
No newline at end of file
106 return (adc->ADC_SR);
No newline at end of file
107 }
No newline at end of file
108 unsigned int GET_ADC0(AT91S_ADC * adc){
No newline at end of file
109 //Retorna el valor de la conversion del canal 0
No newline at end of file
110 while(1){
No newline at end of file
111 if ((adc->ADC_SR & MASK_EOC0) == MASK_EOC0)
No newline at end of file
112 break;
No newline at end of file
113 }
No newline at end of file
114 return (adc->ADC_CDR0 & ADC_LDATA);
No newline at end of file
115 }
No newline at end of file
116 unsigned int GET_ADC1(AT91S_ADC * adc){
No newline at end of file
117 //Retorna el valor de la conversion del canal 1
No newline at end of file
118 while(1){
No newline at end of file
119 if ((adc->ADC_SR & MASK_EOC1) == MASK_EOC1)
No newline at end of file
120 break;
No newline at end of file
121 }
No newline at end of file
122 return (adc->ADC_CDR1 & ADC_LDATA);
No newline at end of file
123 }
No newline at end of file
124 unsigned int GET_ADC3(AT91S_ADC * adc){
No newline at end of file
125 unsigned int valor=1;
No newline at end of file
126 //Retorna el valor de ADC (resolucion de 10BIT)
No newline at end of file
127 while(valor){
No newline at end of file
128 if ((adc-> ADC_SR) & 0x10000)
No newline at end of file
129 valor = 0;
No newline at end of file
130 else
No newline at end of file
131 valor = 1;
No newline at end of file
132 }
No newline at end of file
133 return (adc->ADC_CDR1 & ADC_DATA);
No newline at end of file
134 }
No newline at end of file
135 unsigned int ver_reg_mode(AT91S_ADC * adc){
No newline at end of file
136 //retorna el valor del ADC_MR
No newline at end of file
137 return (adc->ADC_MR);
No newline at end of file
138 } No newline at end of file
@@ -0,0 +1,119
1 /*
No newline at end of file
2 * This programmer uses AT91' GPIO lines
No newline at end of file
3 *
No newline at end of file
4 * 2006 by Carlos Camargo
No newline at end of file
5 * 2007.May.10 Andres Calderon
No newline at end of file
6 * 2009.Aug.26 Jose Francisco Quenta
No newline at end of file
7 */
No newline at end of file
8
No newline at end of file
9 #include <stdint.h>
No newline at end of file
10 #include <stdlib.h>
No newline at end of file
11 #include <stdio.h>
No newline at end of file
12 #include <unistd.h>
No newline at end of file
13
No newline at end of file
14
No newline at end of file
15 #include <sys/types.h>
No newline at end of file
16 #include <sys/stat.h>
No newline at end of file
17 #include <sys/mman.h>
No newline at end of file
18 #include <fcntl.h>
No newline at end of file
19
No newline at end of file
20 #include "./Librerias/at91gpio.h"
No newline at end of file
21
No newline at end of file
22 void pio_out(AT91S_PIO * pio, int mask, unsigned long val, int opcion)
No newline at end of file
23 {
No newline at end of file
24 if (opcion == 1)
No newline at end of file
25 pio->PIO_SODR = mask & val;
No newline at end of file
26 else
No newline at end of file
27 pio->PIO_CODR = mask & val;
No newline at end of file
28 }
No newline at end of file
29
No newline at end of file
30
No newline at end of file
31 int pio_in(AT91S_PIO * pio, int mask)
No newline at end of file
32 {
No newline at end of file
33 return (pio->PIO_PDSR & mask);
No newline at end of file
34 }
No newline at end of file
35
No newline at end of file
36
No newline at end of file
37 AT91S_PIO *pio_map(unsigned int piobase)
No newline at end of file
38 {
No newline at end of file
39 int fd;
No newline at end of file
40 void *base;
No newline at end of file
41
No newline at end of file
42 AT91S_PIO *pio;
No newline at end of file
43
No newline at end of file
44 off_t addr = piobase;
No newline at end of file
45
No newline at end of file
46 if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
No newline at end of file
47 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
48 exit(EXIT_FAILURE);
No newline at end of file
49 }
No newline at end of file
50
No newline at end of file
51 fprintf(stderr, "/dev/mem opened.\n");
No newline at end of file
52
No newline at end of file
53 base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK);
No newline at end of file
54
No newline at end of file
55 if (base == (void *) -1) {
No newline at end of file
56 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
57 exit(EXIT_FAILURE);
No newline at end of file
58 }
No newline at end of file
59
No newline at end of file
60 fprintf(stderr, "Memory mapped at address %p.\n", base);
No newline at end of file
61
No newline at end of file
62 pio = base + (addr & MAP_MASK);
No newline at end of file
63
No newline at end of file
64 return pio;
No newline at end of file
65 }
No newline at end of file
66
No newline at end of file
67
No newline at end of file
68 void pio_enable(AT91S_PIO * pio, int mask)
No newline at end of file
69 {
No newline at end of file
70 pio->PIO_PER = mask; /* Enable PIO */
No newline at end of file
71 }
No newline at end of file
72
No newline at end of file
73 void pio_output_enable(AT91S_PIO * pio, int mask)
No newline at end of file
74 {
No newline at end of file
75 pio->PIO_OER = mask; /* Set TDI, TMS and TCK as outputs */
No newline at end of file
76 }
No newline at end of file
77
No newline at end of file
78 void pio_input_enable(AT91S_PIO * pio, int mask)
No newline at end of file
79 {
No newline at end of file
80 pio->PIO_ODR = mask; /* Set TDO as input */
No newline at end of file
81 pio->PIO_IFER = mask; /* Enable Input Filter */
No newline at end of file
82 }
No newline at end of file
83
No newline at end of file
84 void pio_disable_irq(AT91S_PIO * pio, int mask)
No newline at end of file
85 {
No newline at end of file
86 pio->PIO_IDR = mask; /* Disable pin interrupts */
No newline at end of file
87 }
No newline at end of file
88
No newline at end of file
89 void pio_disable_multiple_driver(AT91S_PIO * pio, int mask)
No newline at end of file
90 {
No newline at end of file
91 pio->PIO_MDDR = mask; /* Disable Multiple Diver */
No newline at end of file
92 }
No newline at end of file
93
No newline at end of file
94 void pio_disable_pull_ups(AT91S_PIO * pio, int mask)
No newline at end of file
95 {
No newline at end of file
96 pio->PIO_PUDR = mask; /* Disable Pull-Ups */
No newline at end of file
97 }
No newline at end of file
98
No newline at end of file
99 void pio_synchronous_data_output(AT91S_PIO * pio, int mask)
No newline at end of file
100 {
No newline at end of file
101 pio->PIO_OWDR = mask; /* Synchronous Data Output Write in PIO_ */
No newline at end of file
102 }
No newline at end of file
103
No newline at end of file
104 //Nuevas funciones:
No newline at end of file
105 int ver_registro(AT91S_PIO * pio){
No newline at end of file
106 return (pio->PIO_PSR);
No newline at end of file
107 }
No newline at end of file
108 //Habilitar pines para usar con ADC
No newline at end of file
109 void pin_adc_enable(AT91S_PIO * pio, int mask){
No newline at end of file
110 pio->PIO_PDR = mask;
No newline at end of file
111 }
No newline at end of file
112 //selecciona para el periferico A
No newline at end of file
113 void periferico_a(AT91S_PIO * pio, int mask){
No newline at end of file
114 pio->PIO_ASR = mask;
No newline at end of file
115 }
No newline at end of file
116 //Retorna cero si esta en el perifierico A y 1 si est aen el periferico B
No newline at end of file
117 int ver_periferico(AT91S_PIO * pio){
No newline at end of file
118 return (pio->PIO_ABSR & 0x01);
No newline at end of file
119 } No newline at end of file
@@ -0,0 +1,55
1 /*
No newline at end of file
2 * This programmer uses AT91' System clock
No newline at end of file
3 *
No newline at end of file
4 * 2010 by Ricardo V. Rojas Quispe
No newline at end of file
5 */
No newline at end of file
6
No newline at end of file
7 #include <stdint.h>
No newline at end of file
8 #include <stdlib.h>
No newline at end of file
9 #include <stdio.h>
No newline at end of file
10 #include <unistd.h>
No newline at end of file
11
No newline at end of file
12 #include <sys/types.h>
No newline at end of file
13 #include <sys/stat.h>
No newline at end of file
14 #include <sys/mman.h>
No newline at end of file
15 #include <fcntl.h>
No newline at end of file
16
No newline at end of file
17 #include "./Librerias/at91sysclock.h"
No newline at end of file
18
No newline at end of file
19 //Mapeando los registro en memoria:
No newline at end of file
20 AT91S_PMC *clock_map(unsigned int clockbase){
No newline at end of file
21 int fd;
No newline at end of file
22 void *base;
No newline at end of file
23
No newline at end of file
24 AT91S_PMC *clock;
No newline at end of file
25
No newline at end of file
26 off_t addr = clockbase;
No newline at end of file
27
No newline at end of file
28 if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
No newline at end of file
29 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
30 exit(EXIT_FAILURE);
No newline at end of file
31 }
No newline at end of file
32
No newline at end of file
33 //fprintf(stderr, "/dev/mem opened.\n");
No newline at end of file
34
No newline at end of file
35 base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK);
No newline at end of file
36
No newline at end of file
37 if (base == (void *) -1) {
No newline at end of file
38 fprintf(stderr, "Cannot open /dev/mem.\n");
No newline at end of file
39 exit(EXIT_FAILURE);
No newline at end of file
40 }
No newline at end of file
41
No newline at end of file
42 //fprintf(stderr, "Memory mapped at address %p.\n", base);
No newline at end of file
43
No newline at end of file
44 clock = base + (addr & MAP_MASK);
No newline at end of file
45
No newline at end of file
46 return clock;
No newline at end of file
47 }
No newline at end of file
48 //Habilitamos el clock de ADC
No newline at end of file
49 void enable_clock_adc(AT91S_PMC * clock){
No newline at end of file
50 clock->PMC_PCER=0x20;
No newline at end of file
51 }
No newline at end of file
52 //Leemos el registro de estado de clock para perifericos
No newline at end of file
53 unsigned int status_clock_adc(AT91S_PMC * clock){
No newline at end of file
54 return (clock->PMC_PCSR);
No newline at end of file
55 } No newline at end of file
@@ -1,561 +1,1023
1 1 /* No newline at end of file
2 2 * Servidor.c No newline at end of file
3 3 * No newline at end of file
4 4 * Created on: Nov 3, 2009 No newline at end of file
5 5 * Author: Jose Francisco Quenta No newline at end of file
6 6 * No newline at end of file
7 7 * Se implementa: No newline at end of file
8 8 * -Carga en memoria los apuntes contenidos en un archivo de experimentos: apunte0 -> GPIO No newline at end of file
9 9 * -Cambio de apunte. No newline at end of file
10 10 * -Lectura del estado actual del apunte y grabado del mismo en un archivo No newline at end of file
11 11 * No newline at end of file
12 12 * Modified by Iván Manay since Nov 2012 No newline at end of file
13 13 * -From UDP to TCP. No newline at end of file
14 14 * -Use of a frame for TCP communications with the central control module. No newline at end of file
15 15 */ No newline at end of file
16 16 No newline at end of file
17 17 #include <stdio.h> No newline at end of file
18 18 #include <stdlib.h> No newline at end of file
19 19 #include <string.h> No newline at end of file
20 20 #include <unistd.h> No newline at end of file
21 21 #include <errno.h> No newline at end of file
22 22 No newline at end of file
23 23 #include <sys/types.h> No newline at end of file
24 24 #include <sys/socket.h> No newline at end of file
25 25 #include <netinet/in.h> No newline at end of file
26 26 #include <arpa/inet.h> No newline at end of file
27 27 #include <netdb.h>
28 No newline at end of file
28
No newline at end of file
29 No newline at end of file
29 #include "./Librerias/AT91gpio_Funciones.h"
No newline at end of file
30 No newline at end of file
30 #include "./Librerias/Mensajes.h" No newline at end of file
No newline at end of file
31 #include "./Librerias/at91gpio.h"
No newline at end of file
32 //#include "./Librerias/Mensajes.h"
No newline at end of file
33 #include "./Librerias/at91adc.h"
No newline at end of file
34 //clock
No newline at end of file
35 #include "./Librerias/at91sysclock.h" No newline at end of file
31 36 No newline at end of file
32 37 #define PUERTO_SERVIDOR 5500 No newline at end of file
33 38 #define TAM_BUFFER 1024 No newline at end of file
34 39 No newline at end of file
35 40 #define maskc_out PC30+PC28+PC26+PC24+PC22+PC20 //MSB-UP-LSB MSB-DOWN-LSB //APUNTE No newline at end of file
36 41 No newline at end of file
37 42 #define maskb_in PB16+PB18+PB20+PB30+PB24+PB22 //MSB-UP-LSB MSB-DOWN-LSB //VERIFICACION No newline at end of file
38 43 No newline at end of file
39 44 #define bit_up_2 0x00010000 //Mascara de cada bit a revisar: bit_up_2 es MSB No newline at end of file
40 45 #define bit_up_1 0x00040000 No newline at end of file
41 46 #define bit_up_0 0x00100000 No newline at end of file
42 47 #define bit_dow_2 0x40000000 No newline at end of file
43 48 #define bit_dow_1 0x01000000 No newline at end of file
44 49 #define bit_dow_0 0x00400000 No newline at end of file
45 50 No newline at end of file
46 51 #define MyID 11 No newline at end of file
47 52 #define MAXPENDING 5 /* Maximum outstanding connection requests */ No newline at end of file
53
No newline at end of file
54 //parameters for the name of the output file
No newline at end of file
55 #define FPRE "AD" //prefix for the output file name
No newline at end of file
56 #define FEXT ".out" //file extension for the output file
No newline at end of file
57 #define FNAMELEN 40
No newline at end of file
58
No newline at end of file
59 //ADC parameters
No newline at end of file
60 #define REP 1 //defines how many times the data acquisation loop is repeated
No newline at end of file
61 #define NSAMPLES 100 //defines how many samples are taken in one data acqu-
No newline at end of file
62 // isation loop
No newline at end of file
63 #define CNVTIME 14.3 //defines how long it takes to get one sample. Value
No newline at end of file
64 // is only needed for the output file, doesn't change
No newline at end of file
65 // any ADC configurations
No newline at end of file
66 #define UREF 3.3 //Reference Voltage of ADC (max. ADC Voltage)
No newline at end of file
67 #define ADCRES 1023 //Resolution of ADC (10bit=1023)
No newline at end of file
68 No newline at end of file
48 69 No newline at end of file
49 70 char *buff_experimento= NULL; No newline at end of file
50 71 No newline at end of file
51 72 AT91S_PIO *pioc; No newline at end of file
52 73 AT91S_PIO *piob; No newline at end of file
53 74 No newline at end of file
54 75 struct control_module_parameters { No newline at end of file
55 76 char ID[20]; No newline at end of file
56 77 char param2[20]; No newline at end of file
57 78 char param3[20]; No newline at end of file
58 79 char param4[20]; No newline at end of file
59 80 }; No newline at end of file
60 81 No newline at end of file
61 82 typedef struct control_module_parameters cmp; No newline at end of file
62 83 No newline at end of file
63 84 char *header = NULL; No newline at end of file
64 85 char *TypeOfInstrument = NULL; No newline at end of file
65 86 char *iDSource = NULL; No newline at end of file
66 87 char *iDDestino = NULL; No newline at end of file
67 88 char *rx_len = NULL; No newline at end of file
68 89 char *cmd = NULL; No newline at end of file
69 90 char *rx_data = NULL; No newline at end of file
70 91 char *crc = NULL; No newline at end of file
71 92 No newline at end of file
72 93 cmp parameters; No newline at end of file
73 94 /* No newline at end of file
74 95 * Zona de declaracion de cabeceras. No newline at end of file
75 96 */ No newline at end of file
76 97 cmp inicializa_modulo(cmp p); No newline at end of file
77 98 int inicializa_ethernet(); No newline at end of file
78 99 int rxData(int, char*); No newline at end of file
79 100 void txData(int, char*); No newline at end of file
80 101 void inicializa_gpio(); No newline at end of file
81 102 void procesa_peticion(char *rx_buffer, char *tx_buffer); No newline at end of file
82 103 int cambia_apuntamiento(char *puntero_char); No newline at end of file
83 104 int carga_experimento(char *nombre_archivo); No newline at end of file
84 105 char *chequeo_sistema(char *filename, char *numero_muestras); No newline at end of file
85 106 void recibe_experimento(char *data, char filename[]); No newline at end of file
86 107 void SplitFrame(char *frame); No newline at end of file
87 108 void intToStr( int number, char* str ); No newline at end of file
88 109 No newline at end of file
110 //ABS monitoring
No newline at end of file
111 int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth);
No newline at end of file
112
No newline at end of file
113 AT91S_ADC * configADC1(void);
No newline at end of file
114 AT91S_ADC * configADC2(void);
No newline at end of file
115
No newline at end of file
116 FILE * create_Output(char*, time_t);
No newline at end of file
117
No newline at end of file
118 void writeOutput(float resultado, FILE * output);
No newline at end of file
119
No newline at end of file
120 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth);
No newline at end of file
121
No newline at end of file
122 double mediana(long int *results, unsigned int cuenta);
No newline at end of file
123 float getPhase(long int results1[], long int results2[]);
No newline at end of file
124
No newline at end of file
125 int fExists(char *);
No newline at end of file
126 int configCLK();
No newline at end of file
127 //
No newline at end of file
128 No newline at end of file
89 129 /* No newline at end of file
90 130 * No newline at end of file
91 131 */ No newline at end of file
92 132 int main(){ No newline at end of file
93 133 No newline at end of file
94 134 int servSocket; No newline at end of file
95 135 int clntSocket; No newline at end of file
96 136 No newline at end of file
97 137 No newline at end of file
98 138 char *rx_buffer = (char *) malloc(TAM_BUFFER); No newline at end of file
99 139 char *tx_buffer = (char *) malloc(TAM_BUFFER); No newline at end of file
100 140 /* Inicializa parametros del modulo*/ No newline at end of file
101 141 parameters = inicializa_modulo(parameters); No newline at end of file
102 142 printf("%s\n%s\n%s\n%s\n",parameters.ID, parameters.param2, parameters.param3, parameters.param4); No newline at end of file
103 143 /* Inicializa red*/ No newline at end of file
104 144 servSocket = inicializa_ethernet(); No newline at end of file
105 145 /* Inicializamos el puerto GPIO del sistema embebido GSBC-9260S */ No newline at end of file
106 146 inicializa_gpio(); No newline at end of file
107 147 No newline at end of file
108 148 while(1){ No newline at end of file
109 149 // Recepción TCP de petición No newline at end of file
110 150 clntSocket = rxData(servSocket, rx_buffer); No newline at end of file
111 151 //testpoint No newline at end of file
112 152 printf("rx:%s\n",rx_buffer); No newline at end of file
113 153 // Procesamiento de la petición No newline at end of file
114 154 procesa_peticion(rx_buffer, tx_buffer); No newline at end of file
115 155 //testpoint No newline at end of file
116 156 printf("tx:%s\n",tx_buffer); No newline at end of file
117 157 // Respuesta del modulo de control No newline at end of file
118 158 txData(clntSocket, tx_buffer); No newline at end of file
119 159 No newline at end of file
120 160 } No newline at end of file
121 161 } No newline at end of file
122 162 No newline at end of file
123 163 No newline at end of file
124 164 int inicializa_ethernet(){ No newline at end of file
125 165 No newline at end of file
126 166 struct sockaddr_in inf_servidor; No newline at end of file
127 167 No newline at end of file
128 168 int servSocket; No newline at end of file
129 169 No newline at end of file
130 170 int resultado; No newline at end of file
131 171 No newline at end of file
132 172 /* Haciendo la estructura local*/ No newline at end of file
133 173 memset(&inf_servidor, 0, sizeof(inf_servidor)); No newline at end of file
134 174 inf_servidor.sin_family= AF_INET; No newline at end of file
135 175 inf_servidor.sin_port= htons(PUERTO_SERVIDOR); No newline at end of file
136 176 inf_servidor.sin_addr.s_addr= INADDR_ANY; No newline at end of file
137 177 No newline at end of file
138 178 /* Se establece el socket */ No newline at end of file
139 179 servSocket = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); No newline at end of file
140 180 if (servSocket == -1){
181 No newline at end of file
141 ERROR_FATAL("No se establecio correctamente el socket: socket()\n"); No newline at end of file
No newline at end of file
182 //ERROR_FATAL("No se establecio correctamente el socket: socket()\n"); No newline at end of file
142 183 exit(-1); No newline at end of file
143 184 } No newline at end of file
144 185 No newline at end of file
145 186 /* Se asocia el socket a un puerto y una IP */ No newline at end of file
146 187 resultado = bind(servSocket,(struct sockaddr *)&inf_servidor,sizeof(inf_servidor)); No newline at end of file
147 188 if (resultado== -1){
189 No newline at end of file
148 ERROR_FATAL("No se establecio correctamente el socket: bind()\n"); No newline at end of file
No newline at end of file
190 //ERROR_FATAL("No se establecio correctamente el socket: bind()\n"); No newline at end of file
149 191 exit(-1); No newline at end of file
150 192 } No newline at end of file
151 193 No newline at end of file
152 194 if (listen(servSocket, MAXPENDING) < 0){ No newline at end of file
153 195 printf("listen() failed\n"); No newline at end of file
154 196 exit(-1); No newline at end of file
155 197 } No newline at end of file
156 198 No newline at end of file
157 199 return servSocket; No newline at end of file
158 200 No newline at end of file
159 201 } No newline at end of file
160 202 No newline at end of file
161 203 int rxData(int servSocket, char* rx_buffer){ No newline at end of file
162 204 No newline at end of file
163 205 int clntSocket; No newline at end of file
164 206 struct sockaddr_in inf_cliente; No newline at end of file
165 207 int numbytes_recibidos; No newline at end of file
166 208 unsigned int inf_client_Len; No newline at end of file
167 209 No newline at end of file
168 210 printf("\nEsperando solicitud de cliente...\n"); No newline at end of file
169 211 No newline at end of file
170 212 /* Set the size of the in-out parameter */ No newline at end of file
171 213 inf_client_Len = sizeof(inf_cliente); No newline at end of file
172 214 /* Se espera hasta que un cliente se conecte */ No newline at end of file
173 215 if ((clntSocket = accept(servSocket, (struct sockaddr *) &inf_cliente, No newline at end of file
174 216 &inf_client_Len)) < 0) No newline at end of file
175 217 printf("accept() failed\n"); No newline at end of file
176 218 No newline at end of file
177 219 if ((numbytes_recibidos = recv(clntSocket, rx_buffer, TAM_BUFFER, 0)) < 0) No newline at end of file
178 220 printf("recv() failed\n"); No newline at end of file
179 221 No newline at end of file
180 222 /* Se procede a procesar los datos recibidos */ No newline at end of file
181 223 rx_buffer[numbytes_recibidos]= '\0'; No newline at end of file
182 224 No newline at end of file
183 225 return clntSocket; No newline at end of file
184 226 } No newline at end of file
185 227 No newline at end of file
186 228 void txData(int clntSocket, char* data){ No newline at end of file
187 229 No newline at end of file
188 230 /* Echo message back to client */ No newline at end of file
189 231 if (send(clntSocket, data, strlen(data), 0) != strlen(data)) No newline at end of file
190 232 printf("send() failed\n"); No newline at end of file
191 233 No newline at end of file
192 234 close(clntSocket); /* Close client socket */ No newline at end of file
193 235 } No newline at end of file
194 236 No newline at end of file
195 237 /* No newline at end of file
196 238 * Esta funcion incializa el puerto GPIO No newline at end of file
197 239 */ No newline at end of file
198 240 void inicializa_gpio(){ No newline at end of file
199 241 No newline at end of file
200 242 // Configuracion de los pines de APUNTE No newline at end of file
201 243 pioc = pio_map(PIOC_BASE); No newline at end of file
202 244 pio_enable(pioc, maskc_out); No newline at end of file
203 245 pio_disable_irq(pioc, maskc_out); No newline at end of file
204 246 pio_disable_multiple_driver(pioc, maskc_out); No newline at end of file
205 247 pio_disable_pull_ups(pioc, maskc_out); No newline at end of file
206 248 pio_synchronous_data_output(pioc, maskc_out); No newline at end of file
207 249 pio_output_enable(pioc, maskc_out); No newline at end of file
208 250 No newline at end of file
209 251 // Configuracion de los pines de VERIFICACION No newline at end of file
210 252 piob = pio_map(PIOB_BASE); No newline at end of file
211 253 pio_enable(piob, maskb_in); No newline at end of file
212 254 pio_disable_irq(piob, maskb_in); No newline at end of file
213 255 pio_disable_multiple_driver(piob, maskb_in); No newline at end of file
214 256 pio_disable_pull_ups(piob, maskb_in); No newline at end of file
215 257 pio_input_enable(piob, maskb_in); No newline at end of file
216 258 } No newline at end of file
217 259 No newline at end of file
218 260 No newline at end of file
219 261 /* No newline at end of file
220 262 * Divide rx frame into the frame components No newline at end of file
221 263 */ No newline at end of file
222 264 void SplitFrame(char *frame){ No newline at end of file
223 265 header = malloc(4); No newline at end of file
224 266 *header = *frame; No newline at end of file
225 267 *(header + 1) = *(frame + 1); No newline at end of file
226 268 *(header + 2) = *(frame + 2); No newline at end of file
227 269 *(header + 3) = '\0'; No newline at end of file
228 270 TypeOfInstrument = malloc(4); No newline at end of file
229 271 *TypeOfInstrument = *(frame + 3); No newline at end of file
230 272 *(TypeOfInstrument + 1) = *(frame + 4); No newline at end of file
231 273 *(TypeOfInstrument + 2) = *(frame + 5); No newline at end of file
232 274 *(TypeOfInstrument + 3) = '\0'; No newline at end of file
233 275 iDSource = malloc(8); No newline at end of file
234 276 *iDSource = *(frame + 6); No newline at end of file
235 277 *(iDSource + 1) = *(frame + 7); No newline at end of file
236 278 *(iDSource + 2) = *(frame + 8); No newline at end of file
237 279 *(iDSource + 3) = *(frame + 9); No newline at end of file
238 280 *(iDSource + 4) = *(frame + 10); No newline at end of file
239 281 *(iDSource + 5) = *(frame + 11); No newline at end of file
240 282 *(iDSource + 6) = *(frame + 12); No newline at end of file
241 283 *(iDSource + 7) = '\0'; No newline at end of file
242 284 iDDestino = malloc(8); No newline at end of file
243 285 *iDDestino = *(frame + 13); No newline at end of file
244 286 *(iDDestino + 1) = *(frame + 14); No newline at end of file
245 287 *(iDDestino + 2) = *(frame + 15); No newline at end of file
246 288 *(iDDestino + 3) = *(frame + 16); No newline at end of file
247 289 *(iDDestino + 4) = *(frame + 17); No newline at end of file
248 290 *(iDDestino + 5) = *(frame + 18); No newline at end of file
249 291 *(iDDestino + 6) = *(frame + 19); No newline at end of file
250 292 *(iDDestino + 7) = '\0'; No newline at end of file
251 293 rx_len = malloc(7); No newline at end of file
252 294 *rx_len = *(frame + 20); No newline at end of file
253 295 *(rx_len + 1) = *(frame + 21); No newline at end of file
254 296 *(rx_len + 2) = *(frame + 22); No newline at end of file
255 297 *(rx_len + 3) = *(frame + 23); No newline at end of file
256 298 *(rx_len + 4) = *(frame + 24); No newline at end of file
257 299 *(rx_len + 5) = *(frame + 25); No newline at end of file
258 300 *(rx_len + 6) = '\0'; No newline at end of file
259 301 cmd = malloc(5); No newline at end of file
260 302 *cmd = *(frame + 26); No newline at end of file
261 303 *(cmd + 1) = *(frame + 27); No newline at end of file
262 304 *(cmd + 2) = *(frame + 28); No newline at end of file
263 305 *(cmd + 3) = *(frame + 29); No newline at end of file
264 306 *(cmd + 4) = '\0'; No newline at end of file
265 307 No newline at end of file
266 308 int l = atoi(rx_len); No newline at end of file
267 309 rx_data = malloc(l + 1); No newline at end of file
268 310 int i; No newline at end of file
269 311 for (i = 30; i < 30 + l; i++) No newline at end of file
270 312 *(rx_data + (i-30)) = *(frame + i); No newline at end of file
271 313 *(rx_data + l) = '\0'; No newline at end of file
272 314 crc = malloc(2); No newline at end of file
273 315 *crc = *(frame + 30 + l); No newline at end of file
274 316 *(crc + 1) = '\0'; No newline at end of file
275 317 } No newline at end of file
276 318 No newline at end of file
277 319 No newline at end of file
278 320 /* No newline at end of file
279 321 * Esta funcion procesa el mensaje de peticion y genera respuesta No newline at end of file
280 322 */ No newline at end of file
281 323 void procesa_peticion(char *rx_buffer, char *tx_buffer){ No newline at end of file
282 324 // int n = 0; No newline at end of file
283 325 char filename1[50]; No newline at end of file
284 326 char filename2[] = "verificacion.txt"; No newline at end of file
285 327 char *tx_data = NULL; No newline at end of file
286 328 char *tx_len = NULL; No newline at end of file
287 329 SplitFrame(rx_buffer); No newline at end of file
288 330 No newline at end of file
289 331 if ((cmd == NULL) || (rx_data == NULL)){
332 No newline at end of file
290 ERROR("procesarPeticion: formato de mensaje incorrecto"); No newline at end of file
No newline at end of file
333 //ERROR("procesarPeticion: formato de mensaje incorrecto");
No newline at end of file
334 No newline at end of file
291 335 } No newline at end of file
292 336 else{ No newline at end of file
293 337 if(strcmp(cmd,"SNDF") == 0){ No newline at end of file
294 338 recibe_experimento(rx_data,filename1); No newline at end of file
295 339 carga_experimento(filename1); No newline at end of file
296 340 cambia_apuntamiento("0"); No newline at end of file
297 341 tx_data = (char*)malloc(3); No newline at end of file
298 342 tx_data = "OK"; No newline at end of file
299 343 } No newline at end of file
300 344 else if(strcmp(cmd,"CHGB") == 0){ No newline at end of file
301 345 cambia_apuntamiento(rx_data); No newline at end of file
302 346 tx_data = (char*)malloc(3); No newline at end of file
303 347 tx_data = "OK"; No newline at end of file
304 348 } No newline at end of file
305 349 else if(strcmp(cmd,"ANST") == 0){ No newline at end of file
306 350 tx_data = chequeo_sistema(filename2,rx_data); No newline at end of file
351 ABS_monitoreo(1, 1, 50, 10); No newline at end of file
307 352 printf("%s\n",tx_data); No newline at end of file
308 353 } No newline at end of file
309 354 else if(strcmp(cmd,"NTST") == 0){ No newline at end of file
310 355 tx_data = malloc(strlen(parameters.ID) + 1); No newline at end of file
311 356 strcpy(tx_data,parameters.ID); No newline at end of file
312 357 printf("%s\n",tx_data); No newline at end of file
313 358 } No newline at end of file
314 359 else{ No newline at end of file
315 360 tx_data = (char*)malloc(6); No newline at end of file
316 361 tx_data = "Error";
362 No newline at end of file
317 ERROR("procesa_peticion: comando no reconocido"); No newline at end of file
No newline at end of file
363 //ERROR("procesa_peticion: comando no reconocido"); No newline at end of file
318 364 } No newline at end of file
319 365 No newline at end of file
320 366 tx_len = malloc(7); No newline at end of file
321 367 int number = strlen(tx_data); No newline at end of file
322 368 intToStr(number, tx_len ); No newline at end of file
323 369 No newline at end of file
324 370 strcpy(tx_buffer,header); //3 No newline at end of file
325 371 strcat(tx_buffer,TypeOfInstrument); //3 No newline at end of file
326 372 strcat(tx_buffer,parameters.ID); //7 No newline at end of file
327 373 strcat(tx_buffer,iDSource); //7 No newline at end of file
328 374 strcat(tx_buffer,tx_len); //6 No newline at end of file
329 375 strcat(tx_buffer,cmd); //4 No newline at end of file
330 376 strcat(tx_buffer,tx_data); //? No newline at end of file
331 377 strcat(tx_buffer,crc); //1 No newline at end of file
332 378 No newline at end of file
333 379 } No newline at end of file
334 380 No newline at end of file
335 381 } No newline at end of file
336 382 No newline at end of file
337 383 /* No newline at end of file
338 384 * Esta función genera el archivo de experimento a partir de la trama TCP recibida No newline at end of file
339 385 */ No newline at end of file
340 386 void recibe_experimento(char *p_data, char filename[]){ No newline at end of file
341 387 FILE *fd; No newline at end of file
342 388 int i = 0; No newline at end of file
343 389 No newline at end of file
344 390 while (*p_data != '\n'){ No newline at end of file
345 391 filename[i] = *p_data; No newline at end of file
346 392 i++; No newline at end of file
347 393 p_data++; No newline at end of file
348 394 } No newline at end of file
349 395 filename[i] = '\0'; No newline at end of file
350 396 p_data = p_data - i; No newline at end of file
351 397 fd = fopen(filename,"w"); No newline at end of file
352 398 fprintf(fd, p_data); No newline at end of file
353 399 fclose(fd); No newline at end of file
354 400 } No newline at end of file
355 401 No newline at end of file
356 402 /* No newline at end of file
357 403 * Esta funcion carga un archivo en un buffer que esta ubicado en memoria, luego No newline at end of file
358 404 * este buffer es usado en la funcion "cambia_apuntamiento" para obtener el dato No newline at end of file
359 405 * que sera usado en el cambio de apuntamiento. No newline at end of file
360 406 */ No newline at end of file
361 407 int carga_experimento(char *nombre_archivo){ No newline at end of file
362 408 No newline at end of file
363 409 FILE *Archivo_Fd; No newline at end of file
364 410 No newline at end of file
365 411 char *cadena = (char *) malloc(25); No newline at end of file
366 412 No newline at end of file
367 413 int longitud_cadena; No newline at end of file
368 414 int num_bytes= 0; No newline at end of file
369 415 int num_filas= 0; No newline at end of file
370 416 No newline at end of file
371 417 Archivo_Fd = fopen(nombre_archivo,"r"); // Se procede a abrir el archivo, segun la ruta especificada No newline at end of file
372 418 if(!Archivo_Fd){
419 No newline at end of file
373 ERROR("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n"); No newline at end of file
No newline at end of file
420 //ERROR("carga_archivo: No se pudo abrir el archivo!!! --> fopen()\n"); No newline at end of file
374 421 return -1; No newline at end of file
375 422 }else{ No newline at end of file
376 423 No newline at end of file
377 424 while(!feof(Archivo_Fd)){ // Se procede a calcular la longitud del archivo para separar memoria No newline at end of file
378 425 fgets(cadena,20,Archivo_Fd); No newline at end of file
379 426 longitud_cadena= strlen(cadena); No newline at end of file
380 427 cadena[longitud_cadena-1] = '\0'; No newline at end of file
381 428 num_bytes = num_bytes + longitud_cadena; No newline at end of file
382 429 num_filas++; No newline at end of file
383 430 } No newline at end of file
384 431 No newline at end of file
385 432 rewind(Archivo_Fd); // Se reinicia el puntero del archivo No newline at end of file
386 433 No newline at end of file
387 434 char *buffer_temporal = (char *) malloc(num_bytes+1); // Se separa espacio de memoria segun No newline at end of file
388 435 // la longitud del archivo No newline at end of file
389 436 fread(buffer_temporal, sizeof(char), num_bytes, Archivo_Fd); No newline at end of file
390 437 No newline at end of file
391 438 char *puntero= strstr(buffer_temporal,".ab1"); // Se procede a eliminar la cabecera del archivo No newline at end of file
392 439 puntero= puntero + 12; No newline at end of file
393 440 No newline at end of file
394 441 buff_experimento = (char *) malloc(7*(num_filas-3)); // num_bytes_fila*(num_filas-3); No newline at end of file
395 442 strncpy(buff_experimento,puntero,7*(num_filas-3)); // Se carga en memoria la informacion del archivo No newline at end of file
396 443 No newline at end of file
397 444 fclose(Archivo_Fd); No newline at end of file
398 445 No newline at end of file
399 446 return 1; No newline at end of file
400 447 } No newline at end of file
401 448 } No newline at end of file
402 449 No newline at end of file
403 450 /* No newline at end of file
404 451 * Esta funcion recibe un numero en formato char, el dato se transforma a su equivalente en No newline at end of file
405 452 * un numero entero, que sera usado para sacar un dato del buffer "buff_experimento", esta No newline at end of file
406 453 * dato es el valor que se enviara al sistema de conmutacion RF para el cambio de apunte a No newline at end of file
407 454 * traves del puerto GPIO. No newline at end of file
408 455 */ No newline at end of file
409 456 int cambia_apuntamiento(char *puntero_char){ No newline at end of file
410 457 No newline at end of file
411 458 /*MSB-UP-LSB MSB-DOWN-LSB*/ No newline at end of file
412 459 int desplazamiento[6]={30,28,26,24,22,20}; // Defino los dezplazamientos que se aplicara No newline at end of file
413 460 // al dato que ingresa para formar el número No newline at end of file
414 461 // entero que se le pasara al puerto GPIO No newline at end of file
415 462 // Estos números son los pines del puerto GPIO No newline at end of file
416 463 // que se estan usando para el control No newline at end of file
417 464 No newline at end of file
418 465 int puntero= atoi(puntero_char); // Se convierte a entero la direccion del puntero No newline at end of file
419 466 No newline at end of file
420 467 int base= 7*puntero; // base= cantidad_bytes del dato x puntero No newline at end of file
421 468 // cantidad de bytes es el numero de bytes que No newline at end of file
422 469 printf("%s\n",puntero_char); // contiene cada dato, para este caso es 7 No newline at end of file
423 470 // porque es 6 bits de datos + 1 bit del cambio No newline at end of file
424 471 // de linea. No newline at end of file
425 472 char valor_char; No newline at end of file
426 473 unsigned long valor; No newline at end of file
427 474 unsigned long acumulado_ceros=0; No newline at end of file
428 475 unsigned long acumulado_unos=0; No newline at end of file
429 476 No newline at end of file
430 477 int offset; // Defino offset para el desplazamiento a traves No newline at end of file
431 478 for(offset=0;offset<6;offset++){ // de cada dato que se obtiene del "buff_experimento" No newline at end of file
432 479 No newline at end of file
433 480 valor_char= buff_experimento[base+offset]; // Obtengo el dato No newline at end of file
434 481 No newline at end of file
435 482 if (valor_char == '0'){ // Obtengo el número acumulado segun sea un cero o un uno No newline at end of file
436 483 valor= 0; No newline at end of file
437 484 acumulado_ceros= acumulado_ceros + (1 << desplazamiento[offset]); No newline at end of file
438 485 }else{ No newline at end of file
439 486 valor= 1; No newline at end of file
440 487 acumulado_unos= acumulado_unos + (1 << desplazamiento[offset]); No newline at end of file
441 488 } No newline at end of file
442 489 } No newline at end of file
443 490 pio_out(pioc, maskc_out, acumulado_unos, 1); No newline at end of file
444 491 pio_out(pioc, maskc_out, acumulado_ceros, 0); No newline at end of file
445 492 No newline at end of file
446 493 return 1; No newline at end of file
447 494 No newline at end of file
448 495 } No newline at end of file
449 496 No newline at end of file
450 497 /* No newline at end of file
451 498 * Esta funcion lee "n" veces el estado del APUNTE actual y reporta No newline at end of file
452 499 * una cadena de Verificacion. No newline at end of file
453 500 */ No newline at end of file
454 501 char* chequeo_sistema(char *filename, char *numero_muestras){ No newline at end of file
455 502 No newline at end of file
456 503 int i; No newline at end of file
457 504 int cnt = 0; No newline at end of file
458 505 unsigned int entradac= 0; No newline at end of file
459 506 No newline at end of file
460 507 char page0[250]; No newline at end of file
461 508 No newline at end of file
462 509 strcpy(page0,"Verificacion\n"); No newline at end of file
463 510 strcat(page0,parameters.ID); No newline at end of file
464 511 strcat(page0,"\n------------\n"); No newline at end of file
465 512 No newline at end of file
466 513 char page1[8]; No newline at end of file
467 514 No newline at end of file
468 515 do{ No newline at end of file
469 516 //Inicializando arreglo No newline at end of file
470 517 for(i=0;i<6;i++) No newline at end of file
471 518 page1[i]='0'; No newline at end of file
472 519 page1[6] = '\n'; No newline at end of file
473 520 page1[7] = '\0'; No newline at end of file
474 521 //Lectura de puerto No newline at end of file
475 522 entradac= pio_in(piob,maskb_in); No newline at end of file
476 523 //Dandole formato al dato No newline at end of file
477 524 if (!(entradac & bit_up_2)) No newline at end of file
478 525 page1[0] = '1'; No newline at end of file
479 526 if (!(entradac & bit_up_1)) No newline at end of file
480 527 page1[1] = '1'; No newline at end of file
481 528 if (!(entradac & bit_up_0)) No newline at end of file
482 529 page1[2] = '1'; No newline at end of file
483 530 if (!(entradac & bit_dow_2)) No newline at end of file
484 531 page1[3] = '1'; No newline at end of file
485 532 if (!(entradac & bit_dow_1)) No newline at end of file
486 533 page1[4] = '1'; No newline at end of file
487 534 if (!(entradac & bit_dow_0)) No newline at end of file
488 535 page1[5] = '1'; No newline at end of file
489 536 No newline at end of file
490 537 strcat(page0, page1); No newline at end of file
491 538 cnt=cnt+1; No newline at end of file
492 539 usleep(1*1000*1000); No newline at end of file
493 540 No newline at end of file
494 541 }while(cnt < atoi(numero_muestras)); No newline at end of file
495 542 No newline at end of file
496 543 page0[strlen(page0)] = '\0'; No newline at end of file
497 544 No newline at end of file
498 545 char *all_pages = malloc(strlen(page0)+1); No newline at end of file
499 546 strcpy(all_pages, page0); No newline at end of file
500 547 return all_pages; No newline at end of file
501 548 } No newline at end of file
502 549 No newline at end of file
503 550 /* No newline at end of file
504 551 * No newline at end of file
505 552 */ No newline at end of file
506 553 cmp inicializa_modulo(cmp p){ No newline at end of file
507 554 FILE *fd = fopen("configuration.txt","r"); No newline at end of file
508 555 fgets(p.ID,20,fd); No newline at end of file
509 556 p.ID[7]='\0'; No newline at end of file
510 557 fgets(p.param2,20,fd); No newline at end of file
511 558 p.param2[10]='\0'; No newline at end of file
512 559 fgets(p.param3,20,fd); No newline at end of file
513 560 p.param3[10]='\0'; No newline at end of file
514 561 fgets(p.param4,20,fd); No newline at end of file
515 562 p.param4[10]='\0'; No newline at end of file
516 563 fclose(fd); No newline at end of file
517 564 return p; No newline at end of file
518 565 } No newline at end of file
519 566 No newline at end of file
520 567 /* No newline at end of file
521 568 * No newline at end of file
522 569 */ No newline at end of file
523 570 void intToStr( int number, char* str ) No newline at end of file
524 571 No newline at end of file
525 572 { No newline at end of file
526 573 int index = 0; No newline at end of file
527 574 No newline at end of file
528 575 while( number > 0 ) No newline at end of file
529 576 { No newline at end of file
530 577 int digit = number%10; No newline at end of file
531 578 str[index++] = digit + '0'; No newline at end of file
532 579 number /= 10; No newline at end of file
533 580 } No newline at end of file
534 581 str[index] = '\0'; No newline at end of file
535 582 //Adding zero to the left No newline at end of file
536 583 int n= strlen(str); No newline at end of file
537 584 if (n == 1) { No newline at end of file
538 585 strcat(str,"00000"); No newline at end of file
539 586 index = index + 5; No newline at end of file
540 587 }else if(n == 2){ No newline at end of file
541 588 strcat(str,"0000"); No newline at end of file
542 589 index = index + 4; No newline at end of file
543 590 }else if(n == 3){ No newline at end of file
544 591 strcat(str,"000"); No newline at end of file
545 592 index = index + 3; No newline at end of file
546 593 }else if(n == 4){ No newline at end of file
547 594 strcat(str,"00"); No newline at end of file
548 595 index = index + 2; No newline at end of file
549 596 }else if(n == 5){ No newline at end of file
550 597 strcat(str,"0"); No newline at end of file
551 598 index = index + 1; No newline at end of file
552 599 } No newline at end of file
553 600 //Now reverse the numbers in the string. No newline at end of file
554 601 int position; No newline at end of file
555 602 for( position = 0; position <= (index-1)/2; ++position ) No newline at end of file
556 603 { No newline at end of file
557 604 char tmp = str[position]; No newline at end of file
558 605 str[position] = str[(index-1)-position]; No newline at end of file
559 606 str[(index-1)-position] = tmp; No newline at end of file
560 607 } No newline at end of file
561 608 } No newline at end of file
609
No newline at end of file
610
No newline at end of file
611 //*****************************************************************
No newline at end of file
612 //ABS_monitoreo es la funci�n principal del proyecto ABS_Monitoreo.
No newline at end of file
613 //Esta funci�n es la que se debe agregar en otros c�digos.
No newline at end of file
614 //*****************************************************************
No newline at end of file
615 int ABS_monitoreo(int sel_atenuador, int sel_calibracion, float umbral, int pulsewidth){
No newline at end of file
616
No newline at end of file
617 //local variables
No newline at end of file
618 AT91S_PIO *pioc;
No newline at end of file
619 pioc = pio_map(PIOC_BASE);
No newline at end of file
620 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
621 unsigned int mask_sel_atenuacion =PC5;
No newline at end of file
622 unsigned int mask_sel_calibracion =PC6;
No newline at end of file
623 AT91S_ADC *padc;
No newline at end of file
624 AT91S_ADC *padd;
No newline at end of file
625 FILE *fp;
No newline at end of file
626 long int results1[NSAMPLES], results2[NSAMPLES], results3[NSAMPLES], results4[NSAMPLES];
No newline at end of file
627 unsigned int i=0;
No newline at end of file
628 char fname[FNAMELEN];
No newline at end of file
629 int j=0;
No newline at end of file
630 time_t now;
No newline at end of file
631 FILE *archivo;
No newline at end of file
632 float phase1;
No newline at end of file
633 float phase2;
No newline at end of file
634 //system("./map_clock");
No newline at end of file
635
No newline at end of file
636 if (configCLK() == 1)
No newline at end of file
637 printf("clock ADC enable.\n");
No newline at end of file
638
No newline at end of file
639
No newline at end of file
640 //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
641 pio_enable(pioc, mask_sel_canal);
No newline at end of file
642 pio_enable(pioc, mask_sel_atenuacion);
No newline at end of file
643 pio_enable(pioc, mask_sel_calibracion);
No newline at end of file
644 pio_output_enable(pioc, mask_sel_canal); //configurar pc4 como salida
No newline at end of file
645 pio_output_enable(pioc, mask_sel_atenuacion); //configurar pc5 como salida
No newline at end of file
646 pio_output_enable(pioc, mask_sel_calibracion); //configurar pc6 como salida
No newline at end of file
647
No newline at end of file
648
No newline at end of file
649 //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
650 pio_out(pioc, mask_sel_atenuacion, sel_atenuador,1);
No newline at end of file
651 pio_out(pioc, mask_sel_calibracion, sel_calibracion,1);
No newline at end of file
652
No newline at end of file
653
No newline at end of file
654 strcpy (fname, "/mnt/sd/archivos/absmonitoreo.txt"); //Direcci�n y nombre del archivo donde se desea guardar los datos.
No newline at end of file
655
No newline at end of file
656 if (fExists(fname)==0){ //si el archivo no existe, crea uno y le asigna el titulo
No newline at end of file
657 archivo = fopen(fname,"a+");
No newline at end of file
658 fprintf(archivo,"%s"," Registro de datos del ABS Control \n");
No newline at end of file
659 fprintf(archivo,"%s"," Fecha y hora Fase UP Fase DOWN\n");
No newline at end of file
660 fclose(archivo);
No newline at end of file
661 }
No newline at end of file
662
No newline at end of file
663
No newline at end of file
664 //configure ADC Settings
No newline at end of file
665 padc=configADC1();
No newline at end of file
666 padd=configADC2();
No newline at end of file
667
No newline at end of file
668 while (1){
No newline at end of file
669
No newline at end of file
670 ENABLE_CHANNEL(padc, ADC_CH0+ADC_CH1);
No newline at end of file
671 printf("\nAdquiriendo datos...\n"); //Indica en el terminal que se est�n adquiriendo datos (muestreando la se�al).
No newline at end of file
672
No newline at end of file
673
No newline at end of file
674 now = time(0); //Get current Time for File Name
No newline at end of file
675
No newline at end of file
676
No newline at end of file
677 //Se pone la salida de selecci�n de canal para seleccionar el canal 1 del detector de fase
No newline at end of file
678 pio_out(pioc, mask_sel_canal, 0,1);
No newline at end of file
679
No newline at end of file
680
No newline at end of file
681 //Se toman muestras para el canal 1 del detector de fase
No newline at end of file
682 while(1){
No newline at end of file
683 for(i=0; i < NSAMPLES; i++){
No newline at end of file
684
No newline at end of file
685 ADC_INIT(padc);
No newline at end of file
686 results1[i] = GET_ADC0(padc);
No newline at end of file
687 results2[i] = GET_ADC1(padd);
No newline at end of file
688 }
No newline at end of file
689
No newline at end of file
690
No newline at end of file
691 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
692 break;
No newline at end of file
693 }
No newline at end of file
694 }
No newline at end of file
695
No newline at end of file
696
No newline at end of file
697 //Se pone la salida de selecci�n de canal para seleccionar el canal 2 del detector de fase
No newline at end of file
698 pio_out(pioc, mask_sel_canal, 1,1);
No newline at end of file
699
No newline at end of file
700
No newline at end of file
701
No newline at end of file
702 //Setoman muestras para el canal 2 del detector de fase
No newline at end of file
703 while(1){
No newline at end of file
704 for(i=0; i < NSAMPLES; i++){
No newline at end of file
705
No newline at end of file
706 ADC_INIT(padc);
No newline at end of file
707 results3[i] = GET_ADC0(padc);
No newline at end of file
708 results4[i] = GET_ADC1(padd);
No newline at end of file
709 }
No newline at end of file
710
No newline at end of file
711 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
712 break;
No newline at end of file
713 }
No newline at end of file
714 }
No newline at end of file
715
No newline at end of file
716
No newline at end of file
717 //Una vez que se ha encontrado un pulso en cada canal, se calcula la fase de ambos.
No newline at end of file
718
No newline at end of file
719 phase1 = getPhase(results1, results2); //Calcular la fase del canal 1 del detector de fase.
No newline at end of file
720 phase2 = getPhase(results3, results4); //Calcular la fase del canal 2 del detector de fase.
No newline at end of file
721 //create Output File
No newline at end of file
722
No newline at end of file
723 strcpy (fname, "/mnt/sd/archivos/absmonitoreo.txt");
No newline at end of file
724 printf("\nTerminada la prueba # %d \n", j++);
No newline at end of file
725 fp=create_Output(fname, now); //Coloca la fecha y la hora en el archivo de texto
No newline at end of file
726 printf("mediana ch1 = %1.2f\n", phase1); //muestra resultado en terminal
No newline at end of file
727 printf("mediana ch2 = %1.2f\n", phase2); //muestra resultado en terminal
No newline at end of file
728 writeOutput(phase1, fp); //graba el resultado en el archivo de texto
No newline at end of file
729 writeOutput(phase2, fp); //graba el resultado en el archivo de texto
No newline at end of file
730 fprintf(fp, "\n"); //Pasa a la siguiente l�nea del archivo de texto
No newline at end of file
731 fclose(fp);
No newline at end of file
732 printf("Resultado guardado en %s \n", fname);
No newline at end of file
733
No newline at end of file
734 sleep(1);
No newline at end of file
735
No newline at end of file
736 }
No newline at end of file
737 return 0;
No newline at end of file
738 }
No newline at end of file
739 /*=============================================================================
No newline at end of file
740 Function definitions
No newline at end of file
741 =============================================================================*/
No newline at end of file
742
No newline at end of file
743 // Configures ADC registers in order to get a sample every 10us
No newline at end of file
744 AT91S_ADC * configADC1(void){
No newline at end of file
745 //Variables a usar:
No newline at end of file
746 unsigned int maskc_adc =PC0; //Usamos ADC0 y ADC1
No newline at end of file
747
No newline at end of file
748 //configuro pin:
No newline at end of file
749 AT91S_PIO *pioc;
No newline at end of file
750 pioc = pio_map(PIOC_BASE);
No newline at end of file
751 pin_adc_enable(pioc,maskc_adc); //Habilitamos PC0 para usar con ADC0 y 1
No newline at end of file
752 pio_disable_irq(pioc, maskc_adc);
No newline at end of file
753 pio_disable_multiple_driver(pioc, maskc_adc);
No newline at end of file
754 pio_disable_pull_ups(pioc, maskc_adc);
No newline at end of file
755 pio_input_enable(pioc, maskc_adc);
No newline at end of file
756
No newline at end of file
757
No newline at end of file
758 //Configuro el ADC:
No newline at end of file
759 AT91S_ADC *padc;
No newline at end of file
760
No newline at end of file
761 padc = adc_map1(ADC_BASE);
No newline at end of file
762
No newline at end of file
763 //clock ADC = 1MHz
No newline at end of file
764 //time startup = 8us
No newline at end of file
765 //time sample and hold = 2us
No newline at end of file
766 // hold
No newline at end of file
767 // ___________
No newline at end of file
768 // start ___________| |___________
No newline at end of file
769 //
No newline at end of file
770 // | --1.2us-- | --0.15us-- |
No newline at end of file
771 //ADC_RESET(padc);
No newline at end of file
772 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
773 ENABLE_CHANNEL(padc,ADC_CH0); //habilito canal 0
No newline at end of file
774
No newline at end of file
775
No newline at end of file
776 return padc;
No newline at end of file
777 }
No newline at end of file
778
No newline at end of file
779 AT91S_ADC * configADC2(void){
No newline at end of file
780 //Variables a usar:
No newline at end of file
781 unsigned int maskc_adc =PC1; //Usamos ADC0 y ADC1
No newline at end of file
782
No newline at end of file
783 //configuro pin:
No newline at end of file
784 AT91S_PIO *piod;
No newline at end of file
785 piod = pio_map(PIOC_BASE);
No newline at end of file
786 pin_adc_enable(piod,maskc_adc); //Habilitamos PC0 para usar con ADC0 y 1
No newline at end of file
787 pio_disable_irq(piod, maskc_adc);
No newline at end of file
788 pio_disable_multiple_driver(piod, maskc_adc);
No newline at end of file
789 pio_disable_pull_ups(piod, maskc_adc);
No newline at end of file
790 pio_input_enable(piod, maskc_adc);
No newline at end of file
791
No newline at end of file
792 //Configuro el ADC:
No newline at end of file
793 AT91S_ADC *padd;
No newline at end of file
794
No newline at end of file
795 padd = adc_map1(ADC_BASE);
No newline at end of file
796
No newline at end of file
797 //clock ADC = 1MHz
No newline at end of file
798 //time startup = 8us
No newline at end of file
799 //time sample and hold = 2us
No newline at end of file
800 // hold
No newline at end of file
801 // ___________
No newline at end of file
802 // start ___________| |___________
No newline at end of file
803 //
No newline at end of file
804 // | --1.2us-- | --0.15us-- |
No newline at end of file
805 //ADC_RESET(padc);
No newline at end of file
806 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
807 ENABLE_CHANNEL(padd,ADC_CH1); //habilito canal 1
No newline at end of file
808 return padd;
No newline at end of file
809 }
No newline at end of file
810
No newline at end of file
811
No newline at end of file
812 //++++++++++++++++++++
No newline at end of file
813
No newline at end of file
814 //creats the output file with a timestamp in the name
No newline at end of file
815 FILE * create_Output(char *fname, time_t rawtime){
No newline at end of file
816 FILE *file;
No newline at end of file
817 char timestamp[80];//, counter[5]="dcv";
No newline at end of file
818 //char str[4];
No newline at end of file
819 struct tm * timeinfo;
No newline at end of file
820
No newline at end of file
821 //format time
No newline at end of file
822 timeinfo = localtime ( &rawtime );
No newline at end of file
823 strftime (timestamp,sizeof(timestamp),"%a %y-%m-%d %H:%M:%S %Z",timeinfo);
No newline at end of file
824
No newline at end of file
825
No newline at end of file
826 //Creates the file name out of the #define parameters
No newline at end of file
827
No newline at end of file
828 strcpy (fname, "/mnt/sd/archivos/absmonitoreo.txt");
No newline at end of file
829 file = fopen(fname,"a+");
No newline at end of file
830 fprintf(file,"%s", timestamp);
No newline at end of file
831 //printf("\nTerminada la prueba # %d. Guardando resultado en %s\n",r, fname);
No newline at end of file
832 //printf("\nTerminada la prueba # %d/%d. Writing data to the file %s\n",r+1 , REP, fname);
No newline at end of file
833 //printf("\nAAAAAAAAAA %d...%s\n", counter[1], fname);
No newline at end of file
834 // return file pointer
No newline at end of file
835 return file;
No newline at end of file
836 }
No newline at end of file
837
No newline at end of file
838 //++++++++++++++++++++
No newline at end of file
839
No newline at end of file
840 //tests if a file already exists. returns 1 if it exists and 0 if it doesn't
No newline at end of file
841
No newline at end of file
842
No newline at end of file
843
No newline at end of file
844 //Funci�n checkTx verifica que la se�al muestreada corresponda a un pulso.
No newline at end of file
845 //results1 y results2 son los arreglos que contienen los datos muestreados por ambos canales del ADC del embebido.
No newline at end of file
846 //umbral indica qu� valor debe superar una muestra para considerarla un posible pulso o pico.
No newline at end of file
847 //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
848 int checkTx(long int results1[],long int results2[], float umbral, int pulsewidth){
No newline at end of file
849
No newline at end of file
850 int i, cont;
No newline at end of file
851 float z[NSAMPLES], sum, avg;
No newline at end of file
852 int isSignal, pulse;
No newline at end of file
853
No newline at end of file
854 for(i=0;i<NSAMPLES;i++){
No newline at end of file
855
No newline at end of file
856 z[i] =sqrt(1.0*results1[i]*results1[i]+1.0*results2[i]*results2[i]);
No newline at end of file
857 }
No newline at end of file
858
No newline at end of file
859 pulse = 0;
No newline at end of file
860 isSignal = 0;
No newline at end of file
861 cont =0;
No newline at end of file
862
No newline at end of file
863 sum = 0;
No newline at end of file
864 for(i=0;i<NSAMPLES;i++){
No newline at end of file
865
No newline at end of file
866 sum += z[i];
No newline at end of file
867 avg = sum/(i+1);
No newline at end of file
868 if ((z[i] - avg) > umbral){
No newline at end of file
869 if (isSignal == 1){
No newline at end of file
870 cont += 1;
No newline at end of file
871 }
No newline at end of file
872 if (cont == pulsewidth){
No newline at end of file
873 pulse = 1;
No newline at end of file
874 break;
No newline at end of file
875 }
No newline at end of file
876 isSignal = 1;
No newline at end of file
877 continue;
No newline at end of file
878 isSignal = 0;
No newline at end of file
879 cont = 0;
No newline at end of file
880 }
No newline at end of file
881 }
No newline at end of file
882
No newline at end of file
883 return pulse; //devuelve un entero: 1 si se ha detectado pulso, de lo contrario, 0.
No newline at end of file
884 }
No newline at end of file
885
No newline at end of file
886
No newline at end of file
887 int fExists(char * fname){
No newline at end of file
888 FILE * file;
No newline at end of file
889
No newline at end of file
890 file = fopen (fname, "r");
No newline at end of file
891 if (file == NULL)
No newline at end of file
892 {
No newline at end of file
893 return 0;
No newline at end of file
894 }
No newline at end of file
895 fclose(file);
No newline at end of file
896 return 1;
No newline at end of file
897 }
No newline at end of file
898
No newline at end of file
899
No newline at end of file
900 //Funci�n que calcula la mediana de un conjunto de muestras
No newline at end of file
901 double mediana(long int *results,unsigned int cuenta){
No newline at end of file
902 unsigned int i=0,j=0,aux=0;
No newline at end of file
903
No newline at end of file
904 double median=0;
No newline at end of file
905 /*Calculo mediana */
No newline at end of file
906
No newline at end of file
907 for(i=0;i<cuenta-1;i++){
No newline at end of file
908 for (j=i+1;j<cuenta;j++){
No newline at end of file
909 if(results[i]>results[j] ){
No newline at end of file
910
No newline at end of file
911 aux=results[i];
No newline at end of file
912 results[i]=results[j];
No newline at end of file
913 results[j]=aux;
No newline at end of file
914
No newline at end of file
915 }
No newline at end of file
916 }
No newline at end of file
917
No newline at end of file
918 }
No newline at end of file
919 median=results[cuenta/2];
No newline at end of file
920 return median;
No newline at end of file
921 }
No newline at end of file
922
No newline at end of file
923
No newline at end of file
924
No newline at end of file
925 //Funci�n que halla la fase de la se�al.
No newline at end of file
926 //Tiene como entradas las muestras correspondientes a la parte real e imaginaria de la se�al.
No newline at end of file
927 float getPhase(long int results1[],long int results2[]){
No newline at end of file
928
No newline at end of file
929 unsigned int count=0, i=0,umbral=1000;
No newline at end of file
930 //long int results1[];
No newline at end of file
931 //long int results2[];
No newline at end of file
932 long int power[NSAMPLES];
No newline at end of file
933 long int sumI=0,sumQ=0,I[NSAMPLES], Q[NSAMPLES],II[NSAMPLES], QQ[NSAMPLES];
No newline at end of file
934 double median1=0,median2=0;
No newline at end of file
935 long int promedioI=0,promedioQ=0;/*Calculo mediana 1*/
No newline at end of file
936 float resultado=0;
No newline at end of file
937
No newline at end of file
938 for(i=0;i<NSAMPLES;i++){
No newline at end of file
939
No newline at end of file
940 I[i] =results1[i];
No newline at end of file
941 Q[i] =results2[i];
No newline at end of file
942 }
No newline at end of file
943
No newline at end of file
944 /*Calculo mediana 1*/
No newline at end of file
945 median1=mediana(I,NSAMPLES);
No newline at end of file
946
No newline at end of file
947 /*Calculo mediana 2*/
No newline at end of file
948 median2=mediana(Q,NSAMPLES);
No newline at end of file
949
No newline at end of file
950
No newline at end of file
951
No newline at end of file
952
No newline at end of file
953
No newline at end of file
954
No newline at end of file
955 for(i=0;i<NSAMPLES;i++){
No newline at end of file
956
No newline at end of file
957 I[i] =results1[i];
No newline at end of file
958 Q[i] =results2[i];
No newline at end of file
959
No newline at end of file
960 }
No newline at end of file
961
No newline at end of file
962
No newline at end of file
963
No newline at end of file
964 for(i = 0; i < NSAMPLES ; i++){
No newline at end of file
965
No newline at end of file
966 I[i]=(I[i]-median1);
No newline at end of file
967 Q[i]=(Q[i]-median2);
No newline at end of file
968
No newline at end of file
969 }
No newline at end of file
970
No newline at end of file
971 for(i = 0; i < NSAMPLES ; i++){
No newline at end of file
972
No newline at end of file
973 power[i]=I[i]*I[i]+Q[i]*Q[i];
No newline at end of file
974
No newline at end of file
975 if(power[i] > umbral)
No newline at end of file
976 {
No newline at end of file
977
No newline at end of file
978 II[count]=I[i];
No newline at end of file
979 QQ[count]=Q[i];
No newline at end of file
980 count=count+1;
No newline at end of file
981
No newline at end of file
982 }
No newline at end of file
983
No newline at end of file
984 }
No newline at end of file
985
No newline at end of file
986 for(i = 0; i < count ; i++){
No newline at end of file
987
No newline at end of file
988 sumI=sumI+II[i];
No newline at end of file
989 sumQ=sumQ+QQ[i];
No newline at end of file
990
No newline at end of file
991 }
No newline at end of file
992
No newline at end of file
993 promedioI=sumI;
No newline at end of file
994 promedioQ=sumQ;
No newline at end of file
995
No newline at end of file
996 resultado = atan2(1.0*promedioI,1.0*promedioQ)*180/3.1416+62-44;
No newline at end of file
997
No newline at end of file
998
No newline at end of file
999 return resultado;
No newline at end of file
1000
No newline at end of file
1001 }
No newline at end of file
1002
No newline at end of file
1003
No newline at end of file
1004
No newline at end of file
1005 //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
1006 void writeOutput(float resultado, FILE * output){
No newline at end of file
1007
No newline at end of file
1008
No newline at end of file
1009 //
No newline at end of file
1010
No newline at end of file
1011 fprintf(output," %1.2f ",resultado); //graba resultado en archivo .txt
No newline at end of file
1012 //
No newline at end of file
1013
No newline at end of file
1014 }
No newline at end of file
1015
No newline at end of file
1016 int configCLK(){
No newline at end of file
1017 //configuro pin:
No newline at end of file
1018 AT91S_PMC *sys_clock;
No newline at end of file
1019 sys_clock = clock_map(CLOCK_BASE);
No newline at end of file
1020 enable_clock_adc(sys_clock);
No newline at end of file
1021 //printf("clock ADC enable.\n");
No newline at end of file
1022 return 1;
No newline at end of file
1023 } No newline at end of file
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now