Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: boreas - 14 Ocak 2019, 15:09:51

Başlık: st32f030 pin pozisyonunu değiştirmek 12uS zamana neden oluyor. Yanlış nerede?
Gönderen: boreas - 14 Ocak 2019, 15:09:51
CubeMX ile HAL kitaplığını kullanarak kod yazıyorum. DS18B20 kullanacağım. Yalnız çıkış olan pini girişe çevirip tekrar çıkış yapmam 12uS ye neden oluyor. Ararda hiç bekleme olmamasına rağmen.
while (1){
 ONEWIRE_LOW(OneWireStruct);
 ONEWIRE_OUTPUT(OneWireStruct);
 delay_65us();  // Pin çıkış pozisyonunda
 ONEWIRE_INPUT(OneWireStruct); // giriş oldu
                // döngü bitti 1. satıra döndü ve 12uS geçti.
}

// ONEWIRE İnput'un içeriği

void ONEWIRE_INPUT(OneWire_t *gp)
{
 GPIO_InitTypeDef gpinit;
 gpinit.Mode = GPIO_MODE_INPUT;
 gpinit.Pull = GPIO_NOPULL;
 gpinit.Speed = GPIO_SPEED_FREQ_HIGH;
 gpinit.Pin = gp->GPIO_Pin;
 HAL_GPIO_Init(gp->GPIOx,&gpinit);
}

(https://i.hizliresim.com/9ag4gr.png)
Başlık: Ynt: st32f030 pin pozisyonunu değiştirmek 12uS zamana neden oluyor. Yanlış nerede?
Gönderen: superconductor - 14 Ocak 2019, 15:42:18
One-wire için sürekli giriş çıkış ayarlamana gerek yok. Çıkış yapıp open-drain moda al, pin durumu pin output ayarlı iken de okunabiliyor. Stnd. Perip. için fonksiyon GPIO_ReadOutputDataBit().