Возьмите и не мучайтесь:
https://aliexpress.ru/item/100500748286 ... 97b2n9PHf1
И параметры импульсов правильные, и фронты правильные, и работает всё через DMA, и даже гальваническая развязка очень просто реализуется.
Ой, нет. Мою задачу это не упрощает, а усложняет.tonyk писал(а):https://aliexpress.ru/item/1005007482869799.html?sku_id=12000044505946600&spm=a2g2w.productlist.search_results.0.224597b2n9PHf1
И параметры импульсов правильные, и фронты правильные, и работает всё через DMA, и даже гальваническая развязка очень просто реализуется.
Так все целиком надо менять. Решение не соответствует поставленной задаче.И это не мешает менять то, что вам не нравится.
я в полной мере представляю, что должно быть сделано, но пока еще не задумывался, как это может быть сделано. есть понимание, что возбуждение шины 1-wire микроконтроллером полностью детерминировано. моменты, когда мк должен переключать ногу вниз, а когда отпускать, известны для всего цикла измерения. раз так, то нужен, по сути, незамысловатый секвенсор, который бы проигрывал всю последовательность целиком.Если вы так хорошо знакомы с методом, то предложите свой.
Да ну. В Далласе ведь работают люди, любящие усложнять жизнь других. Вы хоть мурзилку на эту микруху полистали? Примеры программ посмотрели?a5021 писал(а):Ой, нет. Мою задачу это не упрощает, а усложняет.
Согласен. Вам следует читать внимательней.a5021 писал(а):вы правы. надо было покрупнее:a5021,
P. S. Для тех кто читает не внимательно. В даташите на DS2489B приведены примеры на С работы устройствами на шине I2C. Для тех кто в танке могу добавить, что работа через конвертер UART-I2C никак не связана с девайсом, который выполняет в данном случае функцию мастера шины, лишь бы у него были функции приёма-передачи блоков данных через UART.tonyk писал(а):Примеры программ посмотрели?
Вы даташит читали? Видимо, нет, коли задаёте такой вопрос.veso74 писал(а):tonyk, внутри напр. STM32G4xx есть 5 x USART, для чего нужна внешняя ИС, по цене почти как МК?
В STM32 нет схем формирования импульсов для OW, поэтому что вы там собрались использовать- не понятно. Рассчитывать на заявленные для OW 150м с банальным резистором, ИМХО, наивно. Ну и реализации шины OW с гальванической развязкой на DS2480B решается тривиально в отличие от огорода на внешних дискретных компонентах, которые в итоге займут на плате места больше, чем одна DS2480B.veso74 писал(а):Просто в МК (STM32) есть много ресурсов, которые можно использовать без включения внешних компонентов.
Код: Выделить всё
const uint16_t ccr_seq[] = {
// Timer starts LOW (line pulled low)
480, // [0] Release line (HIGH) at 480 µs — presence pulse start
980, // [1] Pull line LOW at 980 µs — presence pulse duration 500 µs
// 0xCC (11001100, LSB first: 0,0,1,1,0,0,1,1)
1040, // [2] Release (HIGH) after 60 µs LOW (bit 0)
1041, // [3] Pull LOW after 1 µs HIGH
1101, // [4] Release (HIGH) after 60 µs LOW (bit 1)
1102, // [5] Pull LOW after 1 µs HIGH
1103, // [6] Release (HIGH) after 1 µs LOW (bit 2, '1')
1163, // [7] Pull LOW after 60 µs HIGH
1164, // [8] Release (HIGH) after 1 µs LOW (bit 3, '1')
1224, // [9] Pull LOW after 60 µs HIGH
1284, // [10] Release (HIGH) after 60 µs LOW (bit 4)
1285, // [11] Pull LOW after 1 µs HIGH
1345, // [12] Release (HIGH) after 60 µs LOW (bit 5)
1346, // [13] Pull LOW after 1 µs HIGH
1347, // [14] Release (HIGH) after 1 µs LOW (bit 6, '1')
1407, // [15] Pull LOW after 60 µs HIGH
1408, // [16] Release (HIGH) after 1 µs LOW (bit 7, '1')
1468, // [17] Pull LOW after 60 µs HIGH
// 0x44 (01000100, LSB first: 0,0,1,0,0,0,1,0)
1528, // [18] Release (HIGH) after 60 µs LOW (bit 0)
1529, // [19] Pull LOW after 1 µs HIGH
1589, // [20] Release (HIGH) after 60 µs LOW (bit 1)
1590, // [21] Pull LOW after 1 µs HIGH
1591, // [22] Release (HIGH) after 1 µs LOW (bit 2, '1')
1651, // [23] Pull LOW after 60 µs HIGH
1711, // [24] Release (HIGH) after 60 µs LOW (bit 3)
1712, // [25] Pull LOW after 1 µs HIGH
1772, // [26] Release (HIGH) after 60 µs LOW (bit 4)
1773, // [27] Pull LOW after 1 µs HIGH
1833, // [28] Release (HIGH) after 60 µs LOW (bit 5)
1834, // [29] Pull LOW after 1 µs HIGH
1835, // [30] Release (HIGH) after 1 µs LOW (bit 6, '1')
1895, // [31] Pull LOW after 60 µs HIGH
1955 // [32] Release (HIGH) after 60 µs LOW (bit 7)
};
В наставлении по караульной службе нарисована другая схема, и именно для неё приведены характеристики по количеству узлов и длине линии связи.a5021 писал(а):схему с открытым стоком и подтягивающий резистор, аккурат, как написано в наставлении о караульной службе
на столе будет работать, а в реальных условиях я подожду 100мкс между стартами слотовafter 1 µs