Показать сообщение отдельно
Старый 23.10.2017, 18:20   #229
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3292)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
А почему ?
Цикл loop слишком длинный получается со всем фаршем стрелочного декодера и обратной связи. Когда контроль КЗ вовремя попадает, то все отлично - лок без запинок проходит границу разных полярностей. А вот когда не вовремя, то быстрее отрубается КС и БП.

---------- Сообщение добавлено в 19:20 ---------- Предыдущие сообщение было в 19:14 ----------

Хотя подумал, что можно подойти и с другой стороны - в цикле loop добавить обработку КЗ( ShortCtrl.Run() ) после каждого вызова других обработчиков. Т.с. повысить приоритет в в цикле loop.
Код:
void loop() {
  m = millis();
  // put your main code here, to run repeatedly:
  static int addr = 0;
  delay(1);

  DccCtrl.Run();

  ShortCtrl.Run();

  LNRun();

  CmdQueue.Run();

  SensorsCtrl.Run();

  PrgCtrl.Run();

  I2CmdQueue.Run();

  I2CPwrCtrl.Run();
  
  SerialIdle();
  
  m = millis()-m;
  
//  Serial.print("c:"); Serial.println(m);
  
}
shalex вне форума  
Вверх