roboforum.ru

Технический форум по робототехнике.

stm32discovery и ds1821

stm32discovery и ds1821

bablzz » 16 дек 2011, 01:37

Умные люди, помогите с данной темой. Худо бедно я разобрался как выдавать сигналы с портов и все такое, то есть начальный уровень работы с stm32.
есть собственно датчик ds1821. работает в режиме 1-wire. собственно будет подключен к пину snm32.
Проблема собственно в том, как принимать данные с датчика. До этого я никогда не "выросту". К примеру я буду подносить к нему зажигалку, он будет снимать температуру и выдавать на пин. Как это запрограммировать на C(пишу в CoIDE).

А точнее, сравнивать значение температуры с датчика с моим заданным значением. Вот что то вроде этого. Если есть какая либо информация, я буду благодарен.

Re: stm32discovery и ds1821

Петруччо » 16 дек 2011, 10:09

http://avrlab.com/node/129
здесь разжовывается 1-wire с примерами, правда под аврку. Думаю что с портированием проблем не особо много будет, но осциллограф может понадобиться посмотреть задержки и длительности кадров.

Re: stm32discovery и ds1821

bablzz » 16 дек 2011, 13:15

Спасибо. Сижу, читаю)

Re: stm32discovery и ds1821

haste » 16 дек 2011, 20:15

bablzz писал(а):Спасибо. Сижу, читаю)

коллега, надеюсь поделитесь сюда успехами.
сам заказал пару дискавери, жду к нг.

Re: stm32discovery и ds1821

bablzz » 17 дек 2011, 17:57

#include <stm32f10x.h>
#include <stm32f10x_conf.h>

#include <stm32f10x_rcc.h>
#include <stm32f10x_gpio.h>

void Delay(volatile uint32_t nCount) {
for (; nCount != 0; nCount--);
}

int main(void) {
SystemInit();
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN|RCC_APB2ENR_IOPCEN;
GPIOC->CRH |= GPIO_CRH_MODE8; // Порт светодиода LED4 PC8 на выход
GPIOC->CRH &=~GPIO_CRH_CNF8; // Двухтактный выход на PC8.
GPIOB->CRL &=~GPIO_CRL_MODE7;
while(1)
{
// Если кнопка нажата, зажечь светодиоды, иначе потушить.
if ((GPIOB->IDR & GPIO_IDR_IDR0)) {GPIOC->BSRR=GPIO_BSRR_BS8;}
else { GPIOC->BSRR=GPIO_BSRR_BR8;}


}

вот пока так, по примерам и все такое.
пока не запускал, нужна помощь в строчке
if ((GPIOB->IDR & GPIO_IDR_IDR0)) {GPIOC->BSRR=GPIO_BSRR_BS8;}
там идет если на порту B есть сигнал, и вот следующее условие я хотел сделать сравнение температуры, даже с нулем чтобы просто проверить как все это будет работать что то вроде такого
GPIOB->IDR & (моя температура > показаний датчика)


конечно может и во все все не так, но подскажите, как можно оформить это условие. а я проверю и отпишусь)

Re: stm32discovery и ds1821

haste » 18 дек 2011, 19:35

1. светодиодом удалось помигать?
2. функция забора данных с датчика есть?

Re: stm32discovery и ds1821

bablzz » 19 дек 2011, 15:33

http://avrlab.com/node/129
Петруччо написал вот ссылку на форум, там написано как передаются данные, там все просто, а вот условие я сформировать не могу, про это писал в предыдущем посте. Если кто поможет сформировать условие, я тогда и помигаю светодиодом


Rambler\'s Top100 Mail.ru counter