Всем доброго дня. Пытаюсь прошуть tiny85. Вроде как собрал из Ардуино программатор, подключил к тиньке, написал скретч чтобы поморгать светодиодом, поставил библиотеки, выбрал соответствующую плату, нажимаю залить и наблюдаю следующее: avrdude: usbdev_open(): did not find any USB device "usb". Кто-нибудь может подсказать что делать? В инете рылся почти неделю, шаманство не помогло.
Можете включить «Show verbose output during upload» через File -> Preferences и скопировать вывод Arduino IDE при заливке? Ваш avrdude явно не находит «подключенного USB программатора» коим должна прикинуться Arduino. С полным выводом можно будет рассуждать дальше.
Подключил. Выдает: Почти неделю ковырялся не переключая тип плапты, решил залить другой код в Ардуино и обнаружил, что порт COM3 (на котором всегда работал) вообще в программе отсутствует есть только COM1. Соответственно не смог залить другую прошивку. Или после прошивки Ардуино в программатор ее нужно как-то востанавливать? Еще подскажите при прошшивке tyni в меню Сервис>>Программатор должно стоять Arduino as ISP? Или это работает только при прошивке через программатор (соответствующий пункт в меню Файл). Пробую востановить COM3.
Аминь! Снес все драйвера. Востановил порт. Только теперь у меня COM3 (как утверждает компьютер) занят каким-то устройством, перешел на COM5. Все собрал еще раз. Заработало! Залил моргалку светодиодом. Задержка почему-то очень длинная. Выставил интервал 50мс, а моргает через 500 а то и больше. Это из-за отсутствия внешнего кварца?
После долгих ковыряний с tiny заметил одну особенность: время задержки функции delay() напрямую связано с выставленной частотой т.е. delay(1000); - частота 1 МГц - задержка 1 сек. delay(1000); - частота 8 МГц - задержка 8 сек. delay(1000); - частота 16 МГц - задержка 16 сек. Прошиваю в Attiny84. Собственно хочу спросить: кто-нибудь пытался подключить датчики к тини и получилось ли? Пытался запустить ультразвуковой дальномер, работает (слышен очень тихий щелчек) но данные с него (гасить светодиод при уменьшении расстояния) получить так и не смог. На УНО тотже код работает. Также написал управление RGB светодиодной лентой, заливал в тот же тини тоже работает. А вот более сложные датчики запустить так и не смог. Может у кого получалось?
Это от того, что неверно задается #define F_CPU, величина в программе должна соответствовать действительной частоте контроллера. А можно ли более конкретно? Что, как, откуда, куда, и т.д. и т.п. Ну и по одному датчику за раз.
Функция delay(..) устроена так, что она заставляет микроконтроллер работать "вхолостую" нужное число тактов. Так как, время одного такта известно (1/частота), таким образом высчитывается нужное время. Если реальная тактовая частота не соответствует тому, что указанно в МК, время тоже не будет соответствовать. Притом, ошибка будет пропорциональна отношению этих частот.
А задать ее как-то можно, чтобы в delay работать с величиной в милисекундах? Пытаюсь подключить ультразвуковой дальномер HC-SR04. Код такой: Код (C): int ledpin0=0; //Контакт отладочного светодиода int ledpin=1; //Контакт светодиода //Контакты дальномера int inputPin=9; // Echo int outputPin=10; // Trig void setup() { //Установка пинов pinMode(ledpin0,OUTPUT); pinMode(ledpin,OUTPUT); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); digitalWrite(ledpin0,LOW); } void loop() { //Получение данных с дальномера //************************************** digitalWrite(outputPin, LOW); delayMicroseconds(2); digitalWrite(outputPin, HIGH); delayMicroseconds(10); digitalWrite(outputPin, LOW); int distance = pulseIn(inputPin, HIGH); distance= distance/58; delay(50); //************************************** if (distance<30) { digitalWrite(ledpin0, HIGH); //delay(50); } else { digitalWrite(ledpin0, LOW); //delay(50); } } З.Ы. Забыл указать: подключаю к tiny84
Ну я примерто так и понял. Только непонятно если частота растет, то время должно уменьшаться т.к. контроллер работает быстрее - за единицу времени проходит большее количество циклов. На деле зависимось обратнопропорциональная, не пойму почему?
Извиняюсь F_CPU это тактовая частота? Если да то я вроде писал. Только что проверил, прошивал одним и темже кодом тини84 (код - мигалка светодиодом через delay(1000), заливал подряд не отключая, при 16МГц подключен кварц, спаяно на макетной плате).
Есть реальная тактовая частота, а есть "частота" F_CPU для программы. У вас реально контроллер как работает? Если вы при реальной частоте в 1МГц начнете крутить F_CPU в большую сторону, тогда да, программа будет думать, что у вас быстрый процессор и увеличивать число тактов ожидания, а на самом деле контроллер работает медленнее и будет увеличиваться задержка. Логично. #define F_CPU не задает реальную частоту работы чипа, это "хак", через который программе сообщается реальная частота процессора, сама программа без каких-либо точных вторых часов не сможет определить истинное значение у F_CPU или нет.
Так, понятно. Я прошивал тини84 через среду программирования Arduino с установленной библиотекой для tiny. Соответственно выбирал варианты на 1, 8 и 16 МГц. Получается что прошивая тини таким образом его реальная частота не меняется, а остается 1 МГц. А низкая частота контроллера может стать причиной того, что я немогу с дальномера данные получить?