用單片機的I/O口模擬I2C協議
I2C用IO模擬程序網上范例最多的就是51的程序了,這些范例的正確性無需懷疑.但是如果直接以它為藍本將它"AVR化",一不留神,就會有點問題了.
這要從I2C的硬件規范和AVR及51單片機的IO口說起.I2C要求SCL,SDA二線都有 線與 功能,即I2C驅動口應該是 漏極開路 電路,其高電平的維持是靠上拉電阻來實現的, 而低電平則需要驅動口的強下拉能力.
51單片機IO口正好完全符合這個特性.寫起I2C驅動頗為得心應手.但是AVR的IO口強大了,它輸出的高電平是實實在在的高電平,而不是靠什么上拉電阻來提供,只有10mA都不到的電流!于是如果直接使用 PORTB_Bit0 = 1這樣的操作,就不能滿足I2C的線與功能了,如果此時有別的設備要將SCL或者SDA拉低,那么結果就是二個IO口打架,誰贏誰輸不得而知,時間長了,多半是兩敗俱傷,芯片發熱吧.
當然AVR的IO口自然有辦法滿足I2C的電氣特性要求,不就是不能輸出1么,那么用它的高阻狀態即可(DDRB_Bit0=0,PORTB_Bit0=0即可),要輸出0么(DDRB_Bit0=1,PORTB_Bit0=0).
標簽:
I2C
AVR
程序
范例
上傳時間:
2016-07-19
上傳用戶:gxrui1991
SQLite 2.8.6 源代碼,用來在Linux/Unix/Windows上編譯安裝.它是一個小型的數據庫,但是非常好用,速度也快,一般的數據庫查詢之類的操作據統計比MySQL,PostgreSQL都快,PHP5中直接綁定了它.最大可訪問的數據量是2T.不需要安裝,解壓縮之后就可以用了.在命令行中輸入 sqlite **,其中的**是文件名,如果不存在,會自動創建,這個文件就是數據庫文件,它代表了一個數據庫.
標簽:
PostgreSQL
Windows
SQLite
Linux
上傳時間:
2014-11-26
上傳用戶:tzl1975