お世話になります初心者IKUZOと申しますRL78/G1EのIICの件ですが、教えていただけませんでしょうか?先ほど、P15/ANI24/SCK20/SCL20/(KR5) SCL20 MAX6626用IIC(adr 10010001)P14/ANI23/SI20/SDA20/RxD2/(KR4) SDA20 MAX6626用IIC(adr 10010001)を接続しまして、プログラムを下記のように作成して実行しましたところオシロスコープを監視すると正常に動作していないと思われますアドバイスいただけませんでしょうか●実行ソース
/////////////////////////////////////////////////////////////////////// //MAX6626���x����擾 /////////////////////////////////////////////////////////////////////// int cmd_max6626(char *str) { uint8_t data[2]; IIC20_Master_Receive(0x91 , data , 2); printf("0x%02X%02X\r",(int)data[0] &0xFF ,(int)data[1] &0xFF ); return CMD_OK; } /////////////////////////////////////////////////////////////////////// //MAX6626���x����擾 ///////////////////////////////////////////////////////////////////////
●実行して観測された波形(上SCL 下SDA)
チョコさんできたようです「通信が完了するまで,プログラムで待ったください。」これを挿入しましたら正常に動作しているように見えます、大切なヒントを与えていただいてありがとうございました。●ソース
/////////////////////////////////////////////////////////////////////// //MAX6626���x����擾 /////////////////////////////////////////////////////////////////////// int cmd_max6626(char *str) { double temp; temp=get_max6626(); printf("%.1f��\r", temp ); return CMD_OK; } /////////////////////////////////////////////////////////////////////// //MAX6626���x����擾 /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //MAX6626�̉��x���擾 /////////////////////////////////////////////////////////////////////// double get_max6626(void) { double ret; uint8_t data[2]; IIC20_Master_Receive(0x91, data, 2); while( (SOE1 & _0001_SAU_CH0_OUTPUT_ENABLE ) !=0){} ret=(double)(((((int)data[0] <<8) | (int)data[1] & 0xFF) >>4) & 0x0FFF); ret *=0.0625; return ret; } /////////////////////////////////////////////////////////////////////// //MAX6626�̉��x���擾 ///////////////////////////////////////////////////////////////////////
●モニター