Управляемые таймеры на ARDUINO

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

ua6em пишет:

Я правильно понял счётчики сделать низзя ))) ?

Я же тебе ответил.

Всё зависит от задач.

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

ua6em пишет:

Я правильно понял счётчики сделать низзя ))) ?

уйди, мальчик, не до тебя сейчас - у нас миллис переполняется.

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

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

ua6em пишет:

Я правильно понял счётчики сделать низзя ))) ?

уйди, мальчик, не до тебя сейчас - у нас миллис переполняется.

Скажи когда твой millis() будет равен или больше моего. Перейдем на коньяк, а там уже далеко не убежишь. Мне то пить нельзя. )))

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

ua6em пишет:

Я правильно понял счётчики сделать низзя ))) ?

уйди, мальчик, не до тебя сейчас - у нас миллис переполняется.

да не может он переполниться, я же о 600 секундах говорил

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а может есть платки какие как таймерок????

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

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

то почему же ты не понимаешь, что правильно писать if (currentTime - loopTime > INTERVAL) ?

Вот у вас выбор. Есть инструмент который хоть и с недостатками, но вы его знаете. А есть инструмент в котором вы банально не знаете.  А вот когда вы уверены в нем на 100 % то пользуетесь. Тем более мне не надо устройство на 48 часов.

/*
#1
#2
#3
*/
//#1
//#2
//#3
void setup() {
  //#1
  //#2
  //#3
}
void loop() {
  static uint32_t MILLIS ;
  MILLIS = millis() ;
  //#1 1000 миллисекунд вычислит. поток 1
  static uint32_t past_1 = 0 ;
  const uint32_t interval_1 = 1000 ;
  if (MILLIS - past_1 >= interval_1) {
    past_1 = MILLIS ;
    // сам код
    MILLIS = millis() ;
  }
  //#2  200 миллисекунд вычислит. поток 2
  static uint32_t past_2 = 0 ;
  const uint32_t interval_2 = 200 ;
  if (MILLIS - past_2 >= interval_2) {
    past_2 = MILLIS ;
    // сам код
    MILLIS = millis() ;
  }
  //#3  100 миллисекунд вычислит. поток 3
  static uint32_t past_3 = 0 ;
  const uint32_t interval_3 = 100 ;
  if (MILLIS - past_3 >= interval_3) {
    past_3 = MILLIS ;
    // сам код
  }
}

ua6em пишет:

а может есть платки какие как таймерок????

Чем пример сверху вам не подходит. И да , у него есть развитие.

 

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

ua6em пишет:

да не может он переполниться, я же о 600 секундах говорил

а, мы говорим о 4294967295 миллисекундах... сказано же - не до тебя.

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

ua6em пишет:

а может есть платки какие как таймерок????

Всё!!! Однозначно сюда http://arduino.ru/forumy/ishchu-ispolnitelya

Ну или ко мне. Я буду первый в очереди. Завтра вроде выходной.  Ник в скайпе тот же что и здесь.

nik182
Offline
Зарегистрирован: 04.05.2015

ua6em пишет:

Я правильно понял счётчики сделать низзя ))) ?

Делай. Кто ж тебе машает кроме тебя ? :-)

http://arduino.ru/forum/programmirovanie/klass-titanovyi-velosiped-stopw...

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

qwone пишет:

Тем более мне не надо устройство на 48 часов.

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

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

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

qwone пишет:

Тем более мне не надо устройство на 48 часов.

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

void(* resetFunc) (void) = 0; // Вызвать когда нужно.....

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

p.masyukov пишет:

void(* resetFunc) (void) = 0; // Вызвать когда нужно.....

что за функция ресета?

ты так и не понял, что при корректном алгоритме работы с миллис, ничего ресетить не нужно?

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

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

p.masyukov пишет:

void(* resetFunc) (void) = 0; // Вызвать когда нужно.....

что за функция ресета?

ты так и не понял, что при корректном алгоритме работы с миллис, ничего ресетить не нужно?

Он не только для тех условий. 

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

p.masyukov пишет:

Он не только для тех условий. 

каких тех условий?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

qwone пишет:

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

то почему же ты не понимаешь, что правильно писать if (currentTime - loopTime > INTERVAL) ?

ua6em пишет:

а может есть платки какие как таймерок????

Чем пример сверху вам не подходит. И да , у него есть развитие.

потому, что сбой в теле цикла программы приведёт к полной жопе, потому что любой из нормальных таймеров, вызывая прерывание всегда может вернуть систему в исходное положение, если что-то пошло не так

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

p.masyukov, слейся.

p.masyukov пишет:
Всё!!! Однозначно сюда http://arduino.ru/forumy/ishchu-ispolnitelya

Ну или ко мне. Я буду первый в очереди. Завтра вроде выходной.  Ник в скайпе тот же что и здесь.

p.masyukov пишет:
Я в С не до конца еще разобрался... так основы.. Но даже в них увидел про обьявления функций и тут на ардуино заругалась. 

Ничего как дочитаю, вкурю, на какой нибудь CODEVISION перейду. А там и с АРМ постепенно разберусь.

http://arduino.ru/forum/programmirovanie/pomogite-so-skobkami-0#comment-...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ua6em пишет:

потому, что сбой в теле цикла программы приведёт к полной жопе, потому что любой из нормальных таймеров, вызывая прерывание всегда может вернуть систему в исходное положение, если что-то пошло не так

 Не делайте жопу , и не будет жопы. В Ардуине очень мало памяти, что бы делать жопу и потом ее устранять. И есть кнопка Ресет все вернет в норму.

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

qwone пишет:

И есть кнопка Ресет все вернет в норму.

я так и думал...

5-8-08-emergency-partybutto.jpg