1 МГц Attiny85 RF с библиотекой MANCHESTER

Я пытаюсь настроить передатчик, состоящий из следующих компонентов:

  • Attiny85 (мне нужна скорость 1 МГц)
  • Дешевый передатчик 433 МГц (FS1000A)

Я использую библиотеку Manchester GitHub. Attiny85 и передатчик питаются от стабилизированного напряжения 5 В. Я установил 1MHZ при записи загрузчика для крошечного.

Мне успешно удается передавать на частотах 8 И 16 МГц с моим Attiny85, однако частота 1 МГц, похоже, работает неправильно. Для 1 МГц на крошечном, эту строку необходимо добавить, чтобы настроить тайминги:

man.workAround1MhzTinyCore();

Вот полный код:

#include <Manchester.h>
/*
  Manchester Transmitter example
  In this example transmitter will send one 16 bit number
  per transmission.
  Try different speeds using these constants, your maximum
  possible speed will depend on various factors like transmitter
  type, distance, microcontroller speed, ...
  MAN_300 0
  MAN_600 1
  MAN_1200 2
  MAN_2400 3
  MAN_4800 4
  MAN_9600 5
  MAN_19200 6
  MAN_38400 7
*/
#define TX 2 //контакт, к которому подключен ваш передатчик

uint8_t transmit_data = 11;
void setup() {
  man.workAround1MhzTinyCore();
  //pinMode(RX, OUTPUT);
  man.setupTransmit(TX, MAN_300);
  pinMode(1, OUTPUT);
}
void loop() {
  digitalWrite(1, HIGH);
  man.transmit(transmit_data);
  delay(100);
  digitalWrite(1, LOW);

  delay(200);
}

У кого-то есть эта проблема Не удается передать на частоте 1 МГц attiny85, и я не знаю, исправлено это или нет. Я не уверен, обновляется ли библиотека до сих пор и не связана ли эта проблема с самой библиотекой.

Есть ли у кого-нибудь какие-либо рекомендации или решение этой проблемы? Это очень помогло бы, спасибо

, 👍1

Обсуждение

Комментарии в коде библиотеки предполагают, что это проблема с ядром. Вы можете искать в проблемах ядра на github или открыть свою собственную проблему, чтобы узнать, исправлена ли она. Хотя, поскольку вы сообщаете, что это не работает без обходного пути, я не думаю, что это исправлено. Обходной путь не работает для вас?, @chrisl

Привет, спасибо за быстрый ответ, нет, обходной путь не работает для меня. Вы имеете в виду ядро крошечной библиотеки или ядро манчестерской библиотеки?, @BruceWawe

Ядром в мире Arduino является пакет поддержки для определенных групп плат/микроконтроллеров (установленный из менеджера плат). Так что это ядро Tiny и библиотека Manchester, а не наоборот. Так что да, под ядром я подразумеваю ядро Tiny (или любое другое ядро, которое вы установили для Attiny)., @chrisl

В связанной проблеме библиотеки Manchester также говорится, что вызовы delay() работают неправильно (значение 5000 мс дает задержку только в 1 с). У вас тоже такое бывает? Пожалуйста, также проверьте delayMicroseconds(), так как это функция, используемая в библиотеке Manchester., @chrisl

Хорошо, спасибо за подсказку, мне удалось протестировать его, и, похоже, он работает правильно, каждый раз я получаю примерно 5 секунд с delay() и delayMicroseconds(), @BruceWawe


1 ответ


Лучший ответ:

0

Хорошо, забавная история, кажется, я нашел решение, не знаю почему, но: Моя установка (такая же):

  • Attiny85 (1 МГц (устанавливается в загрузчике))
  • Дешевый передатчик 433 МГц (FS1000A)
  • Библиотека микроконтроллеров Attiny

При записи загрузчика с частотой 1 МГц и загрузке скетча может показаться, что удаление строки man.workAround1MhzTinyCore(); заставляет его работать.

Без линии это работает, а с обходом НЕТ

Вуаля!

,