проблемы с ProMicro

faworit20
Offline
Зарегистрирован: 18.07.2017

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

// Тестовая проба платы Pro Micro (leonardo)
//
#include <MsTimer2.h>
// Объявляем переменные и константы:
#define Signal 5
int dt;
 
void setup() 
{
  // 
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(Signal,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(14,OUTPUT);
  pinMode(15,OUTPUT);
  pinMode(16,OUTPUT);
  on_off = false;
  digitalWrite(Signal, LOW);
  dt = 0;
 
  MsTimer2::set(2000, timerInterupt);  // задаем период прерывания по таймеру 2 сек
  MsTimer2::start();                                  // разрешаем прерывание
 
}
 
void loop() 
{
  if(dt >= 5) 
  {
    dt = 0;
    if(digitalRead(Signal) == HIGH) digitalWrite(Signal, LOW);
    else digitalWrite(Signal, HIGH);
  }
  //delay(200);
  //dt++;
}
 
void timerInterupt()
{
  dt++;
}
При загрузке ошибок нет и не работает, а вот если использую delay - все работает. 
Похоже это связано только с промикро, или я ошибаюсь? Может кто сталкивался с данной проблемой и подскажет мне есть какое-то решение?
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

В хз какой строке вместо 

int dt;

напишы

volatile int dt;

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

faworit20, таймера 2 в про-микро официально нет.  (Неофициально есть, но в IDE непродефайнен) Тут обсуждали.

faworit20
Offline
Зарегистрирован: 18.07.2017

Про  volatile знаю, dt опробовал, бъявлял ее как глобальную и не работает зараза :( Может есть еще какие предложения/варианты?

faworit20
Offline
Зарегистрирован: 18.07.2017

dimax, я примерно к этому и подошел что проблема с таймером. А вот про обсуждение этой темы - пропустил. Спасибо, почитаю!