請問,這一個溫度sensor
alert pin(3)會因為溫度超過設定的上下限而啟動
假設我設定上限28C,下限設定24C
如果現在溫度超過上限了,alert啟動
但是溫度如果沒有低於下限24C
alert則不會再次啟動
我想問的是,有沒有指令可以重置alert信號
不然我就只能斷電再接上才行
Shutdown可以!!好,我試試
另外請問器件reset是什麼??
不好意思
我剛剛試程式開始後,shutdown之後再開啟
測試reset,沒有重置
因為shutdown是bit0
所以我程式開始先設configure ,(R1、R0、TM)
01100011b,再寫一次01100010b
先設shutdown開,再關shutdown
這樣寫法有錯嗎
不好意思
更正一下上一篇回應
送出0x00、0x06的時後,第一個0x00的TMP275,ack沒有回應
所以沒有成功
ACK没有回应,是I2C时序不正确,地址没写错吧?总线上挂接了几个TMP275,从机地址设置的是什么?
我的I2C可以讀出溫度,設定上下限,所以時序應該沒問題
總線我只接了一個TMP275,因為我的A0、A1、A2都接地
所以Slave addr=1001000xb
如果slave address=00000000b,據我所知是I2C的群體廣播
是對總線上所有的裝置發出命令,這是我general call的了解
不過我沒有機會用到這一種呼叫的方法,這是第一次使用
我查第datasheet第9頁,它說reset的方法是先送0x00,再發送x06
這樣理解沒有問題吧
如果沒有問題,為什麼發第一個0x00的時後沒有收到ack呢??
你采用的是I2C的广播呼叫地址的方式,其实你总线上只有一个TMP275,不用广播呼叫的方式就可,广播呼叫是用来寻址连接到I2C 总线上的每个器件。广播呼叫地址的格式是00000000AxxxxxxxxA,两个字节,A代表的ACK信号,如果第二个字节像你说的为x06,即00000110,指的是 接收到这个两字节序列时所有打算响应这个广播呼叫地址的器件将复位并接受它们地址的可编程部分。
1. 請問總線只有一個TMP275,不用廣播呼叫的方式就可,這一句什麼意思。因為這一個reset方沒是我在手冊看到唯一說明,不用廣播怎麼reset?
2. 我剛測試,用廣播呼叫00000000-A-00000110-A測reset,只有上限有reset,可正常再發正alert,下限則不會,哪邊有問題?
不知你的问题解决了没,我的意思是不采取广播呼叫寻址方式,就按一般I2C寻址方式,因为据我对I2C的理解,广播呼叫一般是用于总线上挂接多个I2C从设备的时候,采用这种方式可以寻址到每一个设备。 你说的reset的话,如果再i2C的start起见,SCL或者SDA都拉低超过54ms的时候,i2C总线reset,如果将器件TMP275进行reset的话,指针寄存器的P1/P0位都写为00即可。
問題還沒解決 ...
不好意思,我看不懂最後一句的意思,指針寄存器的P1/P0位都寫為00即可
00位置為溫度暫存器,是唯讀的,是存放轉換後的溫度值
你的意思是說在0x00位置寫入0x00,這樣子就可以reset嗎?
奇怪
我試在位置0x00寫入0x00
怎麼只有上限的alert可再觸發而已
下限沒有?