проблемы с ProMicro
- Войдите на сайт для отправки комментариев
Пт, 15/06/2018 - 23:06
Собрал устройство по сбору инфы, и все вродебы правильно а работать не хочет :( Стал разбираться и выяснил что не работает таймер. Вот простенький скетч:
// Тестовая проба платы 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 - все работает.
Похоже это связано только с промикро, или я ошибаюсь? Может кто сталкивался с данной проблемой и подскажет мне есть какое-то решение?
В хз какой строке вместо
int dt;
напишы
volatile int dt;
faworit20, таймера 2 в про-микро официально нет. (Неофициально есть, но в IDE непродефайнен) Тут обсуждали.
Про volatile знаю, dt опробовал, бъявлял ее как глобальную и не работает зараза :( Может есть еще какие предложения/варианты?
dimax, я примерно к этому и подошел что проблема с таймером. А вот про обсуждение этой темы - пропустил. Спасибо, почитаю!