Commit 554a12ad76343e97f9eb0cfd7f03b4575ec4f701
1 parent
c71d0ff5
--no commit message
Showing
3 changed files
with
28 additions
and
15 deletions
Project/applications/smartcities/adc.c
@@ -12,7 +12,7 @@ uint32_t adc_batt_process() | @@ -12,7 +12,7 @@ uint32_t adc_batt_process() | ||
12 | 12 | ||
13 | adcRegisterValue = adc_batt_read(); | 13 | adcRegisterValue = adc_batt_read(); |
14 | analogValue = ADCbatt_VREF_MINUS + (((adcRegisterValue - ADCbatt_MIN_VALUE)*(ADCbatt_VREF_PLUS - ADCbatt_VREF_MINUS))/(ADCbatt_MAX_VALUE - ADCbatt_MIN_VALUE)); | 14 | analogValue = ADCbatt_VREF_MINUS + (((adcRegisterValue - ADCbatt_MIN_VALUE)*(ADCbatt_VREF_PLUS - ADCbatt_VREF_MINUS))/(ADCbatt_MAX_VALUE - ADCbatt_MIN_VALUE)); |
15 | - printf("Register value is %4u [%4u milliVolts are currently given to gpio %s]",adcRegisterValue, analogValue, ADCbatt_GPIO_STR); | 15 | + printf("Register value is %4u [%4u milliVolts are currently given to gpio %s]\r\n",adcRegisterValue, analogValue, ADCbatt_GPIO_STR); |
16 | return analogValue; | 16 | return analogValue; |
17 | } | 17 | } |
18 | 18 | ||
@@ -22,7 +22,7 @@ void adc_batt_peripheralInit() | @@ -22,7 +22,7 @@ void adc_batt_peripheralInit() | ||
22 | ADC_InitTypeDef ADC_InitStructure; | 22 | ADC_InitTypeDef ADC_InitStructure; |
23 | RCC_APB2PeriphClockCmd(ADCbatt_GPIO_RCC, ENABLE); | 23 | RCC_APB2PeriphClockCmd(ADCbatt_GPIO_RCC, ENABLE); |
24 | GPIO_InitStructure.GPIO_Pin = ADCbatt_GPIO_PIN; | 24 | GPIO_InitStructure.GPIO_Pin = ADCbatt_GPIO_PIN; |
25 | - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; | 25 | + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; |
26 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; | 26 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; |
27 | GPIO_Init(ADCbatt_GPIO_PORT, &GPIO_InitStructure); | 27 | GPIO_Init(ADCbatt_GPIO_PORT, &GPIO_InitStructure); |
28 | 28 | ||
@@ -43,6 +43,7 @@ void adc_batt_peripheralInit() | @@ -43,6 +43,7 @@ void adc_batt_peripheralInit() | ||
43 | /* Say how many channels would be used by the sequencer */ | 43 | /* Say how many channels would be used by the sequencer */ |
44 | ADC_InitStructure.ADC_NbrOfChannel = 1; | 44 | ADC_InitStructure.ADC_NbrOfChannel = 1; |
45 | 45 | ||
46 | + ADC_RegularChannelConfig(ADCbatt, ADCbatt_CHANNEL, 1, ADCbatt_SAMPLETIME); | ||
46 | ADC_Init(ADCbatt, &ADC_InitStructure); | 47 | ADC_Init(ADCbatt, &ADC_InitStructure); |
47 | ADC_Cmd(ADCbatt, ENABLE); | 48 | ADC_Cmd(ADCbatt, ENABLE); |
48 | 49 | ||
@@ -58,7 +59,6 @@ void adc_batt_peripheralInit() | @@ -58,7 +59,6 @@ void adc_batt_peripheralInit() | ||
58 | 59 | ||
59 | uint16_t adc_batt_read() | 60 | uint16_t adc_batt_read() |
60 | { | 61 | { |
61 | - ADC_RegularChannelConfig(ADCbatt, ADCbatt_CHANNEL, 1, ADCbatt_SAMPLETIME); | ||
62 | /* Start the conversion */ | 62 | /* Start the conversion */ |
63 | ADC_SoftwareStartConvCmd(ADCbatt, ENABLE); | 63 | ADC_SoftwareStartConvCmd(ADCbatt, ENABLE); |
64 | /* Wait until conversion completion */ | 64 | /* Wait until conversion completion */ |
@@ -79,7 +79,7 @@ uint32_t adc_sound_process() | @@ -79,7 +79,7 @@ uint32_t adc_sound_process() | ||
79 | 79 | ||
80 | adcRegisterValue = adc_sound_read(); | 80 | adcRegisterValue = adc_sound_read(); |
81 | analogValue = ADCsound_VREF_MINUS + (((adcRegisterValue - ADCsound_MIN_VALUE)*(ADCsound_VREF_PLUS - ADCsound_VREF_MINUS))/(ADCsound_MAX_VALUE - ADCsound_MIN_VALUE)); | 81 | analogValue = ADCsound_VREF_MINUS + (((adcRegisterValue - ADCsound_MIN_VALUE)*(ADCsound_VREF_PLUS - ADCsound_VREF_MINUS))/(ADCsound_MAX_VALUE - ADCsound_MIN_VALUE)); |
82 | - printf("Register value is %4u [%4u milliVolts are currently given to gpio %s]",adcRegisterValue, analogValue, ADCsound_GPIO_STR); | 82 | + printf("Register value is %4u [%4u milliVolts are currently given to gpio %s]\r\n",adcRegisterValue, analogValue, ADCsound_GPIO_STR); |
83 | return analogValue; | 83 | return analogValue; |
84 | } | 84 | } |
85 | 85 | ||
@@ -89,7 +89,7 @@ void adc_sound_peripheralInit() | @@ -89,7 +89,7 @@ void adc_sound_peripheralInit() | ||
89 | ADC_InitTypeDef ADC_InitStructure; | 89 | ADC_InitTypeDef ADC_InitStructure; |
90 | RCC_APB2PeriphClockCmd(ADCsound_GPIO_RCC, ENABLE); | 90 | RCC_APB2PeriphClockCmd(ADCsound_GPIO_RCC, ENABLE); |
91 | GPIO_InitStructure.GPIO_Pin = ADCsound_GPIO_PIN; | 91 | GPIO_InitStructure.GPIO_Pin = ADCsound_GPIO_PIN; |
92 | - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; | 92 | + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; |
93 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; | 93 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; |
94 | GPIO_Init(ADCsound_GPIO_PORT, &GPIO_InitStructure); | 94 | GPIO_Init(ADCsound_GPIO_PORT, &GPIO_InitStructure); |
95 | 95 | ||
@@ -110,7 +110,8 @@ void adc_sound_peripheralInit() | @@ -110,7 +110,8 @@ void adc_sound_peripheralInit() | ||
110 | ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; | 110 | ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; |
111 | /* Say how many channels would be used by the sequencer */ | 111 | /* Say how many channels would be used by the sequencer */ |
112 | ADC_InitStructure.ADC_NbrOfChannel = 1; | 112 | ADC_InitStructure.ADC_NbrOfChannel = 1; |
113 | - | 113 | + |
114 | + ADC_RegularChannelConfig(ADCsound, ADCsound_CHANNEL, 1, ADCsound_SAMPLETIME); | ||
114 | ADC_Init(ADCsound, &ADC_InitStructure); | 115 | ADC_Init(ADCsound, &ADC_InitStructure); |
115 | ADC_Cmd(ADCsound, ENABLE); | 116 | ADC_Cmd(ADCsound, ENABLE); |
116 | 117 | ||
@@ -126,7 +127,6 @@ void adc_sound_peripheralInit() | @@ -126,7 +127,6 @@ void adc_sound_peripheralInit() | ||
126 | 127 | ||
127 | uint16_t adc_sound_read() | 128 | uint16_t adc_sound_read() |
128 | { | 129 | { |
129 | - ADC_RegularChannelConfig(ADCsound, ADCsound_CHANNEL, 1, ADCsound_SAMPLETIME); | ||
130 | /* Start the conversion */ | 130 | /* Start the conversion */ |
131 | ADC_SoftwareStartConvCmd(ADCsound, ENABLE); | 131 | ADC_SoftwareStartConvCmd(ADCsound, ENABLE); |
132 | /* Wait until conversion completion */ | 132 | /* Wait until conversion completion */ |
Project/applications/smartcities/include/adc.h
@@ -22,17 +22,17 @@ | @@ -22,17 +22,17 @@ | ||
22 | #define ADCbatt ADC1 | 22 | #define ADCbatt ADC1 |
23 | #define ADCbatt_RCC RCC_APB2Periph_ADC1 /* */ | 23 | #define ADCbatt_RCC RCC_APB2Periph_ADC1 /* */ |
24 | #define ADCbatt_DIVIDER RCC_PCLK2_Div4 /* Can be 2/4/6/8. PCLK2 runs at 32Mhz, and max ADC clock is 14Mhz */ | 24 | #define ADCbatt_DIVIDER RCC_PCLK2_Div4 /* Can be 2/4/6/8. PCLK2 runs at 32Mhz, and max ADC clock is 14Mhz */ |
25 | -#define ADCbatt_CHANNEL ADC_Channel_12 /* 0/17 */ | 25 | +#define ADCbatt_CHANNEL ADC_Channel_1 /* 0/17 */ |
26 | #define ADCbatt_SAMPLETIME ADC_SampleTime_239Cycles5 | 26 | #define ADCbatt_SAMPLETIME ADC_SampleTime_239Cycles5 |
27 | -#define ADCbatt_GPIO_PIN GPIO_Pin_2 | ||
28 | -#define ADCbatt_GPIO_PORT GPIOC | ||
29 | -#define ADCbatt_GPIO_RCC RCC_APB2Periph_GPIOC | ||
30 | -#define ADCbatt_GPIO_STR "PC2" | 27 | +#define ADCbatt_GPIO_PIN GPIO_Pin_1 |
28 | +#define ADCbatt_GPIO_PORT GPIOA | ||
29 | +#define ADCbatt_GPIO_RCC RCC_APB2Periph_GPIOA | ||
30 | +#define ADCbatt_GPIO_STR "PA1" | ||
31 | 31 | ||
32 | #define ADCsound ADC2 | 32 | #define ADCsound ADC2 |
33 | #define ADCsound_RCC RCC_APB2Periph_ADC2 /* */ | 33 | #define ADCsound_RCC RCC_APB2Periph_ADC2 /* */ |
34 | #define ADCsound_DIVIDER RCC_PCLK2_Div4 /* Can be 2/4/6/8. PCLK2 runs at 32Mhz, and max ADC clock is 14Mhz */ | 34 | #define ADCsound_DIVIDER RCC_PCLK2_Div4 /* Can be 2/4/6/8. PCLK2 runs at 32Mhz, and max ADC clock is 14Mhz */ |
35 | -#define ADCsound_CHANNEL ADC_Channel_11 /* 0/17 */ | 35 | +#define ADCsound_CHANNEL ADC_Channel_2 /* 0/17 */ |
36 | #define ADCsound_SAMPLETIME ADC_SampleTime_239Cycles5 | 36 | #define ADCsound_SAMPLETIME ADC_SampleTime_239Cycles5 |
37 | #define ADCsound_GPIO_PIN GPIO_Pin_2 | 37 | #define ADCsound_GPIO_PIN GPIO_Pin_2 |
38 | #define ADCsound_GPIO_PORT GPIOA | 38 | #define ADCsound_GPIO_PORT GPIOA |
Project/applications/smartcities/json.c
@@ -96,7 +96,20 @@ char* prepare_json_register_statement(module mod, sensor sens, char *additional_ | @@ -96,7 +96,20 @@ char* prepare_json_register_statement(module mod, sensor sens, char *additional_ | ||
96 | char* prepare_observation(char* observation, uint32_t length) | 96 | char* prepare_observation(char* observation, uint32_t length) |
97 | { | 97 | { |
98 | char *json_data, *str_aux, *str_aux2; | 98 | char *json_data, *str_aux, *str_aux2; |
99 | - int value_length = find_next_index(observation,length,','); //EXPECTS FORMATTING!!! | 99 | + int value_length = find_next_index(observation,length,','); |
100 | + while(1) | ||
101 | + { | ||
102 | + printf("value_length = %d\r\n",value_length); | ||
103 | + if(find_next_index(observation+value_length+1,length,',')) | ||
104 | + { | ||
105 | + value_length += find_next_index(observation+value_length+1,length,',')+1; | ||
106 | + } | ||
107 | + else | ||
108 | + { | ||
109 | + printf("Comma in %d\r\n",value_length); | ||
110 | + break; | ||
111 | + } | ||
112 | + } | ||
100 | int timestamp_length = length - (value_length + 1); | 113 | int timestamp_length = length - (value_length + 1); |
101 | char *value = (char*) chHeapAlloc(NULL,value_length+1); | 114 | char *value = (char*) chHeapAlloc(NULL,value_length+1); |
102 | char *timestamp = (char*) chHeapAlloc(NULL,timestamp_length+1); | 115 | char *timestamp = (char*) chHeapAlloc(NULL,timestamp_length+1); |
@@ -181,7 +194,7 @@ uint32_t find_next_index(char* string, uint32_t length, char delimiter) | @@ -181,7 +194,7 @@ uint32_t find_next_index(char* string, uint32_t length, char delimiter) | ||
181 | return i; | 194 | return i; |
182 | } | 195 | } |
183 | } | 196 | } |
184 | - return -1; | 197 | + return 0; |
185 | } | 198 | } |
186 | 199 | ||
187 | char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, uint8_t free_mem) | 200 | char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, uint8_t free_mem) |