|
本文章最後由 antlu 於 2014-12-1 12:41 AM 編輯
用 C語言 控制MCU作玩具也已經好幾年了,沒有壓力進步慢是一定的,最近開始用 舅舅您 對岸代購的 SALEAE 的邏輯分析儀,好用!! 所以一定要分享給網友們,這不是推銷,但是誠心的推薦(價格記得只有幾百元)!!
日前 寫 LGC12002 串列七段顯示,這幾天 想要了解 溫溼度感應器的特性,有這個儀器可以把現象顯示出來,很容易發現自己的程式寫錯,對於時序的確認來說最好不過了,...
上圖的白色部分解開放大
這是 LGC12002 的相關波形
當然期間也發現一些問題,期待大家的協助釋疑!!
- #include "stm8s.h"
- #define DHT_Port GPIOD
- #define DHT_data GPIO_PIN_2
- #define FAILURE 0
- #define success 1
- u8 count80,count81,DHT_get;
- u8 DHT[5];
- void Delayus(u16 ust)//
- {
- while(ust !=0)
- {
- ust--;
- }
- }
- void DelayMs(u16 mst)
- {
- while( mst !=0)
- {
- Delayus(164);
- mst--;
- }
- }
- void DHT_Start(void)
- {
- GPIO_Init(DHT_Port,DHT_data,GPIO_MODE_OUT_PP_HIGH_FAST);
- GPIO_WriteLow(DHT_Port,DHT_data);
- DelayMs(18);//18.17ms
- GPIO_WriteHigh(DHT_Port,DHT_data);//10us
- Delayus(1);
- //nop();
- //nop();
- //nop();
- // GPIO_WriteLow(DHT_Port,DHT_data);//
- // Delayus(1);//26us
- // GPIO_WriteHigh(DHT_Port,DHT_data);
- // Delayus(2);//68us
- }
- u8 DHT_Read(void)
- {
- u8 i, j;
- GPIO_Init(DHT_Port,DHT_data,GPIO_MODE_IN_PU_NO_IT);
- //check start low 80us start high 80us
- count81=0;
- while(!(GPIO_ReadInputPin(DHT_Port,DHT_data)))
- {
- count81++;
- }
- // if(count80>80)
- // return FAILURE;
- count80=0;
- while(GPIO_ReadInputPin(DHT_Port,DHT_data))
- {
- nop();
- count80++;
- }
- // if(count80>80)
- // return FAILURE;
-
- //40bit 5byte read and store LOOP 5 sloop8
- /*
- for(j=0;j<5;j++)
- {
- for(i=0;i<8;i++)
- {
- while(!(GPIO_ReadInputPin(DHT_Port,DHT_data)))
- {
- count80++;
- }
- if(count80 <50)
- DHT_get+=1;
- else
- DHT_get+=0;
- DHT_get<<1;
-
- }
- DHT[j]=DHT_get;
- }
- */
-
- }
- main()
- {
-
- while (1)
- {
- DHT_Start();
- DHT_Read();
-
- DelayMs(20);
- }
- }
複製代碼 原先以為 Delayus(n) 會延遲n 微秒,沒想到跟事實天差地遠,
GPIO_WriteLow(DHT_Port,DHT_data);
Delayus(1);//26us
GPIO_WriteHigh(DHT_Port,DHT_data);
Delayus(2);//68us
我用 邏輯分析儀量取 一個輸出為low並且延遲 Delayus(1) 居然要花上 26us.一個輸出並且延遲Delayus(2) 要花掉 68us 這讓我大吃一驚,接下來的動作,要把我考倒了.
因為這個溫溼度發出來的信號是 拉低位準時間50us 升高位準作為資料 24us(0) 70us(1) http://www.adafruit.com/datasheets/DHT11-chinese.pdf
不知道我這個 STM8S103 怎麼解決?
|
評分
-
7
查看全部評分
-
|