Проблема с таймингами на WeMos XI (красный клон Ардуино)

Всем доброго дня.
Я работаю с проектом Aruino, который управляет платой синтезатора частоты на Si5351 (на самом деле это не важно).
Важно то, что там очень значимы тайминги, в частности - задержки между импульсами.

Я нашел готовый проект на GitHub и отредактировал его под свои нужды. Первый раз запустил на Arduino Nano - всё работал нормально. Но для окончательного устройства нужно было использовать «клон Ардуино» — WeMos XI.
image
Когда я запустил проект на этой плате - всё заработало в несколько раз медленнее. Импульсы стали длиннее, что уже недопустимо для конструкции.

// ***** Function to transmit 'space' (higher FSK tone) for BIT_TIME microseconds  *****
void TransmitSpace(int BIT_TIME) 
{
      long NOW = micros();
      long END = NOW + BIT_TIME;
      setFrequency(SPACE_FREQ);
      digitalWrite(FSK_PIN, LOW);
      do { NOW = micros(); } while (NOW < END);
}

// ***** Function to transmit 'mark' (lower FSK tone) for BIT_TIME microseconds  *****
void TransmitMark(int BIT_TIME) 
{
      long NOW = micros();
      long END = NOW + BIT_TIME;
      digitalWrite(FSK_PIN, HIGH);
      setFrequency(MARK_FREQ);
      do { NOW = micros(); } while (NOW < END);
}

Предполагаю: программа с помощью оператора millis() считает время с момента запуска, а в переменной BIT_TIME устанавливается как раз длительность импульса в этих самых миллисекундах. Вроде все должно работать независимо от тактовой частоты.

Однако что пошло не так?

Пожалуйста помогите!

Это чип LGT8F328, по умолчанию заводится на 4МГц. Надо поставить аддон для WeMos XI

1 лайк

Спасибо!
Прошу дать наводку - дальше погуглю сам, что за аддон и какую проблему он решит? “Разгонит” проц на WeMos, или…?

Вверху ссылка “Старый форум”, там поиск → LGT8F328

Всем спасибо! Кажется, я нашёл решение, сейчас буду пробовать