Interfacing the DS1620 to the
[09-13 17:03:31] 来源:http://www.88dzw.com 控制技术 阅读:8716次
文章摘要:Software for the InterfaceWhile the hardware for the interface is relatively straightforward, the rest of the SPI/DS1620 interface must be handled by software. The following example shows a way to do this in the case of reading the temperature from the DS1620. This code fragment assumes that the DS1
Interfacing the DS1620 to the,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.comSoftware for the Interface
While the hardware for the interface is relatively straightforward, the rest of the SPI/DS1620 interface must be handled by software. The following example shows a way to do this in the case of reading the temperature from the DS1620. This code fragment assumes that the DS1620 has already been initialized, that the configuration register is set up properly, and that temperature conversions have been initiated. See the DS1620 data sheet for details on these operating modes.Before accessing the DS1620, the DIR signal must be asserted low for a WRITE transfer to occur. RST-bar must be driven high to enable the DS1620. The SPI controller sends out the protocol (eight bits long) to the DS1620. Again, note that SPI sends information MSB first, while the DS1620 communicates LSB first. In order to accomplish this, a software "mirror" should be used to reverse the bit order. An example of such a function is given by:
unsigned char mirror(unsigned char value) { unsigned char i; unsigned char value_mirrored = 0x00; for (i=0;i<=7;i++) { value_mirrored = value_mirrored | (((value>>i)&0x01)<<(7-i)); } return (value_mirrored); }With the protocol sent, the DIR is changed from low to high (indicating now a READ transfer) because the DS1620 is ready to send out the 9-bit value. Note that RST-bar is still high. The SPI controller reads the first eight bits of the 9-bit value (LSB first). The software has to "mirror" the received byte. The 9th bit (followed by seven dummy bits) is pulled out by making another READ transfer and keeping DIR and RST-bar as they are. When the second byte is received, the software again mirrors it and pulls RST-bar low, terminating communication with the DS1620.
#define RST_bit 0 /* PB0 */ #define RST_port PORTB #define DIR_bit 1 /* PB1 */ #define DIR_port PORTB #define READ_TEMP_CMD 0xAA unsigned int read_temp(void) { unsigned char temp_value_lo; unsigned char temp_value_hi; DIR_port = DIR_port & ~(1<<DIR_bit); /* DIR = L WRITE mode */ RST_port = RST_port | (1<<RST_bit); /* RST = HI: DS1620 enabled */ SPDR = mirror(READ_TEMP_CMD); /* Send protocol to DS1620 */ DIR_port = DIR_port | (1<<DIR_bit); /* DIR = HI: READ mode */ while ((SPSR & (1<<SPIF_bit)) == 0); /* Wait for SPI flag = ready */ temp_value_lo = mirror(SPDR); /* Receive 8 lowest bits */ temp_value_hi = mirror(SPDR); /* Receive 8 highest bits */ RST_port = RST_port & ~(1<<RST_bit); /* RST = L Temp. reading done */ return ((temp_value_hi<<8)+temp_value_lo); /* Return the 9-bit value */ }
Tag:控制技术,计算机控制技术,工厂电气控制技术,控制技术
《Interfacing the DS1620 to the》相关文章
- › ATX开关稳压电源与CRT显示器电路图集000068-INTEL MODEL NO FM370...
- › Interfacing the DS1620 to the
- › Intersil智能传感器解决方案
- › Intersil 推出光传感器
- › Intersil 推出双输出降压控制器
- › 基于AVR单片机的多任务嵌入式Internet系统设计
- 在百度中搜索相关文章:Interfacing the DS1620 to the
- 在谷歌中搜索相关文章:Interfacing the DS1620 to the
- 在soso中搜索相关文章:Interfacing the DS1620 to the
- 在搜狗中搜索相关文章:Interfacing the DS1620 to the
分类导航
最新更新