в роли программиста полный нуб в этом деле, в роли ide - eclipse, в роли контроллера плата с stm32f103c8t6 на борту, на котором крутится RTOS ChibiOS.
Нужно читать код с DS1990A(ключ-таблетка).
однопроводный интерфейс многие реализуют через UART. Попробовал сделать и я так.
Сначала отправляем reset - для этого на скорости 9600 бод отправляем в порт 0xF0. Если пришло что-то другое, значит ответ есть.
Потом посылаем команду READROM (0x33). Для этого на скорости 115200 посылаем 8 байт. 0x00 - 0, 0xFF - 1.
Это я ничего не напутал? Все так? После этого опять пишем в порт 0xFF, и если вместо 0xFF пришло 0,то и slave устройство отправляло 0.
Значит, если посылать reset, то результат есть. делаю я это так:
Код: Выделить всё
static UARTConfig uart_cfg_1 = {
NULL,
NULL,
NULL,
NULL,
NULL,
9600,
0,
USART_CR2_LINEN,
0
};
uint8_t reset_onewire=0xF0;
while(1)
{
uartStart(&UARTD1, &uart_cfg_1);
uartStartSend(&UARTD1,1 , &reset_onewire);
chThdSleepMilliseconds(2000);
}
А дальше не получается ничего.
Нужно перезапустить драйвер с другим конфигом, на скорости 115200. А это уже требует несколько миллисекунд, что очень долго.
Подозреваю, что ус-во не отвечает мне именно из-за этого, но может делаю что-то вообще не так.
Есть чибиосоводы? Кто-то сможет помочь? Я готов и заплатить, если мне кто-то сделает этот кусок, но не откажусь и от помощи.


