roboforum.ru

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


stm32discovery и ds1821

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

stm32discovery и ds1821

Сообщение bablzz » 16 дек 2011, 01:37

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

А точнее, сравнивать значение температуры с датчика с моим заданным значением. Вот что то вроде этого. Если есть какая либо информация, я буду благодарен.
bablzz
 
Сообщения: 6
Зарегистрирован: 14 дек 2011, 00:28

Re: stm32discovery и ds1821

Сообщение Петруччо » 16 дек 2011, 10:09

http://avrlab.com/node/129
здесь разжовывается 1-wire с примерами, правда под аврку. Думаю что с портированием проблем не особо много будет, но осциллограф может понадобиться посмотреть задержки и длительности кадров.
Петруччо
 
Сообщения: 20
Зарегистрирован: 28 июл 2011, 11:19
Откуда: www.rcdesign.ru
прог. языки: C

Re: stm32discovery и ds1821

Сообщение bablzz » 16 дек 2011, 13:15

Спасибо. Сижу, читаю)
bablzz
 
Сообщения: 6
Зарегистрирован: 14 дек 2011, 00:28

Re: stm32discovery и ds1821

Сообщение haste » 16 дек 2011, 20:15

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

коллега, надеюсь поделитесь сюда успехами.
сам заказал пару дискавери, жду к нг.
haste
 
Сообщения: 30
Зарегистрирован: 17 ноя 2011, 07:06
Откуда: Новосибирск

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 & (моя температура > показаний датчика)


конечно может и во все все не так, но подскажите, как можно оформить это условие. а я проверю и отпишусь)
bablzz
 
Сообщения: 6
Зарегистрирован: 14 дек 2011, 00:28

Re: stm32discovery и ds1821

Сообщение haste » 18 дек 2011, 19:35

1. светодиодом удалось помигать?
2. функция забора данных с датчика есть?
haste
 
Сообщения: 30
Зарегистрирован: 17 ноя 2011, 07:06
Откуда: Новосибирск

Re: stm32discovery и ds1821

Сообщение bablzz » 19 дек 2011, 15:33

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


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10