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);