Commit e873cff7eec328a612ab225a116f50af089194e2

Authored by root
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  
... ...