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, и я не знаю, исправлено это или нет. Я не уверен, обновляется ли библиотека до сих пор и не связана ли эта проблема с самой библиотекой.
Есть ли у кого-нибудь какие-либо рекомендации или решение этой проблемы? Это очень помогло бы, спасибо
@BruceWawe, 👍1
Обсуждение1 ответ
Лучший ответ:
Хорошо, забавная история, кажется, я нашел решение, не знаю почему, но: Моя установка (такая же):
- Attiny85 (1 МГц (устанавливается в загрузчике))
- Дешевый передатчик 433 МГц (FS1000A)
- Библиотека микроконтроллеров Attiny
При записи загрузчика с частотой 1 МГц и загрузке скетча может показаться, что удаление строки man.workAround1MhzTinyCore();
заставляет его работать.
Без линии это работает, а с обходом НЕТ
Вуаля!
- Выбор PIN для подключения радиочастотного приемника
- ATTINY85 - Радиочастотный передатчик (RH ASK)
- Радиочастотный пакетный импульс 433 МГц с микросхемой ATTiny85
- Attiny85 с 433 МГц вч, работал отлично нано к нано, не attiny85 к нано
- Как получить исходные файлы для библиотек Arduino?
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
Комментарии в коде библиотеки предполагают, что это проблема с ядром. Вы можете искать в проблемах ядра на github или открыть свою собственную проблему, чтобы узнать, исправлена ли она. Хотя, поскольку вы сообщаете, что это не работает без обходного пути, я не думаю, что это исправлено. Обходной путь не работает для вас?, @chrisl
Привет, спасибо за быстрый ответ, нет, обходной путь не работает для меня. Вы имеете в виду ядро крошечной библиотеки или ядро манчестерской библиотеки?, @BruceWawe
Ядром в мире Arduino является пакет поддержки для определенных групп плат/микроконтроллеров (установленный из менеджера плат). Так что это ядро Tiny и библиотека Manchester, а не наоборот. Так что да, под ядром я подразумеваю ядро Tiny (или любое другое ядро, которое вы установили для Attiny)., @chrisl
В связанной проблеме библиотеки Manchester также говорится, что вызовы
delay()
работают неправильно (значение 5000 мс дает задержку только в 1 с). У вас тоже такое бывает? Пожалуйста, также проверьтеdelayMicroseconds()
, так как это функция, используемая в библиотеке Manchester., @chrislХорошо, спасибо за подсказку, мне удалось протестировать его, и, похоже, он работает правильно, каждый раз я получаю примерно 5 секунд с
delay()
иdelayMicroseconds()
, @BruceWawe