Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32f0xx + one wire
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Посторонним В...
в интернете много реализаций и примеров работы с ds1820... фирмы dalas.... для атмелов.. для stm не видел

веду проект на процессоре stm32f051 отладка stm32f0discovery...

кто может помочь с программной реализацией... проект должен был сделать (по мнеию начальства) неделю назад...

сам пока не пробовал браться за реализацию ... может у кого то есть наработки...

заранее благодарен за помошь!!!
VAI
Можно посмотреть здесь:
http://mycontroller.ru/stm32-ds18b20-vvedenie/
и здесь
http://we.easyelectronics.ru/tag/1-Wire/

У меня в проектах имеется по нескольку термостатов. Для измерения температуры в них я использую DS18B20.
Из-за того, что там надо применять мелкие задержки, то приходится запрещать прерывания, если они используются в программе активно, или если используется операционка.
Ещё при использовании MSP430 я пошел другим путём:
- разбил весь алгоритм работы на элементарные функции и задержки между ними,
- использую прерывание по Compare для вызова этих функций. По вызову прерывания выполняется такая функция, затем в регистр Compare записывается необходимая задержка.

Сейчас подготовлю свою реализацию и несколько позже выложу сюда.
Посторонним В...
Цитата(VAI @ Sep 4 2012, 05:56) *
Можно посмотреть здесь:
http://mycontroller.ru/stm32-ds18b20-vvedenie/
и здесь
http://we.easyelectronics.ru/tag/1-Wire/

У меня в проектах имеется по нескольку термостатов. Для измерения температуры в них я использую DS18B20.
Из-за того, что там надо применять мелкие задержки, то приходится запрещать прерывания, если они используются в программе активно, или если используется операционка.
Ещё при использовании MSP430 я пошел другим путём:
- разбил весь алгоритм работы на элементарные функции и задержки между ними,
- использую прерывание по Compare для вызова этих функций. По вызову прерывания выполняется такая функция, затем в регистр Compare записывается необходимая задержка.

Сейчас подготовлю свою реализацию и несколько позже выложу сюда.


кстати да... освр пользую ... scmRtos...
тоже для себя переделывал благо спецы помогли...
кстати примеры откомпилю и протестирую и выложу результаты...

спасибо за помощь... а то с периферией у меня не очень то )))
kosyak©
Вот потому я и не выложил свой вариант - он не подходит для RTOS. Тут правильным решением будет либо реализация на уарте либо на таймере...
VAI
Мой подходит и для RTOS и без неё. Я использую кейловскую https://www.keil.com/demo/eval/rtx.htm. Они заточили исходники под CMSIS и раздают бесплатно:
Цитата
"This software is provided under a BSD License and can be freely used and distributed."


Прикладываю немного кастрированные файлы из рабочего проекта на STM32F205. Внутри архива есть редми.

В MSP430 я не использовал RTOS, а просто в прерывании по таймеру запускал преобразование.

Часть данных вместо int обозвано long (в часности измеренная температура). Эти данные могут передаваться из прибора наружу, поэтому, для описания таких данных я использую независящие от разрядности процессора типы.
Для ARM, Cortex - размерность int и long одинакова, поэтому ему пофигу.
При инициализации железа использую StdPeriph_Lib, а в прерываниях, для скорости, заменяю прямым обращением.
Посторонним В...
Цитата(kosyak© @ Sep 4 2012, 06:41) *
Вот потому я и не выложил свой вариант - он не подходит для RTOS. Тут правильным решением будет либо реализация на уарте либо на таймере...


Уартов всего 2

1й на внешний интерфейс
2й зарезервирован... (придется видимо разконсервировать)

а в будущем видать программную эмуляцию уарт делать придется ))

либо при передаче байта запраещать глобально прерывания...

вообще в проекте использую ds2784 (измеритель емкости аккумуляторов + протектор)...

есть в принципе еще решение - поставить преобразователь 1Wire<->i2c (ds2483)

но очень хотелось бы избавиться от лишнего корпуса....

Цитата(VAI @ Sep 4 2012, 08:28) *
Мой подходит и для RTOS и без неё. Я использую кейловскую https://www.keil.com/demo/eval/rtx.htm. Они заточили исходники под CMSIS и раздают бесплатно:


Прикладываю немного кастрированные файлы из рабочего проекта на STM32F205. Внутри архива есть редми.

В MSP430 я не использовал RTOS, а просто в прерывании по таймеру запускал преобразование.

Часть данных вместо int обозвано long (в часности измеренная температура). Эти данные могут передаваться из прибора наружу, поэтому, для описания таких данных я использую независящие от разрядности процессора типы.
Для ARM, Cortex - размерность int и long одинакова, поэтому ему пофигу.
При инициализации железа использую StdPeriph_Lib, а в прерываниях, для скорости, заменяю прямым обращением.


БЛАГОДАРЮ....
КАК РАЗ УСПЕЮ ПОДГОТОВИТЬ ПРОГРАММУ ПЕРЕД ПРИХОДОМ ОТЛАДКИ...
jcxz
Цитата(Посторонним В... @ Sep 4 2012, 14:28) *
...
а в будущем видать программную эмуляцию уарт делать придется ))

Что-то у вас всё программно - и i2c и 1-wire и даже UART....
Может полезней будет научиться читать доки на процессоры? wink.gif
polyname
Цитата
для атмелов.. для stm не видел
потому что так пишут только криворукие начинающие программеры.
правильная реализация - вынос работы с портами и задержки наружу, в пользовательскую библиотеку.
вся логика 1-wire прекрасно реализуется на стандартном Ansi C, поэтому легко портируется на любую архитектуру, с РТОС или без - неважно.
я так и сделал, с успехом использую одну либу на AVR/STM8/STM32/8051.
есть также неблокирующая модификация под Protothreads - можно работать параллельно с несколькими шинами 1-wire.
kosyak©
Цитата(polyname @ Sep 4 2012, 19:29) *
правильная реализация - вынос работы с портами и задержки наружу, в пользовательскую библиотеку.

Можно посмотреть пример "правильной" реализации?
Посторонним В...
Цитата(polyname @ Sep 4 2012, 16:29) *
потому что так пишут только криворукие начинающие программеры.
правильная реализация - вынос работы с портами и задержки наружу, в пользовательскую библиотеку.
вся логика 1-wire прекрасно реализуется на стандартном Ansi C, поэтому легко портируется на любую архитектуру, с РТОС или без - неважно.
я так и сделал, с успехом использую одну либу на AVR/STM8/STM32/8051.
есть также неблокирующая модификация под Protothreads - можно работать параллельно с несколькими шинами 1-wire.


действительно... либу в студию ))) покажите мастеркласс... )))

я и не отрицаю что что я начинающий кривоукий программер.... в шапке так и написано

для этого и создавался раздел...



Цитата(jcxz @ Sep 4 2012, 15:25) *
Что-то у вас всё программно - и i2c и 1-wire и даже UART....
Может полезней будет научиться читать доки на процессоры? wink.gif


я с дуру прыгнул на новый процессор ... stm32f0xx выпустили только в марте...
в интернете про подводные камни этого камня мало чего есть ...
приходится гланды лечить через задний проход...

согласен что при наличии на борту i2c делать программный опрос неразумно

но мне очень понравилась реализация ... обработка идет по каждой ветке ...
Сергей Борщ
QUOTE (Посторонним В... @ Sep 5 2012, 07:37) *
в интернете про подводные камни этого камня мало чего есть ...
ВОзможно потому, что там нет поводных камней?

QUOTE (Посторонним В... @ Sep 5 2012, 07:37) *
приходится гланды лечить через задний проход...
Это как? Методом "скачал либу-скомпилил-не работет-ищем другую"? Забудьте про либы, за это время уже можно было прочитать документацию и написать реализацию самостоятельно.
Посторонним В...
Цитата(Сергей Борщ @ Sep 5 2012, 06:47) *
ВОзможно потому, что там нет поводных камней?

Это как? Методом "скачал либу-скомпилил-не работет-ищем другую"? Забудьте про либы, за это время уже можно было прочитать документацию и написать реализацию самостоятельно.


видите ли ... ранее я писал под винду...

а там как понимаете или есть библиотека или нет... а самому дрова писать извините - большие сложности

видимо проклятая привычка...
jcxz
Цитата(Посторонним В... @ Sep 5 2012, 10:37) *
я с дуру прыгнул на новый процессор ... stm32f0xx выпустили только в марте...

Ну и что? Это не говорит о том, что производитель не тестирует свои процы. Вероятность того, что вы обнаружите баг проца в мэйн-стрим компонентах (типа i2c или UART которые использует большинство разработчиков) при стандартном использовании этих компонентов, стремится к нулю.
Ищите баги в первую очередь у себя... И во-вторую тож.
Мы вот тож делаем разработку на совершенно новом LPC1778 и пока багов в железе не обнаружили ни в i2c ни в SPI ни в UART, DMA, GPIO, CRC, таймерах....
Цитата(Посторонним В... @ Sep 5 2012, 10:37) *
согласен что при наличии на борту i2c делать программный опрос неразумно
но мне очень понравилась реализация ... обработка идет по каждой ветке ...

Ужас просто. Даже аппаратный i2c очень неудобная вещь (по-крайней мере в тех процах, что я имел дело) в плане паразитной загрузки процессора - прерывание на каждый байт, отсутствует DMA и даже FIFO. В моих проектах наибольшую частоту всегда имеет прерывание i2c - в остальных интерфейсах частоту прерываний можно снизить за счёт DMA или FIFO. А большая частота прерываний выливается в непроизводительную загрузку CPU на входы/выходы в ISR (особенно при наличии ОСРВ).
А вы его хотите еще программно делать....
Ну конечно если у вас процессору больше нечем заниматься, то пофиг.
Посторонним В...
задачка то простая (вроде бы)... получить в одном протоколе ... пердать в другом... уметь залить конфигурацию через внешний интерфейс и так же сменить ПО через внешний 1wire интерфейс...
все упирается в комуникационные интерфейсы... с которыми я не очень то дружу... а без них я так понимаю задач не быват...

Цитата(jcxz @ Sep 5 2012, 15:38) *
Ужас просто. Даже аппаратный i2c очень неудобная вещь (по-крайней мере в тех процах, что я имел дело) в плане паразитной загрузки процессора - прерывание на каждый байт, отсутствует DMA и даже FIFO. В моих проектах наибольшую частоту всегда имеет прерывание i2c - в остальных интерфейсах частоту прерываний можно снизить за счёт DMA или FIFO. А большая частота прерываний выливается в непроизводительную загрузку CPU на входы/выходы в ISR (особенно при наличии ОСРВ).
А вы его хотите еще программно делать....
Ну конечно если у вас процессору больше нечем заниматься, то пофиг.


dma там есть... но я пока боюсь об этом даже задумываться..

а то что названия регистров и функций не самокоментирующиеся это факт...
тем более они этот процессор улучшили в плане i2c .. примеры которые компилил для i2c - неработали
но там отладка конечно была другая... но камень то тот же... мне не понятно почему примеры не работали...
Alexey K
Засекаем время. Через неделю появится топик как же можно без DMA sm.gif
jcxz
Нее - о программной эмуляции DMA lol.gif
Посторонним В...
Цитата(Alexey K @ Sep 6 2012, 17:20) *
Засекаем время. Через неделю появится топик как же можно без DMA sm.gif


обязательно )))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.