int SMBUS_Read_Byte(int offset,int DEVID) { int RetVal=0; outportb(SMBus_Port,0x0fe); outportb(SMBus_Port+0x04,DEVID+1); outportb(SMBus_Port+0x03,offset+0); outportb(SMBus_Port+0x02,0x48); delay(200); if(WaitReady(SMBus_Port)) { RetVal = inp(SMBus_Port+0x05); } return RetVal; }
void SMBUS_Write_Byte(int Dev_id,int Reg_index,int Value) { outportb(SMBus_Port+0x04,Dev_id); delay(5); Chk_SMBUS_Ready(); outportb(SMBus_Port+0x03,Reg_index); delay(5); outportb(SMBus_Port+0x05,(Value & 0xFF)); delay(5); outportb(SMBus_Port+0x02,0x48); delay(25); Chk_SMBUS_Ready(); }
...esperienze in merito?...su un precedente programma di gestione watchdog hardware era necessario abilitare la lettura/scrittura per il device su i^2c anche se nella documentazione questa parte non era segnalata...
ioperm(0x2e, 0x2e, 1)