Характеристики Digispark
- Память программ (FLASH) - 8КБ, из них около 2КБ занимает загрузчик
- ОЗУ (SRAM) - 512 байт
- Энергонезависимая память (EEPROM) - 512 байт
- Тактовая частота 16МГц/16,5МГц
- USI (Universal Serial Interface) - универсальный последовательный интерфейс. Может использоваться в двухпроводном (I2C/TWI) и трехпроводном (SPI) режиме
- 4-х канальный 10-разрядный АЦП
- Аналоговый компаратор
- 2 8-битных таймера-счетчика
- Сторожевой таймер
- 8 выводов, 6 из которых доступны как линии ввода-вывода
- Питание Digispark возможно от USB, либо от внешнего источника 5В или 7-35В (рекомендуется не более 12В)
Платы Digispark работают на частоте 16 или 16,5МГц. Ее источником служит PLL генератор: тактовый сигнал от внутреннего калиброванного RC-генератора (~8МГц) подается на вход умножителя на 8, в результате получается частота 64МГц, затем она делится на 4, что дает системную частоту 16МГц. При подключении Digispark к компьютеру загрузчик калибрует RC-генератор для получения системной частоты 16,5МГц. Начиная с версии загрузчика 1.0.6 калибровочная информация сохраняется внутри микроконтроллера. Предыдущие версии загрузчика этого не делали, поэтому при работе от внешнего источника питания (не от шины USB) такие платы работают на частоте 16МГц.
Также следует упомянуть об одной особенности официальных плат Digispark. Первый вывод микроконтроллера ATtiny85 может использоваться как обычный пин ввода-вывода или как вход внешнего сброса - Reset. Назначение данного вывода определяется фьюзом RSTDISBL (External Reset Disable). Так вот в официальных платах Digispark фьюз RSTDISBL запрограммирован, то есть первый вывод является обычным пином ввода-вывода. В результате нам доступны все 6 линий ввода-вывода ATtiny85, но с другой стороны у нас больше нет входа внешнего сброса, а значит нет возможности что-либо сделать с микроконтроллером, используя ISP программатор. Что касается китайских клонов, то в них данных фьюз может быть как запрограммирован, так и нет.
Добавление Digispark в список плат IDE Arduino
Программирование Digispark осуществляется из среды IDE Arduino, для этого в нее должен быть добавлен пакет Digistump. Это делается через Менеджер плат, который появился в версии IDE 1.6.4. Для начала скопируйте в буфер обмена следующую строку:
http://digistump.com/package_digistump_index.json
http://digistump.com/package_digistump_index.json
Теперь в IDE открываем меню Файл > Настройки и в появившемся окне нажимаем кнопку рядом с полем ввода дополнительных ссылок для Менеджера плат. В открывшемся окне вставляем скопированную ранее ссылку новой строкой. Нажимаем OK для сохранения изменений и выхода из настроек:
Следующий шаг - установка файлов для поддержки Digispark. Переходим в меню Инструменты > Плата > Менеджер плат... Чтобы не искать в списке интересующий нас пакет, отфильтруем его, введя в текстовом поле слово digispark. Выбираем пакет Digistump AVR Boards и нажимаем установить. После выполнения установки закрываем окно Менеджера плат:
Установка драйверов для Digispark
Пользователям Windows для работы с платами Digispark необходимо установить драйвера. Скачать их можно по ссылке https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip. Распакуйте архив и запустите Install Drivers.exe для установки драйверов. Подтвердите установку при запросе разрешения.
Программирование Digispark из IDE Arduino
Теперь у нас все готово для программирования плат Digispark. Для примера попробуем залить в нее скетч, мигающий светодиодом на плате. Скопируйте и вставьте в редактор следующий код:
void setup() {
pinMode(0, OUTPUT); //Светодиод модель B
pinMode(1, OUTPUT); //Светодиод модель A
}
void loop() {
digitalWrite(0, HIGH); // Зажигаем светодиод
digitalWrite(1, HIGH);
delay(1000); // Ждем 1 секунду
digitalWrite(0, LOW); // Гасим светодиод
digitalWrite(1, LOW);
delay(1000); // Ждем 1 секунду
}
Как уже было сказано, в зависимости от модели платы Digispark светодиод на ней подключен либо к выводу 0 (модель B), либо к выводу 1 (модель A). Поэтому в приведенном скетче меняется состояние обоих выводов.
В меню Инструменты > Плата выберите значение Digispark (Default - 16.5mhz). COM порт и программатор указывать не нужно.
Вот теперь подключаем Digispark и дожидаемся сообщения "Micronucleus done. Thank you!". Светодиод на плате должен начать мигать с интервалом в 1 секунду.
Спасибо огромное! Заработало!
ОтветитьУдалитьПожалуйста)
УдалитьПрошу помочь разобраться. Digispark загружаю с DigisparkArduino-Win32-1.0.4-May19 простой блинк, все работает. Но более сложные скетчи с поддержкой oneWire в ней не Возможно компилировать. Выдает море ошибок. В версии 1.6.13 компилирование проходит без проблем то простой блинк и любые другие программы после загрузки не работают, хотя процесс заливки проходит нормально. В чем может быть проблема?
ОтветитьУдалитьДобрый день!
УдалитьКакую библиотеку используете для работы с oneWire?
Добрый день. При попытке установки пакета плат Digistump AVR Boards, процесс зависает на полпути с надписью "загрузка инструментов (2/2)" либо(1/2) как повезет. После этого arduino IDE виснет намертво. Другие пакеты загружаются нормально, от того-же Digistump и других. Подскажите в чем может быть проблема. Заранее спасибо.
ОтветитьУдалитьСпустя какое-то время пакет установился. Возможно были проблемы на сайте.
УдалитьЕсть проблема. Драйвера установил, но при подключении тишина и через секунды 3-4 он сам отключается и подключается обратно. Так может быть и до бесконечности. В чём проблема?
ОтветитьУдалитьУ меня было такое с одной из плат. При подключении к компьютеру она появлялась в списке устройств, после чего отваливалась и так бесконечно. Соответственно, скетчи не грузились. Помогла перезапись загрузчика. Не знаю в чем именно тогда была проблема, в загрузчике или неправильно выставленных фьюзах. Но и то, и другое решается записью загрузчика из IDE Arduino.
УдалитьСпасибо, оч четко, помогло. Вообще-то мне бы надо на ней поднять простенький серво..
ОтветитьУдалитьпривет
ОтветитьУдалить