1 Wire STM32

Michal Grunt michal.grunt na vynet.cz
Úterý Červenec 23 17:01:04 CEST 2013


Externí Pullup tam nemám, domníval jsem se že ten interní bude stačit, ale jak to vypadá tak asi ne... Výstup na jedničku před čtením nastavím. Večer to zkusím a dám vědět. Zatím děkuji všem za rady.

MG

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomáš Hamouz
Sent: Tuesday, July 23, 2013 4:51 PM
To: HW-news
Subject: Re[2]: 1 Wire STM32

Máte tam pull-up odpor na té 1wire sběrnici?
Interní pull-up na to nestačí, je potřeba 4k7, pro parazitní napájení obvodu je potřeba ještě i možnost tvrdého připojení na +.

A jak už psal wek, aby šlo něco přečíst, musíte nastavit výstup na 1.

Tomáš

> Tak stejně asi dělám něco špatně (senzor AM2302, napájení čidla je na 
> Discovery F0 připojené na 5V, SDA na PA3). Ow_reset mi vždy vrátí
> 0 (což by odpovídalo poslednímu přikazu GPIO_ResetBits) a je jedno 
> jestli je čidlo připojené nebo odpojené.
> http://meteobox.tk/files/AM2302.pdf
> Postup dle PDFka:
> - nahodím SDA, počkám těch cca 50ms
> - shodím, počkám Tbe (10ms)
> - nahodím, počkám Tgo (100us)
> - shodím, počkám Trel (120us - 80+40)
> - přečtu stav Treh

> void ow_init(void)
> {
>         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

>         GPIO_StructInit (&GPIO_InitStructure);
>         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
>         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
>         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
>         GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
>         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
>         GPIO_Init(GPIOA, &GPIO_InitStructure); }

> uint8_t ow_reset(void)
> {
>         uint8_t presence;

>         GPIO_SetBits(GPIOA,GPIO_Pin_3);
>         delay_ms(50); // počkat až čidlo po zapnutí napájení naběhne, nevím zda je to nutné...

>         GPIO_ResetBits(GPIOA, GPIO_Pin_3);
>         delay_ms(10);

>         GPIO_SetBits(GPIOA,GPIO_Pin_3);
>         delay_us(100);
>         GPIO_ResetBits(GPIOA, GPIO_Pin_3);

>         delay_us(120);

>         presence = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3);

>         return presence;
> }




_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list