Digispark ATtiny85

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Sembior пишет:

Нет я сначало много штудировал информации, ролики смотрел, подготавливался. А потом уже приступил к процессу.

процессу чего?

Sembior
Offline
Зарегистрирован: 31.05.2016

Sembior пишет:

Тоже пришла с aliexpressa Digispark Attiny85. Подключил к компу на платке светится только светодиод питания. В диспетчере устройств нету новых и неопознанных устройств. Правильно я понимаю что тинька голая (не зашит в ней загрузчик (bootloader)). Скачал драйвера с digistump на всякий случай ставил не помогло потому что пустая. Читал вики https://digistump.com/wiki/digispark/tutorials/connecting  потом сделал по инструкции, теперь в arduino ide версия 1 6 9 появился выбор digispark default 16,5 mhz. Скачал загрузчик https://github.com/micronucleus/micronucleus и поместил его в C:\Program Files (x86)\Arduino\hardware\digispark\bootloaders\micronucleus подсунул еще в C:\Program Files (x86)\Arduino\hardware\digispark boards.txt   Залил в arduino uno (atmega328) скетч ArduinoISP. В arduino ide выбрал плату digispark default 16,5mhz, программатор arduino as isp подключил к разьему на UNO ICSP плату digispark, 10 с UNO на reset и нажимаю записать загрузчик.

Вываливается ошибка Arduino: 1.6.9 (Windows 8.1), Плата:"Digispark (Default - 16.5mhz)" Ошибка при записи загрузчика: пропущен параметр конфигурации 'bootloader.tool' Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"

Пробовал полностью готовая IDE https://github.com/digistump/DigistumpArduino/releases/download/v1.5.8C/DigistumpIDE1.5.8C.zip  вываливается таже ошибка. Пробовал делать как и в этом видео  https://www.youtube.com/watch?v=msq89zS3Faw  Пробовал редактировать boards.txt в firmwares скопировал t85_default.hex

Платки usbASP еще пока нету, хочу обойтись arduino uno если это возможно.

Направьте в правильное русло, что я делаю не так? Или все таки неисправная плата?

Я чуть ранее постом писал

Sembior
Offline
Зарегистрирован: 31.05.2016

Добавил в файл boards.txt расположенный в C:\Program Files (x86)\Arduino\hardware\arduino\avr такие строки:

digispark-tiny.name=Digispark (Default - 16.5mhz) digispark-tiny.upload.maximum_size=6012 digispark-tiny.build.mcu=attiny85 digispark-tiny.build.f_cpu=16500000L digispark-tiny.build.core=tiny digispark-tiny.upload.using=digispark digispark-tiny.upload.tool=avrdude digispark-tiny.bootloader.low_fuses=0xe1 digispark-tiny.bootloader.high_fuses=0xdd digispark-tiny.bootloader.extended_fuses=0xfe digispark-tiny.bootloader.path=micronucleus digispark-tiny.bootloader.file=t85_default.hex digispark-tiny.bootloader.tool=avrdude

На отредактированный файл в блокноте ругалась Arduino IDE 1_6_9, отредактировал в Notepad++ без проблем подхватила, только нужно перезагружаать Arduino IDE чтобы подхватывала boards.txt

В эту папку скопировал t85_default.hex C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\micronucleus В Arduino IDE версия 1_6_9 файл параметры показать подробный вывод поставил галочки компиляция и загрузки. перестало ругаться что нету пропущен параметр конфигурации 'bootloader.tool' Не смог опять зашить bootloader, зато хоть averdude запустился и считал ID 0x1e930b это как раз и есть Attiny85, значит надо добавлять еще какие то парамеитры. Тинька живая раз отвечает.

morfey
Offline
Зарегистрирован: 26.04.2016

Лично я забил на эти тиньки и больше нет никакого желания к ним возвращаться. купил arduino mini и проблем нет и не на много дороже и пинов больше

Sembior
Offline
Зарегистрирован: 31.05.2016
void setup()
{

pinMode(1, OUTPUT);

}

void loop()

{

digitalWrite(1, HIGH);

delay(1000);

digitalWrite(1, LOW);

delay(1000);

}

Скачал библиотеку https://cloud.mail.ru/public/3zobE4CYy4iG/ATtiny.zip разархивировал и поместил ее в C:\Program Files (x86)\Arduino\hardware

В UNO залил скетч ArduinoISP подключил Digispark к ICSP

1pin MISO ICSP (UNO 12) Digispark P1

2pin +5V  ICSP                Digispark +5V

3pin SCK ICSP (UNO 13) Digispark P2

4Pin MOSI ICSP (UNO 11) Digispark P0

6pin GND ICSP                 Digispark GND

---  ICSP           (UNO 10) Digispark P5             

Выбрал плату Attiny x5series выбрал chip Attiny85 выбрал clock 8mhz internal открыл в примерах blink и немного изменил.

Потому что на Digisparke светодиод сидит на 1 ноге.

В качестве программатора выбрал Arduino as ISP.

Загрузил скетч и вуаля Digispark замигал светодидом. Можно теперь хоть заливать скетчи таким образом.

Значит у меня не залочилась как я и писал в посте выше. Китайцы прислали Digispark без bootloadera просто чистую распаянную тиньку на плате!

 

Sembior
Offline
Зарегистрирован: 31.05.2016

Пытаюсь залить в тиньку bootloader Нажал загрузить bootloader он записал 2 байта потому что hex пустой C:\Program Files (x86)\Arduino\hardware\ATTinyCore\avr\bootloaders\empty\empty_all.hex

В эту папку запихал t85_default.hex с https://github.com/micronucleus/micronucleus он не записал его, тогда я переименовал файлик t85_default.hex в empty_all.hex он его залил. Отсоединил его от UNO и подоткнул к компу на USB хоть реагировать стал но пишет что USB не опознано, в диспетчере устройств сбой дескриптора. Уже что-то продвинулось может фьюзы нете может частоту нужно другую выбрать. В общем залил опять предыдущий blink он опять замигал светодиодом. Значит не залочивается и то хорошо! У кого какие мысли будут? Пока буду еще эксперементировать.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Sembior пишет:

Пытаюсь залить в тиньку bootloader

не занимайся хернёй, а сделай так, как рассказано здесь http://digistump.com/wiki/digispark/tutorials/connecting

всё нужное файло подсосётся автоматом

Sembior
Offline
Зарегистрирован: 31.05.2016

Клапауций 232 пишет:

Sembior пишет:

Пытаюсь залить в тиньку bootloader

не занимайся хернёй, а сделай так, как рассказано здесь http://digistump.com/wiki/digispark/tutorials/connecting

всё нужное файло подсосётся автоматом

Так я этим способом вначале и пытался залить bootloader не получается и ничего само не подсасывается.

Вы пробывали сами, что советуете? И в этой статье ни слова про заливку bootloadera.

Arduino IDE выдает ошибку: "Ошибка при записи загрузчика: пропущен параметр конфигурации 'bootloader.tool' " До этого в своих постах я про это и писал. Китайцы прислали чистую тиньку! Возможно не с клоном с зашитым изначально bootloaderom этот способ прокатывает.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Sembior пишет:

Вы пробывали сами, что советуете? И в этой статье ни слова про заливку bootloadera.

"Ошибка при записи загрузчика: пропущен параметр конфигурации 'bootloader.tool' "

не пробовал - попробовал, папка firmwares пустая, бутлоадер в конфигурашках плат не прописан.

ну, и что? не знаешь, что делать или тебя нужно ногами в гугл пинать самостоятельно искать нужное тебе?

https://youtu.be/msq89zS3Faw

Sembior
Offline
Зарегистрирован: 31.05.2016

Не было времени отписАться, вот нашел время пишу, может кому пригодиться.
В общем добился я работоспособности bootloadera на digisparke attiny85. После того как мне пришел USBasp, прочитал фьюзы там стояли по

умолчанию с завода.
Lock byte 3F оставил как есть 3F
LB2 1 оставил 1
LB1 1 оставил 1
можно считать свою прошивку, если в 1.

Fuse High Byte D7 поменял на DD
RSTDISBL 1 оставил 1 ножка сброса работает только на сброс, как порт нет
DWEN 1 оставил 1 отладка запрещена
SPIEN 0 оставил 0 SPI обмен по последовательному программированию и обмену данными разрешен
WDTON 1 оставил 1 Watchdog таймер запрещен
EESAVE 1 оставил 1 EEPROM при стирании чипа не сохраняется
BODLEVEL2 1 оставил 1 Детектирования снижения питания было запрещено, поставил срабатывание на 2,7v
BODLEVEL1 1 поменял 0 Детектирования снижения питания было запрещено, поставил срабатывание на 2,7v
BODLEVEL0 1 оставил 1 Детектирования снижения питания было запрещено, поставил срабатывание на 2,7v

Fuse Low Byte E2 поменял на E1
CKDIV8 1 оставил 1 Деление тактовой частоты 8мГц на 8, чтобы работало на 1 мГц. Запрещено.
CKOUT 1 оставил 1 С ножки CLKO выход тактовой частоты. Запрещено.
SUT1 1 оставил 1 Задержка при запуске 14 тактов плюс 64 милисекунды
SUT0 0 оставил 0 Задержка при запуске 14 тактов плюс 64 милисекунды
CKSEL3 0 оставил 0 Внутренний генератор на 8мгц было, выставил на внутренний генератор с умноженем стало 16мГц
CKSEL2 0 оставил 0 Внутренний генератор на 8мгц было, выставил на внутренний генератор с умноженем стало 16мГц
CKSEL1 1 поменял 0 Внутренний генератор на 8мгц было, выставил на внутренний генератор с умноженем стало 16мГц
CKSEL0 0 поменял 1 Внутренний генератор на 8мгц было, выставил на внутренний генератор с умноженем стало 16мГц

Fuse Extended FF поменял на FE
SELFPRGEN 1 поменял на 0 стоял запрет на самопрограммирование, разрешил его.

Поменял фьюзы и после подключения digisparka attiny85 к USB начал определяться в сиситеме, установились драйвера. С помощью Arduino IDE теперь

можно заливать скетчи.

Sembior
Offline
Зарегистрирован: 31.05.2016

Было в чистой attiny85, поменял программой Khazama AVR Programmer

 

поменял на фьюзы  программой Khazama AVR Programmer

 

LevkaRU
Offline
Зарегистрирован: 22.12.2016

Всем привет! Ребят, нужна помощь.

Приобрел на али digispark attiny85 со стандартным usb.

Работала всё хорошо, пока не загрузил последний скетч:

#include <SoftSerial.h> //инициируем сериал для блютус
#include <TinyPinChange.h>
#include <SimpleServo.h>//библиотека сервы

#define RX 2
#define TX 3

unsigned long timer;
unsigned long current;

int LED = 1;
SoftSerial bluetooth(RX, TX);
SimpleServo myservo;

void setup() {                
  Serial.begin(9600);
  bluetooth.begin(57600);
  setupBlueTooth();
  pinMode(LED, OUTPUT);
  myservo.attach(0);
  timer = 10000;

}

void loop() {  
  current = millis();
  digitalWrite(LED, HIGH); 
  myservo.write(0);
  delay(500);       
  if (current > timer) {
  digitalWrite(LED, LOW);   
  myservo.write(90);
  delay(500);
  }
}
void setupBlueTooth()
{
  bluetooth.begin(57600); 
  bluetooth.print("\r\n+STWMOD=0\r\n"); 
  bluetooth.print("\r\n+STNA=Wine-1\r\n");
  bluetooth.print("\r\n+STOAUT=1\r\n"); 
  bluetooth.print("\r\n+STAUTO=0\r\n"); 
  
  delay(2000); 
  bluetooth.print("bluetooth connected!\n");
  
  delay(2000); 
  bluetooth.flush();
}

программа обрабатывается и работает на микроконтроллере, но теперь, если включаю в usb, например, залить другой скетч. То комп ее не видит:

"не известное usb-устроство (сбой запроса дискриптора устройства)"

Можете посоветовать, что делать? 

Спасибо!

ASK-list
Offline
Зарегистрирован: 17.01.2017

Мой Digispark также навернулся после прошивки в него маленькой программки, в которой использовался TinyPinChange.h.

Я экспериментировал с SoftSerial, на основе примера сделал такой код:

/*
  Software serial multiple serial test
 
 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.
 
 The circuit: 
 * RX is digital pin 2 (connect to TX of other device)
 * TX is digital pin 3 (connect to RX of other device)
 
 created back in the mists of time
 modified 9 Apr 2012
 by Tom Igoe
 based on Mikal Hart's example
 
 This example code is in the public domain.
 
 <SoftSerial> adapted from <SoftwareSerial> for <TinyPinChange> library which allows sharing the Pin Change Interrupt Vector.
 Single difference with <SoftwareSerial>: add #include <TinyPinChange.h>  at the top of your sketch.
 RC Navy (2012): http://p.loussouarn.free.fr
 
 */
#include <SoftSerial.h>     /* Allows Pin Change Interrupt Vector Sharing */
#include <TinyPinChange.h>  /* Ne pas oublier d'inclure la librairie <TinyPinChange> qui est utilisee par la librairie <RcSeq> */

SoftSerial mySerial(2, 3); // RX, TX   !!!  установка здесь вместо mySerial(2, 3)  значений (0, 1) вывела из строя Digispark?

void setup()  

  
{
  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
//    mySerial.write("Ok");
    mySerial.println("Ok");
  delay (1000);
}

В этом коде убраны элементы обычного Serial и оставлен SoftSerial.

Вроде бы Digispark перестал определяться после того, как я прошил значения mySerial(0, 1); вместо mySerial(2, 3);

Подозреваю, что плату ломает библиотека TinyPinChange.h

Видимо, теперь нужно разбираться с перепрошивкой бутлоадера.

p.s. после перепрошивки загрузчика подозрения о вредоносности TinyPinChange.h не подтвердились, повторная заливка этого кода с mySerial(0, 1); прошла без проблем.

ASK-list
Offline
Зарегистрирован: 17.01.2017

В предыдущем посте описал, как мой Digispark сломался.

Пришлось восстанавливать Bootloader.

Исходное руководство - упоминавшийся здесь ролик https://www.youtube.com/watch?v=msq89zS3Faw

В имевшейся у меня версии Arduino IDE 1.6.12 фрагмент файла boards.txt, где описана обычная плата Digispark, имеет вид

digispark-tiny.name=Digispark (Default - 16.5mhz)
digispark-tiny.upload.using=micronucleusprog
digispark-tiny.upload.protocol=usb
digispark-tiny.upload.tool=micronucleus
digispark-tiny.upload.maximum_size=6012
digispark-tiny.build.mcu=attiny85
digispark-tiny.build.f_cpu=16500000L
digispark-tiny.build.board=AVR_DIGISPARK
digispark-tiny.build.core=tiny
digispark-tiny.build.variant=digispark
digispark-tiny.upload.wait_for_upload_port = false
digispark-tiny.upload.use_1200bps_touch = false
digispark-tiny.upload.disable_flushing = false

Как можно видеть, здесь никаких строк про low_fuses и high_fuses нету. Также здесь не упоминается файл с бутлоадером.

Как с таким файлом boards.txt шить загрузчик - совершенно не понятно.

Скачал старую версию IDE (DigisparkArduino-Win32-1.0.4-May19.zip) отсюда, распаковал в папку.

Там файл boards.txt как раз такой же, как в видео. Отредактировал его в соответствии с этой видео-инструкцией.

Было:
digispark-tiny.name=Digispark (Tiny Core)
digispark-tiny.upload.maximum_size=6012
digispark-tiny.build.mcu=attiny85
digispark-tiny.build.f_cpu=16500000L
digispark-tiny.build.core=tiny
digispark-tiny.upload.using=digispark
digispark-tiny.bootloader.low_fuses=0xf1
digispark-tiny.bootloader.high_fuses=0x5f
digispark-tiny.bootloader.extended_fuses=0xfe
digispark-tiny.bootloader.path=micronucleus
digispark-tiny.bootloader.file=micronucleus-1.06-upgrade.hex

Стало:
digispark-tiny.name=Digispark (Tiny Core)
digispark-tiny.upload.maximum_size=6012
digispark-tiny.build.mcu=attiny85
digispark-tiny.build.f_cpu=16500000L
digispark-tiny.build.core=tiny
digispark-tiny.upload.using=digispark
digispark-tiny.bootloader.low_fuses=0xe1
digispark-tiny.bootloader.high_fuses=0xdd
digispark-tiny.bootloader.extended_fuses=0xfe
digispark-tiny.bootloader.path=micronucleus
digispark-tiny.bootloader.file=micronucleus-1.06.hex

Файл с загрузчиком micronucleus-1.06.hex взял отсюда.

Залил в UNO скетч из примеров ArduinoISP.

Подключил UNO к Digispark так, как описал уважаемый Sembior.

В IDE 1.0.4 выбрал плату Digispark (Tiny Core), программатор Arduino as ISP.

Нажал Сервис - Записать загрузчик.

После этого через Arduino IDE 1.6.12 скетчи заливаются, как и раньше.

p.s. залил этим же способом бутлоадер t85_default.hex самой свежей версии отсюда, всё также работает корректно.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

загрузчики здесь лежат https://github.com/micronucleus/micronucleus/tree/v2.01

ASK-list
Offline
Зарегистрирован: 17.01.2017

Видимо, у этого разработчика выложены разные версии загрузчиков. Та, которую я брал, оказалась свежее (и мне не понравилась - как-то неадекватно ведёт себя со спящим режимом SLEEP_MODE_PWR_DOWN).

ASK-list
Offline
Зарегистрирован: 17.01.2017

Попытался разобраться, что это за fuses такие. Есть онлайн-калькулятор для их вычисления. Становится понятно, почему строка

digispark-tiny.bootloader.high_fuses=0x5f

затруднит прошивку загрузчика в Digispark: она включает опцию "External Reset disable".

Ещё одно отличие high_fuses=DD от 5F - включается Brown-out Detector trigger level на уровень 2.7 В.

Изменённый low_fuses=E1 вместо F1 устанавливает опцию выбора времени включения (Select start-up time SUT0).

yucan
Offline
Зарегистрирован: 20.04.2015

Тоже взял себе парочку плат Digispark. Пришли зашитые блинкером. Хотел сразу же, чтобы потом не мучаться с bootloader-ом, сделать бэкап памяти тиньки.  Оказалось залоченные.

LevkaRU
Offline
Зарегистрирован: 22.12.2016

Спасибо всем за советы и ссылки!

Попробовал, но digispark не восстановился - всё также пишет о неопознаном устройстве.

Верно ли я понял, что накатывать бутлоадер при подключенной к uno по следующему принципу пины:

Диджиспарк - UNO

0 - 11

1- 12

2 - 13

5-  10

+5 - +5

gnd - gnd.

 

При загрузке никаких ошибок не выдавал. 

slider
Offline
Зарегистрирован: 17.06.2014

тож долго мучился.

после заливки скетча примера blink (start) в digispark attiny85 , выбрал digispark 16МГц , и он превратился в кирпич . какой-то одноразовый digispark .

никакие танцы с бубном заливки бутлоадера (прошивки) с официального сайта не помогали , получалось неизвестное устройство. ( заливал t85_default.hex с помощью проги khazama , программатором USBASP ) . 

само arduino IDE отказывается заливать бутлоадер  , ни спомощью arduinoISP  , ни USBASP

помогло только слить с новой платы  digispark attiny85  прошивку и заливку ее в коматозника , все заработало и работает . 

прошивка digispark attiny85  https://yadi.sk/d/O6Wa5KKS3Sk897

// из плат выбираю digispark 16,5МГц

//// фьюзы описаны выше

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

собрал схему для полива от алексгайвера

но включил дигиспарк в повербанк его разъемом USB

не отрабатывает схема

на одном из сайтов нашел вот такой текст

Благодаря наличию стабилизатора, микроконтроллер можно запитать двумя путями: через пин напряжением 5В и через стабилизатор 10 В.

т.е. запитать дигиспарк надо не через его разъем USB, а на пины +5\gnd?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Дигиспарк надо питать через 3-х контактный разъем на котором написано +5V GND Vin.

Если напржение питания 5В или меньше, то подключать к +5V и GND, а если больше то к Vin и GND.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

я правильно понимаю, что USB разъем только для прошивок?

жаль если так, а то удобно было бы в павербанки подключать

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Если PB3 и PB4 не используются, то можно и к повербанку. Потому что PB3 и PB4 подключены к USB тоже. А что там у повербанка с этим - не известно.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

используется только P1

подключал и к повербанку и к USB зарядке от телефона - не отрабатывает схема как надо

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Ну с этим к Гайверу

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

еще вопрос - а у дигиспак led висит на пин1?  pinMode(1, OUTPUT); //LED on Model A  or Pro

иначе можно к нему обратиться? пин1 у меня занят

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Да светодиот там на PB1 (P1). Ну если пин занят, то увы... Если используется только один пин, то можно перевесить то что сейчас на P1 куда нибудь еще. 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

а с P0 как дела обстоят? возможно ли весь функционал на него перебросить, а LED на P1?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А какие проблемы? Хоть на P0, хоть на P2. Там, насколько я понимаю, надо только включать/выключать?

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

не хочет так работать

/*
  Данный код превратит вашу Digispark в спящий таймер. Через каждые PERIOD
  секунд система подаёт 5 вольт на протяжении WORK секунд. Всё время,
  кроме переключения пина, система спит и потребляет 28 микроампер
  на плате Digispark с отрезанным светодиодом, стабилизатором
  и двумя диодами на шину USB. На голом камне будет работать ещё лучше!
*/

#define PERIOD 60   // период работы в секундах (пример: 60*60*24*3 = 259200 - три дня!)
#define WORK 15         // время работы в секундах 30
#define MOS 0           // пин мосфета
#define LED 1           // пин светодиода


uint32_t mainTimer, myTimer;
boolean state = false;

#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off)
#define adc_enable()  (ADCSRA |=  (1<<ADEN)) // re-enable ADC
// http://alexgyver.ru/arduino/DigiDrivers.rar

void setup() {
  // все пины как входы, экономия энергии
  for (byte i = 0; i < 6; i++) {
    pinMode(i, INPUT);
  }
  adc_disable();          // отключить АЦП (экономия энергии)

  wdt_reset();            // инициализация ватчдога
  wdt_enable(WDTO_1S);    // разрешаем ватчдог
  // 15MS, 30MS, 60MS, 120MS, 250MS, 500MS, 1S, 2S, 4S, 8S

  WDTCR |= _BV(WDIE);     // разрешаем прерывания по ватчдогу. Иначе будет резет.
  sei();                  // разрешаем прерывания
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // максимальный сон
}

void loop() {
  mainTimer++;

  if (!state) {                           // если помпа не включена
    if ((long)mainTimer - myTimer > PERIOD) {   // таймер периода
      myTimer = mainTimer;                // сброс таймера
      state = true;                       // флаг на запуск
      pinMode(MOS, OUTPUT);               // пин как выход
      digitalWrite(MOS, HIGH);            // врубить
    }
  } else {                                // если помпа включена
    if ((long)mainTimer - myTimer > WORK) {     // таймер времени работы
      pinMode(LED, OUTPUT);               // пин как выход
      digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(500);               // wait for a second
      digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
      delay(500);               // wait for a second
      myTimer = mainTimer;                // сброс
      state = false;                      // флаг на выкл
      digitalWrite(MOS, LOW);             // вырубить
      digitalWrite(LED, LOW);             // вырубить
      pinMode(MOS, INPUT);                // пин как вход (экономия энергии)
      pinMode(LED, INPUT);                // пин как вход (экономия энергии)
    }
  }

  sleep_enable();   // разрешаем сон
  sleep_cpu();      // спать!
}

ISR (WDT_vect) {
  WDTCR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет реcет.
}

LED не мигает в момент работы MOS

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А если простой Blink пример загрузить - мигает?

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

да если на P1 настроен 

slider
Offline
Зарегистрирован: 17.06.2014

в повербанках центральные пины по разному , для разных телефонов. В основном закорочены.

чтоб питалось от юсб , надо закоротить там маленький диод , он там чтобы если ардуинка-дигиспарк запитана от внешки , чтоб эта внешка не пошла в ноутбук/компьютер по юсб , и не спалила стаб на плате (при запитке от Vin).

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

vworld пишет:

не хочет так работать

LED не мигает в момент работы MOS

А  выход МОС работает как надо? Как проверяли?

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

asam пишет:

А  выход МОС работает как надо? Как проверяли?

заработало от зарядного для телефона

использовал два павербанка:

1) на один элемент 18650 - не заработало;

2) на 10000мА - один раз код отработал - далее дигиспарк отключился - предполагаю дело в коде, а именно уход в глубокий сон

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

просьба подсказать всё же

почему не хочет работать от павербанка на одном элементе 18650

на выходе павербанка 5В есть, питание на дигиспарк поступает через разьем USB.

Такое впечатление, что повербанк не понимает, что его нагрузил дигиспарк (судя по индикации повербанка).

При всём при том от зарядного и от USB порта ПК работает как надо.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

У китаесских павербанков, есть особенность, если ток потребления меньше 30 мА,  оне считают, что к ним ничо не подключено и отключаются.  

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

а как можно "дозагрузить" дигиспак? чтобы павербанк не отключался?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

vworld пишет:

а как можно "дозагрузить" дигиспак? чтобы павербанк не отключался?

светодиодик повесить. 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

DetSimen пишет:

У китаесских павербанков, есть особенность, если ток потребления меньше 30 мА,  оне считают, что к ним ничо не подключено и отключаются.  

а этот функционал никак нельзя в павербанке отключить/обойти?

не хотелось бы повышать уровень потребления на дигиспарк

nik182
Онлайн
Зарегистрирован: 04.05.2015

Нет. Это даже не регулируется. Прописано в мозгах м. с. Только если подбирать из партии. Пробовал несколько разных. Идея литий <-->5в не прошла из за этой особенности. 

b707
Онлайн
Зарегистрирован: 26.05.2017

vworld пишет:

а этот функционал никак нельзя в павербанке отключить/обойти?

вместо готового повербанка взять Li-ioh батарею и плату зарядки. Дигиспарк настроить на работу не от 5в, а от 3.2 - 4.2 (диапазон лития), чтобы питать устройство напрямую от батареи без преобразователей

Sembior
Offline
Зарегистрирован: 31.05.2016

Вместо готового повербанка можно взять Li-ion аккумулятор и плату преобразователь на LM2596 или MT3608. Заранее до подключения к digispark выставить на их выходе 5 вольт.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

какой светодиод можно впаять в замен или параллельно светодиоду питания дикиспарк?

а то собрал корпус, но в идеале хотелось бы вывести на него светодиод для индикации

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а чо, просто светодиод бросить на питание не судьба?

Skany9
Offline
Зарегистрирован: 08.08.2019

Привет.

Сегодня приехал данный микроконтроллер и я столкнулся с проблемой не правильной работы кода.

А именно программа игнорирует оператор ветвления if, и в не зависимости от значений проверяемой переменной, программа переходит к выполнению кода внутри блока оператора ветвления.

Может кто то с таким сталкивался?

Komandir
Offline
Зарегистрирован: 18.08.2018

Skany9 требуем подтверждения в виде кода ...

Skany9
Offline
Зарегистрирован: 08.08.2019
int sensor = 3;
int led = 2;

void setup() {
  pinMode(sensor, INPUT);
  pinMode(led, OUTPUT);
}

void loop()
{

  int readSensor = analogRead(sensor);
  if(readSensor <= 200)
  {
    for(int i = 0; i <=255; i++)
     {
       analogWrite(led, i);
       delay(100);
     }
  }
  else
  {
   digitalWrite(led, LOW);
  }
}

Как то так. Я сейчас не дома, поэтому точного кода не вижу но суть та же.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Skany9 пишет:

Как то так. Я сейчас не дома, поэтому точного кода не вижу но суть та же.

 

А почему вы решили что if не срабатывает? Может у вас читается (analogRead) не то?