با سلام
ان شاء الله که خوب و سلامت باشید میخواستم بپرسم من برنامه نویسی این ماژول با استفاده از پروتکل i2c برای میکروکنترلر PIC16F877A رو انجام دادم اما ماژول راه نیفتاد میخواستم یپرسم مشکلش از کجا میتونه باشه و اگه امکانش هست یه کمکی کنید؟ با تشکر (چون از یکی که پرسیدم میگفت باید اول Configuration رو تنظیم کنی بعد اما واقعیتا تعداد رجیسترهای این ماژول زیاد هست)
#include <16f877a.h>
#use delay(clock=8000000)
#use i2c(master,fast,sda=pin_c4,scl=pin_c3)
#fuses hs,nowdt
#define use_portb_lcd true
#include <lcd.c>
void main() {
int SPO2 , H_R ;
lcd_init();
while(1) {
i2c_start();
i2c_write(0xAE); //hardware address and R/Wnot=0 ,write
i2c_write(0x06); //Mode Configuration
i2c_write(0x0A); //Heart rate
i2c_start();
i2c_write(0xAF); //hardware address and R/Wnot=1 , read
H_R=i2c_read(1); //read Heart rate
SPO2=i2c_read(0); //read SPO2
//Temp=i2c_read(1); //read Temperature
i2c_stop();
printf(lcd_putc,"\fH_R=%d \nSPO2=%d",H_R,SPO2);
delay_ms(100);
//i2c_write(11);
}
}
مثلا چند نمونه از آدرس رجیسترهای این ماژول:
#define MAX30100_INT_STATUS 0x00 // Which interrupts are tripped
#define MAX30100_INT_ENABLE 0x01 // Which interrupts are active
#define MAX30100_FIFO_WR_PTR 0x02 // Where data is being written
#define MAX30100_OVRFLOW_CTR 0x03 // Number of lost samples
#define MAX30100_FIFO_RD_PTR 0x04 // Where to read from
#define MAX30100_FIFO_DATA 0x05 // Ouput data buffer
#define MAX30100_MODE_CONFIG 0x06 // Control register
#define MAX30100_SPO2_CONFIG 0x07 // Oximetry settings
#define MAX30100_LED_CONFIG 0x09 // Pulse width and power of LEDs
#define MAX30100_TEMP_INTG 0x16 // Temperature value, whole number
#define MAX30100_TEMP_FRAC 0x17 // Temperature value, fraction
#define MAX30100_REV_ID 0xFE // Part revision
#define MAX30100_PART_ID 0xFF // Part ID, normally 0x11
#define MAX30100_ADDRESS 0x57 // 8bit address converted to 7bit