1-wire без delay

iopq
Offline
Зарегистрирован: 05.07.2016

вот мучает меня все время вот какой вопрос. есть библиотека для работы с 1wire. если посмотреть в ее функцию отправки данных -

void OneWire::write_bit(uint8_t v)
{
	IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
	volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;

	if (v & 1) {
		noInterrupts();
		DIRECT_WRITE_LOW(reg, mask);
		DIRECT_MODE_OUTPUT(reg, mask);	// drive output low
		delayMicroseconds(10);
		DIRECT_WRITE_HIGH(reg, mask);	// drive output high
		interrupts();
		delayMicroseconds(55);
	} else {
		noInterrupts();
		DIRECT_WRITE_LOW(reg, mask);
		DIRECT_MODE_OUTPUT(reg, mask);	// drive output low
		delayMicroseconds(65);
		DIRECT_WRITE_HIGH(reg, mask);	// drive output high
		interrupts();
		delayMicroseconds(5);
	}
}

можно увидеть что биты формируются при помощи делеев. как то мне кажется это не правильным и должно это делаться через? таймер? 

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Напиши свой, кто ж тебе мешает то ?
Раз тебе жалко 65-70микросекунд.
Только учти, что прерывания в момент приема/передачи , должны быть выключены (привет таймерам)

Green
Offline
Зарегистрирован: 01.10.2015

Это называется delay-фобия.
Вот так и СМИ людям мозги засирают.(

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

iopq пишет:
как то мне кажется это не правильным
Сделайте правильно.

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

iopq пишет:

можно увидеть что биты формируются при помощи делеев. как то мне кажется это не правильным и должно это делаться через? таймер?


закомментируй делеи и проверь - нужны они там или нет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

"Правильно" это видимо в прерывании таймера. Только нужно руководствоваться не правилами, а целью. Что хотите получить в результате ?

Logik
Offline
Зарегистрирован: 05.08.2014

ну 5 и 10 мксек и так нормально, а 55-65 на таймере выглядит получше. Но если после каждого вызова write_bit прокрутить луп, а не отправлять все сообщение подряд, то сойдет.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

iopq пишет:

вот мучает меня все время 

Не чешите - пройдёт.