Всем привет! Подключила библиотеку и модуль к ардуино-микро-про. Запускаю пример из wiki. Задержку между выводами в СОМ-порт ставлю равной 100 мс (delay(100)), а в итоге данные получаю примерно 2 раза в секунду. При этом millis() считает, что прошло именно 100 мс... Кто-нибудь сталкивался? Подскажите, куда копать? #include <GOST4401_81.h> #include <l3g4200d.h> #include <lis331dlh.h> #include <lis3mdl.h> #include <LPS331.h> #include <MadgwickAHRS.h> #include <stmhw.h> //#include <troyka-imu.h> #include <TroykaIMU.h> // создаём объект для работы с гироскопом Gyroscope gyro; void setup() { // открываем последовательный порт Serial.begin(115200); // выводим сообщение о начале инициализации Serial.println("Gyroscope init..."); // инициализация гироскопа gyro.begin(); // устанавливаем чувствительность гироскопа // 250dps — по умолчанию, 500dps, 2000dps gyro.setRange(RANGE_2000DPS); // выводим сообщение об удачной инициализации Serial.println("Initialization completed"); } void loop() { // вывод угловой скорости в градусах в секунду относительно оси X Serial.print(gyro.readDegPerSecX()); Serial.print("\t\t"); // вывод угловой скорости в градусах в секунду относительно оси Y Serial.print(gyro.readDegPerSecY()); Serial.print("\t\t"); // вывод угловой скорости в градусах в секунду относительно оси Z Serial.print(int(gyro.readDegPerSecZ()+0.5)); Serial.print("\t\t"); Serial.println(""); delay(100); }
millis() в коде не видно. delay() и millis() разные вещи. Если стоит delay(100) - это не значит, что данные будут выводиться точно через 100мс. Ещё тратиться время на обработку других команд.
Я добавляла вывод millis()в четвертый столбик: Serial.print(int(gyro.readDegPerSecZ()+0.5)); Serial.print("\t\t"); Serialprint(millis()); Serial.println(""); delay(100); Сначала скопировала код, а потом, до того, как отправить, проверила результат выполнения millis(). Я знаю, что delay() не умеет давать точную задержку, посколько нужно время на выполнение других операций. Но обновление данных о положении гироскопа и чтение по i2c проходит достаточно быстро, особенно если выставить минимальную чувствительность гироскопа. И вывод на uart тоже ну никак не может затянуться на 400 мс...
А какие fuse-bits у arduino pro micro? Бит деления внешней частоты на 8 должен быть запрограммирован или нет? Микроконтроллер atmega32u4