Как известно, у Attiny85 нет Serial. Но есть всячески эмуляции, через которые таки можно читать/писать в порт. У меня Digispark ATtiny85 как на фото: https://disk.yandex.ru/i/yiexe2BMArZ7Dg Беру скетч Print.ini из примеров в Arduino IDE .arduino15/packages/digistump/hardware/avr/1.6.7/libraries/DigisparkCDC/examples/Print/Print.ino Код (C++): #include <DigiCDC.h> void setup() { // initialize the digital pin as an output. SerialUSB.begin(); /* remember the SerialUSB starts as soon as you call begin and doesn't restart the board when you open the serial monitor (like the uno does) - so if you print to it and you don't have a serial monitor open that text is lost. */ } // the loop routine runs over and over again forever: void loop() { SerialUSB.println(F("TEST!")); //wrap your strings in F() to save ram! SerialUSB.delay(10); /* if you don't call a SerialUSB function (write, print, read, available, etc) every 10ms or less then you must throw in some SerialUSB.refresh(); for the USB to keep alive - also replace your delays - ie. delay(100); with SerialUSB.delays ie. SerialUSB.delay(100); */ } И заливаю в микроконтроллер по стандартной для digispark схеме, т.е. через передергивание кабеля. Загрузка проходит успешно и через минутку появляется порт - можно открывать монитор порта. Открываю и вижу вместо "TEST!" только первую букву "Т". Может остальные буквы где-то потерялись? Оставляю монитор порта открытым и передёргиваю тинку. Через минуту в порт падает ещё одна буква "T". И больше ничего. Можно изменить текст в скетче, но по прежнему на вывод уйдет только первый символ из строки. Если идет несколько команд вывода друг за другом, то остальные строки игнорируются вообще: Код (C++): SerialUSB.println(F("1_Line")); SerialUSB.println(F("2_Line")); Этот код выведет в монитор символ "1". По всяческим примерам в интернет я вижу, что код из примера должен отработать так, как ожидается, т.е. вывести строку полностью. Что я делаю не так?
Я смогу и читать, и писать в com-порт? А можно подробнее, как это делается. Я немного погуглил, пишут про какой-то USI-модуль. Если нужно прикручивать к тинке еще одну плату модуля, то это есть не очень хорошо, т.к. потеряю компактность сборки.
Вы - нет, не можете, иначе этого топика бы не было. Пожалуйста, вот аппнота от Микрочипа - там всё написано. К этой аппонте есть готовые примеры кода, там же на сайте Микрочипа.
"Half Duplex UART" - если не ошибаюсь, это значит, что передача данных будет работать только в одну сторону. Плюс непонятно, что я дожен добавить в схему кроме собственно самого мк и USB кабеля. Мне нужен вариант, где работает Serial.read() и Serial.println(). Отдельная программа слушает COM-порт компьютера и принимает данные от Attiny85 по USB, парсит их, и отправляет ответ назад в порт. Уточнил на всякий, т.к. вижу, что много примеров, где uart используется для того, чтобы перекинуть rx/tx куда-нибудь на ардуино например или другое устройство.
Сегодня получил по почте с Али две платки Дигиспарк-ов. Сначала комп писал, что неопознанный (летающий) УСБ объект. После установки драйверов - -libusb-win32 devices. Но в IDE не появилось никакого нового КОМ порта. Так что подошел к той же грани, что и многие до меня. Вопрос - ну и как с ней работать дальше ? ПС. Уточняю недописанное ночью. - После установки драйверов, в диспетчере устройств появляется: libusb-win32 devices => Digispark Bootloader. Так что бутлоадер в ней прописан. Но как указать ИДЕ-шке его присутствие, ведь ком-портов не появляется. Предустановлен классический блинк. Мигает исправно
Блин. Далеко не с первого раза нашел ответ. Вообще все касающееся Дигиспарки надо бы начинать именно с него.