Bonjour,
Difficulté à la consigne: “Read the accelerometer and magnetometer values every 500ms in an endless loop in the thread handler function”.
Je n’arrive pas à lire les deux sensors (problème dans la gestion des Threads et Loop).
Voici mon main.c et je n’obtiens dans le terminal que le print des données du sensor 1 (Pressure/temp).
///
#include <stdio.h>
#include “thread.h”
#include “xtimer.h”
/* Add lps331ap related include here */
#include “lpsxxx.h”
#include “lpsxxx_params.h”
/* Add lsm303dlhc related include here */
#include “lsm303dlhc.h”
#include “lsm303dlhc_params.h”
/* Declare the lps331ap device variable here */
static lpsxxx_t lpsxxx;
/* Declare the lsm303dlhc device variable here */
static lsm303dlhc_t lsm303dlhc;
static char stack[THREAD_STACKSIZE_MAIN];
static void *thread_handler(void *arg)
{
(void)arg;
/* Add the lsm303dlhc sensor polling endless loop here */
return 0;
}
int main(void)
{
/* Initialize the lps331ap sensor here */
lpsxxx_init(&lpsxxx, &lpsxxx_params[0]);
/* Initialize the lsm303dlhc sensor here */
lsm303dlhc_init(&lsm303dlhc, lsm303dlhc_params);
thread_create(stack, sizeof(stack), THREAD_PRIORITY_MAIN - 2,
0, thread_handler, NULL, "lsm303dlhc");
thread_create(stack, sizeof(stack), THREAD_PRIORITY_MAIN - 1,
0, thread_handler, NULL, "lpsxxx");
/* Add the lps331ap sensor polling endless loop here */
while (1) {
uint16_t pres = 0;
int16_t temp = 0;
lpsxxx_read_temp(&lpsxxx, &temp);
lpsxxx_read_pres(&lpsxxx, &pres);
printf("Pressure: %uhPa, Temperature: %u.%u°C\n",
pres, (temp / 100), (temp % 100));
xtimer_sleep(2);
}
while (1) {
lsm303dlhc_3d_data_t mag_value;
lsm303dlhc_3d_data_t acc_value;
lsm303dlhc_read_acc(&lsm303dlhc, &acc_value);
printf("Accelerometer x: %i y: %i z: %i\n",
acc_value.x_axis, acc_value.y_axis, acc_value.z_axis);
lsm303dlhc_read_mag(&lsm303dlhc, &mag_value);
printf("Magnetometer x: %i y: %i z: %i\n",
mag_value.x_axis, mag_value.y_axis, mag_value.z_axis);
xtimer_usleep(500 * US_PER_MS);
}
return 0;
}
/////
N’ayant pas de base en programmation, je suis un peu perdu sur ce point.
J’ai essayé de joué avec les valeurs de priorisations des threads… pas d’amélioration.
Merci pour vos conseils !