Commit e873cff7eec328a612ab225a116f50af089194e2
1 parent
0f803f1d
application real-time ~OK (bug intermittent)
Showing
1 changed file
with
33 additions
and
33 deletions
Show diff stats
RIOT/examples/real_time_app/main.c
... | ... | @@ -80,6 +80,7 @@ |
80 | 80 | |
81 | 81 | #define PWM_FREQ 100 |
82 | 82 | #define PWM_RES 100 |
83 | +#define DEADLINE 70000 | |
83 | 84 | |
84 | 85 | // addr ipv6 link local node 1: fe80::3734:510e:3317:3402 |
85 | 86 | uint8_t node1[16]={0xfe,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x34,0x51,0x0e,0x33,0x17,0x34,0x02}; |
... | ... | @@ -102,6 +103,7 @@ kernel_pid_t server, client, time_server; |
102 | 103 | int ordre = 0; |
103 | 104 | int64_t offset = 0; |
104 | 105 | int timer_run = 0; |
106 | +int tourne = 0; | |
105 | 107 | sock_udp_ep_t local = SOCK_IPV6_EP_ANY; |
106 | 108 | sock_udp_t sock; |
107 | 109 | sock_udp_ep_t local_ntp = SOCK_IPV6_EP_ANY; |
... | ... | @@ -151,7 +153,7 @@ void *sock_time_server_thread(void *arg) |
151 | 153 | } |
152 | 154 | return NULL; |
153 | 155 | } |
154 | -void *pwm_thread(void *arg) | |
156 | +/*void *pwm_thread(void *arg) | |
155 | 157 | { |
156 | 158 | (void) arg; |
157 | 159 | int tourne = 0; |
... | ... | @@ -173,7 +175,7 @@ void *pwm_thread(void *arg) |
173 | 175 | |
174 | 176 | } |
175 | 177 | return NULL; |
176 | -} | |
178 | +}*/ | |
177 | 179 | |
178 | 180 | void *sock_server_thread(void *arg) |
179 | 181 | { |
... | ... | @@ -190,9 +192,6 @@ void *sock_server_thread(void *arg) |
190 | 192 | return NULL; |
191 | 193 | } |
192 | 194 | |
193 | - //sntp_sync(&local,5000); | |
194 | - //printf("temps : %i\n",(int)sntp_get_offset()); | |
195 | - | |
196 | 195 | while (1) { |
197 | 196 | sock_udp_ep_t remote; |
198 | 197 | ssize_t res; |
... | ... | @@ -211,38 +210,38 @@ void *sock_server_thread(void *arg) |
211 | 210 | offset = sntp_get_offset(); |
212 | 211 | deadline = xtimer_now_usec() + offset - buf.heure_actuelle; |
213 | 212 | printf("tps de transmission : %i\n",deadline); |
214 | - printf("compteur : %d\n",compteur); | |
215 | - if(deadline<=70000 && compteur >=5) | |
216 | - { | |
217 | - ordre = 1; | |
218 | - timer_clear(TIMER_DEV(1),0); | |
219 | - } | |
220 | - else if(deadline<=70000 && (ordre == 2 || ordre ==0)) | |
221 | - { | |
222 | - compteur++; | |
223 | - } | |
224 | - else | |
213 | + | |
214 | + if(deadline >= DEADLINE && compteur >=5) | |
225 | 215 | { |
226 | - ordre = 2; | |
216 | + //ordre = 2; | |
227 | 217 | compteur = 0; |
218 | + if(tourne == 1) | |
219 | + pwm_set(PWM_DEV(0),1,31); | |
228 | 220 | if(timer_run == 0) |
229 | 221 | { |
230 | 222 | timer_set(TIMER_DEV(1),0,25200); |
223 | + printf("relance timer\n"); | |
231 | 224 | timer_run = 1; |
232 | 225 | } |
233 | 226 | } |
234 | - | |
235 | - /*if(strcmp((char *)buf,"go")==0) | |
236 | - { | |
237 | - ordre = 1; | |
238 | - timer_set(XTIMER_DEV,0,8400); | |
239 | - timer_clear(TIMER_DEV(1),0); | |
240 | - } | |
241 | - else | |
242 | - { | |
243 | - ordre = 0; | |
244 | - } | |
245 | - }*/ | |
227 | + if(deadline >= DEADLINE && compteur < 5) | |
228 | + { | |
229 | + compteur = 0; | |
230 | + } | |
231 | + if(deadline<=DEADLINE && compteur >=5) | |
232 | + { | |
233 | + //ordre = 1; | |
234 | + pwm_set(PWM_DEV(0),1,45); | |
235 | + tourne = 1; | |
236 | + timer_clear(TIMER_DEV(1),0); | |
237 | + printf("clear timer\n"); | |
238 | + } | |
239 | + if(deadline<=DEADLINE && compteur <5) | |
240 | + { | |
241 | + compteur++; | |
242 | + } | |
243 | + | |
244 | + printf("compteur : %d\n",compteur); | |
246 | 245 | memset(&buf,0,sizeof(buf)); |
247 | 246 | } |
248 | 247 | } |
... | ... | @@ -274,15 +273,16 @@ void *sock_client_thread(void *arg) |
274 | 273 | if (sock_udp_send(NULL, &data, sizeof(data), &remote) < 0) { |
275 | 274 | puts("Error sending message"); |
276 | 275 | } |
277 | - xtimer_sleep(1); | |
276 | + xtimer_sleep(2); | |
278 | 277 | } |
279 | 278 | return NULL; |
280 | 279 | } |
281 | 280 | |
282 | 281 | static void arret_urgence(void *arg,int channel) |
283 | 282 | { |
284 | - //pwm_set(PWM_DEV(0),1,0); | |
285 | - ordre=0; | |
283 | + pwm_set(PWM_DEV(0),1,0); | |
284 | + tourne = 0; | |
285 | + //ordre=0; | |
286 | 286 | timer_run = 0; |
287 | 287 | printf("Arret d'urgence\n"); |
288 | 288 | } |
... | ... | @@ -310,7 +310,7 @@ static void _init_pwm(void) |
310 | 310 | pwm_init(PWM_DEV(0), PWM_LEFT, PWM_FREQ, PWM_RES); |
311 | 311 | pwm_set(PWM_DEV(0),1,0); |
312 | 312 | |
313 | - thread_create(pwm_stack,sizeof(pwm_stack),8,THREAD_CREATE_STACKTEST,pwm_thread,NULL,"pwm_thread"); | |
313 | +// thread_create(pwm_stack,sizeof(pwm_stack),7,THREAD_CREATE_STACKTEST,pwm_thread,NULL,"pwm_thread"); | |
314 | 314 | } |
315 | 315 | |
316 | 316 | ... | ... |