nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

STTS751用関数

STTSのレジスタ設定、レジスタ読み出しのところを関数にしました。下位はPIC121822のMCCPを使うi2c関数を使います。

#include <htc.h>
	 
#include "mssp_i2c.h"
	 
#define STTS751    0b01110010  		// addr->GND
	
// Configuration register 設定 EVENT off,rez:00-11
	void stts_config(unsigned char rez)
	{
		i2c_writeto(STTS751);
	    	i2c_write(0x03);
	    	i2c_write(0x80 |(rez<<2));  // EVENT off、
	    	i2c_stop();
	}

// conversion rate 設定 1秒間に何回のconversion指定:0-9
	void stts_conv(unsigned char rate )
	{     
	    	i2c_writeto(STTS751);
	    	i2c_write(0x04);
	    	i2c_write(rate&0xF);       // 
	    	i2c_stop();
	}

// Data read	 
	void stts_read(unsigned char* ptr)
	{       
			unsigned char i;
	    	// 整数部読み込み
	    	i2c_writeto(STTS751);
	    	i2c_write(0);
	    	i2c_readfrom(STTS751);
			
	    	*ptr = i2c_read();
	    	i2c_stop();
 			ptr++;
	    	// 小数部読み込み
	    	i2c_writeto(STTS751);
	    	i2c_write(2);
	    	i2c_readfrom(STTS751);
	        *ptr = i2c_read();
	        i2c_stop();
	} 

// Busy check 1:busy
	unsigned char stts_busy(unsigned char state)
	{
	    	i2c_writeto(STTS751);
	    	i2c_write(1);
	    	i2c_readfrom(STTS751);
	    	state = i2c_read();
	    	i2c_stop();
		if(state&0x80) return 1;
		else return 0;
	}

ヘッダファイルは次です。

#include <htc.h>
	 
#include "mssp_i2c.h"
	 
// Configuration register 設定 EVENT off,rez:00-11
	void stts_config(unsigned char);

// conversion rate 設定 1秒間に何回のconversion指定:0-9
	void stts_conv(unsigned char );

// Data read	 
	void stts_read(unsigned char* );

// Busy check 1:busy
	unsigned char stts_busy(unsigned char);