Внешний вход счетчик можно использовать как разрешение счета. Через внешний генератор событий можно выполнять счет с заданной периодичностью.
Ниже тест вывода такого счетчика.
FLProg_Test_Counter.zip
Вывод на консоль.PNG
Проект.png
[/quote][spoiler title=Arduino]
#include "RT_HW_BASE.h"
bool Out_95322418_107322902;
int Out_96028219_46133591;
RT_HW_GENERATOR_EVENT_ID id_107322902;
RT_HW_COUNTER_ID id_46133591;
void resetExt_46133591(RT_HW_COUNTER_ID &id);
RT_HW_STRUCT_CONSOLE_OUT out_132355235;
uint8_t arr_132355235[1];
bool readV8_132355235();
void setup(){}
void loop(){
/Плата:1
RT_HW_Base.generatorEvent(id_107322902,1, (500));
Out_95322418_107322902=id_107322902.event;
if(id_46133591.reset) {resetExt_46133591(id_46133591); } else {RT_HW_Base.counterS (id_46133591, (Out_95322418_107322902));};
Out_96028219_46133591=id_46133591.cnt;
if(out_132355235.dir<5) {out_132355235.mode='C'; RT_HW_Base.consoleCheckOut(out_132355235,(!(0)),0);}
if(out_132355235.dir==5){out_132355235.change=readV8_132355235(); RT_HW_Base.consoleCheckOut(out_132355235,(!(0)));}
if(out_132355235.dir==10){RT_HW_Base.ConsoleString('L',0,'=',"счетчик(0-12)");}
if(out_132355235.dir==10){RT_HW_Base.ConsoleArrV8('O',0,'E',1,arr_132355235); out_132355235.dir=1;}
}
void resetExt_46133591(RT_HW_COUNTER_ID &id){
RT_HW_Base.counterReset(id);
id.top=(12);
id.cnt=id.begin;};
bool readV8_132355235(){bool ok=0;
if(arr_132355235[0]!=(uint8_t)(Out_96028219_46133591)) {arr_132355235[0]=(uint8_t)(Out_96028219_46133591); ok=HIGH;}
return ok;}
[/spoiler]
Отправлено спустя 59 минут 13 секунд:
o615ye161 писал(а): 01 авг 2021, 22:34
такая схема нужна из-за нехватки памяти 328р для переборки пинов к которым подключены датчики DS18, проект в архиве плата 5 sensor DS
Посмотрел проект. Хорошо сделан и интересный. Впервые вижу как в проектах используются блоки PCA9685 - хорошие и удобные модули.
По нехватке памяти - рекомендую решительно переходить с AVR328 на другие контроллеры.