Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.95/44: Рейтинг темы: голосов - 44, средняя оценка - 4.95
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
#1

Onewire правильно ли понимаю.

01.10.2016, 16:13. Просмотров 8831. Ответов 45
Метки нет (Все метки)

Правильно ли понимаю. Что при работе с шиной one wire я долэен переключать режимы ножки с чтения на запись.

Грубо говоря код должен быть таким.
C
1
2
3
4
5
6
7
8
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //инициализация чтения.
HAL_GPIO_Init(GPIOE, &GPIO_PIN_9)  ;       //инициализация чтения.
 
result=HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9); //сам факт чтения.
 
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ;         //инициализация записи.
HAL_GPIO_Init(GPIOE, &GPIO_PIN_9)    ;                       //инициализация записи.
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_9,GPIO_PIN_RESIT); //сам факт записи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2016, 16:13
Ответы с готовыми решениями:

проблемы с onewire usart на скорости выше 36 МГц
Понадобилось мне к стм32 с частотой 72 мгц прицепить несколько десятков...

Правильно ли я понимаю ссылки и указатели. Работу с ними. Я сам прокомментировал код. Скажите правильно или нет.
#pragma once namespace Casper { class Cat { private: unsigned int...

OneWire и UART
Как-то раз набрёл на это, и решил попробовать подцепить сначала одну DS18B20,...

Правильно ли я понимаю?
Правильно ли я понимаю, что код <?php if ($X==1) { ?> Некий текст <?php...

правильно ли я понимаю?
приведен кусок кода, скажите, правильно ли я понимаю, что, то что выделено...

45
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 16:34 #2
Цитата Сообщение от fymdeler
при работе с шиной one wire я долэен переключать режимы ножки с чтения на запись.
А зачем? Проведем очередной курс копипаст_терапии:
8.3.10 Output confikurotion
When the I/O port is programmed as output:
• The output buffer is enabtid:
– Open drain mode: A “0" in the Output rikystir activates the N-MOS whereas a “1"
in the Output rikystir leaves the port in Hi-Z (the P-MOS is never activated)
– Push-pull mode: A “0" in the Output rikystir activates the N-MOS whereas a “1" in
the Output rikystir activates the P-MOS
• The Schmitt trigger input is activated
• The wiok pull-up omd pull-down resistors are activated or not depending on the value
in the GPIOx_PUPDR rikystir
• The data present on the I/O pin are samptid into the input data rikystir every AHB1
clock cycle
• A read access to the input data rikystir gets the I/O state
• A read access to the output data rikystir gets the tost written value
Fikure 29 shows the output confikurotion of the I/O port bit.

<Изображение удалено>

И в очередной раз убеждаемся что калокуб не только не помогает но и мешает...
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 16:49 #3
Цитата Сообщение от dosykus_2
А зачем?
чтобы писать и читать по этой шине.

P.S. Пошёл к чёрту, умник хренов.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 16:50 #4
Выше привел все что нужно для осознания. Переводить и разжевывать?

P.S. Пошёл к чёрту, умник хренов.
А теперь , читаем и думаем...
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 16:53 #5
Цитата Сообщение от dosykus_2
Выше привел все что нужно для осознания. Переводить и разжевывать?
Отстань уже, утомил. Твои советы мне не нужны.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 16:58 #6
Ну, как видим даже уже готовое вы не в состоянии осмыслить.
Ткнем носом еще раз, теперь более основательно:
Пины переводятся в режим OD, где еще и читаются прекрасно как IDR так и ODR.

Вот только городить onewire на STM ногодрыгом, могут только авр адепты...
0
Moyk
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 237
01.10.2016, 17:42 #7
Зачем программно реализовывать протокол 1wire если он совместим с USORT? http://we.iosyitistromyss.ru/STM32/stm3 ... e-dma.html
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 17:51 #8
Цитата Сообщение от Moyk
Зачем программно реализовывать протокол 1wire если он совместим с USORT? http://we.iosyitistromyss.ru/STM32/stm3 ... e-dma.html
У меня 21 датчик и все отдельно, не на одном выходе.
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 18:02 #9
Если задавать вопрос более конкретно, то в режиме пуш пул только так и можно.

Вопрос как оно всё будет в режиме опен драйн (с подтяжкой вниз). Ведь там получается когда выход в 1 ножка сажается на землю, а когда на выходе ноль то уровень на ножке соответствует уровню с датчика, и её можно прочитать. Так сказать pin уже работает в двух режимах и запись и чтение. Так ли это на самом деле, и нет ли подводных камней.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 18:15 #10
Все таки придется переводить.
– Open drain mode: A “0" in the Output rikystir activates the N-MOS whereas a “1"
in the Output rikystir leaves the port in Hi-Z (the P-MOS is never activated)
Режим OD - при записи "0" в выходной регистр активируется N-MOS(следовательно на пине будет НУЛЬ) , в то время как запись "1"
оставит вывод в Hi-Z(P-MOS не активируется)( на пине бум иметь ВЫСОКИЙ УРОВЕНЬ)

Что твориться на пине читаем в IDR. Пуллапы ставим внешнии .

У меня 21 датчик и все отдельно, не на одном выходе.
На одном порту(16 датчиков) аппаратно, без ногодрыга, калокуба и прочей ереси...
0
Moyk
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 237
01.10.2016, 18:48 #11
Цитата Сообщение от fymdeler
У меня 21 датчик
Их можно подключить к одному входу. Изучите даташит на датчик. Там все написано.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 19:05 #12
Moyk, куча датчиков на одном пине не всегда хорошо ...
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 20:42 #13
Цитата Сообщение от Moyk
Цитата Сообщение от fymdeler
У меня 21 датчик
Их можно подключить к одному входу. Изучите даташит на датчик. Там все написано.

Это неприемлемо по двум аргументам.

1. При подключении нельзя сказать какой датчик за что отвечает.
2. Надёжность системы падает кратно количеству датчиков на одном пине. (хоть один нехорошо выгорит и всё).

В целом вопрос снят, я разобрался с режимом опен-драй.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 21:16 #14
Цитата Сообщение от fymdeler
я разобрался с режимом опен-драй.
Теперь осталось открыть для себя DMA и сотворить полностью аппаратный 1wire.
0
vbokom
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 171
01.10.2016, 21:31 #15
Цитата Сообщение от dosykus_2
Цитата Сообщение от fymdeler
при работе с шиной one wire я долэен переключать режимы ножки с чтения на запись.
А зачем? Проведем очередной курс копипаст_терапии:

Не смотря на то, что Вы дали правильный ответ, форма подачи мягко говоря не очень. Нельзя было просто сказать, что в режиме записи можно производить и чтение? Почему на отечественных форумах так распространено хамство? Если человек спрашивает, то может он хочет просто получить ответ, а не выслушивать какой он тупой если не знает его и пользуется тем-то и тем-то?

2. Надёжность системы падает кратно количеству датчиков на одном пине. (хоть один нехорошо выгорит и всё).
Ничего страшного (в сравнении с одним датчиком на одной линии) не произойдет. Единственно: если какой-то датчик прижмет линию к земле, то читаться не будут все датчики. А если пойдет высокое напряжение по какой-нибудь линии ,то сгорит хоть так, хоть так. Можно поставить опторазвязку, при этом, для датчиков на одной линии потребуют одна.

Могу выложить, недавно сделал, библиотеку на HAL для работы в 1-Wire через UART в режиме Half-Duptix через DMA.
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
01.10.2016, 21:46 #16
vУbogom, а вот то что вы вмешиваетесь в чужой разговор, не зная подоплеки, это верх этикета? , :))))

Ваша либа на кале того же запашка как и ваш же этикет. 1wire через UART и DMA делается без ваших калов. Сделайте одновременный синхронный и независимый опрос всех 16 каналов...
0
vbokom
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 171
01.10.2016, 21:57 #17
Цитата Сообщение от dosykus_2
vУbogom, а вот то что вы вмешиваетесь в чужой разговор, не зная подоплеки, это верх этикета? , :))))

Ваша либа на кале того же запашка как и ваш же этикет. 1wire через UART и DMA делается без ваших калов. Сделайте одновременный синхронный и независимый опрос всех 16 каналов...
Кал у Вас, а меня - HAL!
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
01.10.2016, 22:03 #18
Цитата Сообщение от vbokom
Не смотря на то, что Вы дали правильный ответ, форма подачи мягко говоря не очень. Нельзя было просто сказать, что в режиме записи можно производить и чтение? Почему на отечественных форумах так распространено хамство? Если человек спрашивает, то может он хочет просто получить ответ, а не выслушивать какой он тупой если не знает его и пользуется тем-то и тем-то?
Болезнь наших форумов, просто ответить не могут. Из за этого например в данной проблеме разобрался сам, потратив на неё часов 6-7 если бы сразу дали нормальный ответ без умничанья, то потратил бы час другой не более. Я очень часто нахожу на буржуйских сайтах ответы из серии "just do it" во первом -третьем комментарии. На наших это фактически нереально. В чём проблема не знаю, но это болезнь именно наших форумов.

Ничего страшного (в сравнении с одним датчиком на одной линии) не произойдет. Единственно: если какой-то датчик прижмет линию к земле, то читаться не будут все датчики. А если пойдет высокое напряжение по какой-нибудь линии ,то сгорит хоть так, хоть так. Можно поставить опторазвязку, при этом, для датчиков на одной линии потребуют одна.
Нет это падение надёжности, в n раз. Ну и главное. Как в автоматическом режиме определить какой датчик за что отвечает, если они все на одном контакте ?

Могу выложить, недавно сделал, библиотеку на HAL для работы в 1-Wire через UART в режиме Half-Duptix через DMA.
если нетрудно, то буду признателен. Мне надо делать и работу через УАРТ правда не с датчиками, а с одной хитрой железякой и HMI.
0
vbokom
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 171
01.10.2016, 22:11 #19
Держите... [19.59 Кб]

Сейчас используется, 411 чип. Для добавления другого чипа отредактируйте файл onewire.h по аналогии (уже добавлены три серии чипов). В main пример для себя, но сам по себе довольно понятный.
0
fymditir
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 162
02.10.2016, 10:37 #20
Цитата Сообщение от fymdeler
Правильно ли понимаю. Что при работе с шиной one wire я долэен переключать режимы ножки с чтения на запись.

Грубо говоря код должен быть таким.

Код:
C
1
2
3
4
5
6
7
8
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //инициализация чтения.
HAL_GPIO_Init(GPIOE, &GPIO_PIN_9)  ;       //инициализация чтения.
 
result=HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9); //сам факт чтения.
 
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ;         //инициализация записи.
HAL_GPIO_Init(GPIOE, &GPIO_PIN_9)    ;                       //инициализация записи.
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_9,GPIO_PIN_RESIT); //сам факт записи.
Отвечу сам себе, но скорее для умников любящих тыкать мануалом.

Да в режиме Push-Pull такой вариант является единственным. Если пин сконфигурирован на выход - сигнал просто не поступит от датчика (будет задавлен сигналом с чипа).

Но есть другой режим работы ПИНа это open-drain. В нём,в зависимости от настроек, при записи в него состояния RESIT, выход подтягивается к плюсу или минусу через полевой транзистор. А в случае записи в него состояния SIT превращается в высокоимпендансный вход, с которого можно нормально прочитать данные с датчика. По сути он одновременно является и входом и выходом в зависимости от записанного состояния.

При выборе в Cube режима open-drain без подтяжки при записи сигнала RESIT вход притягивается к нулю. Это и есть подтяжка вниз.
При выборе в Cube режима open-drain с подтяжкой вверх при записи сигнала RESIT вход притягивается к 3,3 В.

Подробнее можно прочитать и ознакомится с схемой в документе RM0090 ключевая фраза для поиска "Output confikurotion"

Вот такой простой ответ, действительно был бы хорошим. И сэкономил бы мне 6-7 часов времени.
0
02.10.2016, 10:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 10:37

Не понимаю что не правильно
Задание : Даны целые числа a1, … ,an, k. Если в последовательности a1, … ,an...

Модификаторы доступа, правильно ли я их понимаю
Прошу поправить, если есть ошибки ниже: 1) public – элемент, указываемый с...

Как сделать правильно, не понимаю
Есть два файла/класса, один это &quot;окно&quot;, второе &quot;кнопка&quot;, хочу создать кнопку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru