Size: a a a

2021 August 02

D

Dim in ELECTRONIX
можно сделать следующим образом
источник

D

Dim in ELECTRONIX
pinMode(10, INPUT);
источник

D

Dim in ELECTRONIX
if (digitalRead(103) == LOW) {UART1;}
источник

D

Dim in ELECTRONIX
ну а далее в процедуре UART1
источник

D

Dim in ELECTRONIX
выполняем инициализацию порта (и включаем его прослушку)
источник

И

Иван in ELECTRONIX
Уарт конторы не гарантирует приём в любой момент времени
источник

D

Dim in ELECTRONIX
а для чего тогда прерывания для них прописаны?
источник

D

Dim in ELECTRONIX
но даже если так можно сделать, то как поведет себя soft uart если стартовый бит уже пошел - сработает ли прерывание если его объявить уже после начала стартового бита?
источник

LZ

Leonid Zaliubovskii in ELECTRONIX
Ну если на пине будет перепад уровня - сработает. А если нет, то чему там срабатывать то?
источник

D

Dim in ELECTRONIX
вот именно, что не будет!
источник

D

Dim in ELECTRONIX
будет LOW
источник

LZ

Leonid Zaliubovskii in ELECTRONIX
Т.е. если 0 после стартового бита будет - ты пропустишь
источник

D

Dim in ELECTRONIX
стало быть идея тухлая
источник

LZ

Leonid Zaliubovskii in ELECTRONIX
Софтовый уарт сам по себе тухлятиной отдает для твоей задачи. Но тебе же превозмогать нужно.
источник

D

Dim in ELECTRONIX
и что самое погано, мы не сможет опросить стартовый бит из основного, поскольку он тут сынициирует прерывание!
источник

D

Dim in ELECTRONIX
до него просто не дойдет очередь
источник

D

Dim in ELECTRONIX
а с другой стороны
источник

D

Dim in ELECTRONIX
раз прервание пошло от стартового бита - значит выйти из него она смогёт только когда примет весь байт!
источник

D

Dim in ELECTRONIX
че разве нет?
источник

D

Dim in ELECTRONIX
с другой стороны оно должно оперативно отреагировать на спад стратового бита
источник