А event кто «внешней» объявлять будет?
а надо?
скетч компилируется без предупреждений
Да? Ну главное чтобы еще и работало )))
всё равно компилятор должен жеж был ругнуться, подумалось, что в области видимости
тут Петровича бы спросить, как правильно, это жеж чистой воды костыли
Я правильно понимаю, что в SoftwareSerial.cpp необходимо только добавить alert(); ?
Или где-то ещё есть изменения?
P.S. Что-то “меня терзают смутные сомнения…”
На предмет того, что этим костылём я заодно сломаю нахрен Serial…
“Костыль” попробую. Если что-то не устроит, буду думать, как вообще отказаться от прерывания.
Мне оно не критично, т.к. для тиньки и блока управления это событие носит “информационный характер”.
Микросекунды в данном случае, не важны… Главное, чтобы реле сработало, когда нужно.
А это выполнено аппаратно.
там же в обработчике прерывания смотри
В самом скетче (.ino) что ли? Это я видел и изменил.
Вообщем, попробовал скомпилить… Скомпилилось, но…
C:\Users\RYZEN\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.3.3\libraries\SoftwareSerial\SoftwareSerial.cpp:48:14: warning: ISO C++ forbids declaration of 'alert' with no type [-fpermissive] extern alert(); ^ C:\Users\RYZEN\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.3.3\libraries\SoftwareSerial\SoftwareSerial.cpp:379:6: warning: always_inline function might not be inlinable [-Wattributes] void SoftwareSerial::setRxIntMsk(bool enable) ^~~~~~~~~~~~~~ C:\Users\RYZEN\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.3.3\libraries\SoftwareSerial\SoftwareSerial.cpp:124:6: warning: always_inline function might not be inlinable [-Wattributes] void SoftwareSerial::recv() ^~~~~~~~~~~~~~
Заливать пока не стал… Пытаюсь сообразить, как убрать варнинг.
у меня под ядром 1.4.0 предупреждений нет
в файле библиотеки SoftwareSerial.cpp
Где-то я накосячил, походу… Переписал ещё раз заново, всё скомпилилось без варнингов.
Залил, запустил. После старта, сериал не работает до момента “алерт”.
Потом начинает работать, как обычно…
ALERT на INA что-то тоже наизнанку работает - пока ток меньше критического, на пине “1”.
Ну и наоборот. Но это не из-за костыля, с самого начала было так.
Проверяю, где я накосячил с конфигурацией INA…
логику в файле SoftwareSerial правь, в личку отписал, как должно быть
Так?
#if defined(PCINT0_vect)
ISR(PCINT0_vect)
{
if (PINB&(1<<PINB1))
{
alert();
return;
} else {
SoftwareSerial::handle_interrupt();
}
}
#endif
похоже да
Что ж ты сразу не сказал?!
Просто состояние пина в loop мониторь и всё!!!
Чего тут соображать, вставьте void
перед словом alert
, тоже мне бином ньютона.
Петрович, а есть какой-то способ, чтобы библиотеку SoftwareSerial засунуть в папку скетча и она не конфликтовала с библиотекой в ядре?
А что " " и <> не работает ?
не, это не работает, в своих проектах для nano я использовал альтернативные библиотеки софтового сериала
Странно, а у меня всегда работает.
Я даже перешел полностью на “”, потому что в 1.8.х их использование означает - «сначала ищем в папке проекта, если не нашли - в ядре».
оно там есть и конфликтует, можно конечно переименовать к примеру MySoftwareSerial в папке скетча, как вариант (не пробовал)
СХРЕНАЛИ оно будет конфликтовать???!!!
Если нашлось в папке - её и используем. Не нашлось - ищем в ядре. Где конфликт то???