60 uint8_t oneWireScript[126];
61 uint8_t oneWireScript_length = 0;
62 double oneWireScript_accumulativeOneWireTime = 0;
63 uint8_t oneWireScript_commandsCount = 0;
64 uint8_t oneWireScriptResponse[126];
65 uint8_t oneWireScriptResponse_length = 0;
68 int OneWire_ResetPulse()
71 uint8_t resetResponse_index;
72 one_wire_speeds speed;
73 uint8_t presence_pulse_detect;
76 OneWire_Script_Clear();
78 error = OneWire_Get_OneWireMasterSpeed(&speed);
79 if(error)
return error;
80 error = OneWire_Script_Add_OW_RESET(&resetResponse_index, speed,
false);
81 if(error)
return error;
85 for(
int i=0; i<3; i++) {
86 error = OneWire_Script_Execute();
89 if(error)
return error;
90 reset_status = oneWireScriptResponse[resetResponse_index + 1];
91 presence_pulse_detect = reset_status & (1 << 1);
92 if (presence_pulse_detect)
104 int OneWire_WriteByte(
unsigned char byte)
107 uint8_t writeByteResponse_index;
109 OneWire_Script_Clear();
111 error = OneWire_Script_Add_OW_WRITE_BYTE(&writeByteResponse_index, byte);
112 if(error)
return error;
113 error = OneWire_Script_Execute();
114 if(error)
return error;
115 uint8_t writeByte_status = oneWireScriptResponse[writeByteResponse_index + 1];
116 if (byte == writeByte_status)
128 int OneWire_WriteBlock(
unsigned char *data,
int data_length)
131 uint8_t writeBlockResponse_index;
133 OneWire_Script_Clear();
135 error = OneWire_Script_Add_OW_WRITE_BLOCK(&writeBlockResponse_index, data, data_length);
136 if(error)
return error;
137 error = OneWire_Script_Execute();
138 if(error)
return error;
139 uint8_t writeBlock_status = oneWireScriptResponse[writeBlockResponse_index + 1];
140 if (writeBlock_status == 0xAA)
152 uint8_t OneWire_ReadByte()
155 uint8_t readByteResponse_index;
157 OneWire_Script_Clear();
159 error = OneWire_Script_Add_OW_READ_BYTE(&readByteResponse_index);
161 error = OneWire_Script_Execute();
164 uint8_t readByte = oneWireScriptResponse[readByteResponse_index + 1];
168 int OneWire_ReadBlock(
unsigned char *data,
int data_length)
171 uint8_t readBlockResponse_index;
173 OneWire_Script_Clear();
175 error = OneWire_Script_Add_OW_READ_BLOCK(&readBlockResponse_index, data_length);
176 if(error)
return error;
177 error = OneWire_Script_Execute();
178 if(error)
return error;
180 uint8_t readBlock_length = oneWireScriptResponse[readBlockResponse_index + 1];
181 uint8_t readBlock_index = readBlockResponse_index + 2;
182 memcpy(&data[0], &oneWireScriptResponse[readBlock_index], readBlock_length);
193 return DS2485_OneWireSearch(romid->ID, 0xF0,
true,
false, search_reset, last_device_found);
196 int OneWire_WriteBytePower(
int send_byte)
199 uint8_t writeByteResponse_index;
201 OneWire_Script_Clear();
203 OneWire_Script_Add_PRIME_SPU();
204 error = OneWire_Script_Add_OW_WRITE_BYTE(&writeByteResponse_index, send_byte);
205 if(error)
return error;
206 error = OneWire_Script_Execute();
207 if(error)
return error;
208 uint8_t writeByte_status = oneWireScriptResponse[writeByteResponse_index + 1];
209 if (send_byte == writeByte_status)
223 void OneWire_Script_Clear(
void)
225 oneWireScript_length = 0;
226 oneWireScript_accumulativeOneWireTime = 0;
227 oneWireScript_commandsCount = 0;
228 oneWireScriptResponse_length = 0;
230 int OneWire_Script_Execute(
void)
234 if((error = DS2485_OneWireScript(oneWireScript, oneWireScript_length, oneWireScript_accumulativeOneWireTime, oneWireScript_commandsCount, oneWireScriptResponse, oneWireScriptResponse_length)) != 0)
242 int OneWire_Script_Add_OW_RESET(uint8_t *response_index, one_wire_speeds spd,
bool ignore)
247 one_wire_speeds master_speed;
253 oneWireScript[oneWireScript_length++] = PC_OW_RESET;
256 oneWireScript[oneWireScript_length++] = ((spd ^ 1) << 7) | (spd << 3) | (ignore << 1);
259 *response_index = oneWireScriptResponse_length;
260 oneWireScriptResponse_length += 2;
263 oneWireScript_commandsCount++;
267 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
272 if(master_speed != STANDARD)
274 if ((error = OneWire_Get_tRSTL(&t_rstl, OVERDRIVE)) != 0)
278 if ((error = OneWire_Get_tRSTH(&t_rsth, OVERDRIVE)) != 0)
285 if ((error = OneWire_Get_tRSTL(&t_rstl, STANDARD)) != 0)
289 if ((error = OneWire_Get_tRSTH(&t_rsth, STANDARD)) != 0)
295 ow_rst_time = t_rstl + t_rsth;
298 oneWireScript_accumulativeOneWireTime += ow_rst_time;
303 int OneWire_Script_Add_OW_WRITE_BIT(uint8_t *response_index,
bool bit_value)
308 one_wire_speeds master_speed;
316 oneWireScript[oneWireScript_length++] = PC_OW_WRITE_BIT;
319 oneWireScript[oneWireScript_length++] = bit_value;
322 *response_index = oneWireScriptResponse_length;
323 oneWireScriptResponse_length += 2;
330 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
335 if(master_speed != STANDARD)
337 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
341 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
348 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
352 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
359 t_slot = t_w0l + t_rec;
362 oneWireScript_accumulativeOneWireTime += t_slot;
367 int OneWire_Script_Add_OW_READ_BIT(uint8_t *response_index)
372 one_wire_speeds master_speed;
380 oneWireScript[oneWireScript_length++] = PC_OW_READ_BIT;
386 *response_index = oneWireScriptResponse_length;
387 oneWireScriptResponse_length += 2;
394 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
399 if(master_speed != STANDARD)
401 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
405 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
412 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
416 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
423 t_slot = t_w0l + t_rec;
426 oneWireScript_accumulativeOneWireTime += t_slot;
431 int OneWire_Script_Add_OW_WRITE_BYTE(uint8_t *response_index, uint8_t txByte)
436 one_wire_speeds master_speed;
445 oneWireScript[oneWireScript_length++] = PC_OW_WRITE_BYTE;
448 oneWireScript[oneWireScript_length++] = txByte;
451 *response_index = oneWireScriptResponse_length;
452 oneWireScriptResponse_length += 2;
455 oneWireScript_commandsCount++;
459 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
464 if(master_speed != STANDARD)
466 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
470 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
477 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
481 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
488 t_slot = t_w0l + t_rec;
489 byte_time = 8 * t_slot;
492 oneWireScript_accumulativeOneWireTime += byte_time;
497 int OneWire_Script_Add_OW_READ_BYTE(uint8_t *response_index)
502 one_wire_speeds master_speed;
511 oneWireScript[oneWireScript_length++] = PC_OW_READ_BYTE;
517 *response_index = oneWireScriptResponse_length;
518 oneWireScriptResponse_length += 2;
521 oneWireScript_commandsCount++;
525 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
530 if(master_speed != STANDARD)
532 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
536 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
543 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
547 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
554 t_slot = t_w0l + t_rec;
555 byte_time = 8 * t_slot;
558 oneWireScript_accumulativeOneWireTime += byte_time;
563 int OneWire_Script_Add_OW_TRIPLET(uint8_t *response_index,
bool t_value)
568 one_wire_speeds master_speed;
576 oneWireScript[oneWireScript_length++] = PC_OW_TRIPLET;
579 oneWireScript[oneWireScript_length++] = t_value;
582 *response_index = oneWireScriptResponse_length;
583 oneWireScriptResponse_length += 2;
590 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
595 if(master_speed != STANDARD)
597 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
601 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
608 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
612 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
619 t_slot = t_w0l + t_rec;
622 oneWireScript_accumulativeOneWireTime += t_slot;
627 int OneWire_Script_Add_OV_SKIP(uint8_t *response_index)
632 double standard_ow_rst_time;
633 double overdrive_ow_rst_time;
638 double standard_t_w0l;
639 double standard_t_rec;
640 double standard_t_rstl;
641 double standard_t_rsth;
642 double overdrive_t_rstl;
643 double overdrive_t_rsth;
646 oneWireScript[oneWireScript_length++] = PC_OW_OV_SKIP;
652 *response_index = oneWireScriptResponse_length;
653 oneWireScriptResponse_length += 2;
656 oneWireScript_commandsCount += 3;
660 if ((error = OneWire_Get_tRSTH(&overdrive_t_rsth, OVERDRIVE)) != 0)
664 if ((error = OneWire_Get_tRSTL(&overdrive_t_rstl, OVERDRIVE)) != 0)
668 if ((error = OneWire_Get_tW0L(&standard_t_w0l, STANDARD)) != 0)
672 if ((error = OneWire_Get_tREC(&standard_t_rec, STANDARD)) != 0)
676 if ((error = OneWire_Get_tRSTH(&standard_t_rsth, STANDARD)) != 0)
680 if ((error = OneWire_Get_tRSTL(&standard_t_rstl, STANDARD)) != 0)
686 t_slot = standard_t_w0l + standard_t_rec;
687 byte_time = 8 * t_slot;
688 standard_ow_rst_time = standard_t_rsth + standard_t_rstl;
689 overdrive_ow_rst_time = overdrive_t_rsth + overdrive_t_rstl;
692 oneWireScript_accumulativeOneWireTime += standard_ow_rst_time + byte_time + overdrive_ow_rst_time + 2000;
697 int OneWire_Script_Add_SKIP(uint8_t *response_index)
713 oneWireScript[oneWireScript_length++] = PC_OW_SKIP;
719 *response_index = oneWireScriptResponse_length;
720 oneWireScriptResponse_length += 2;
723 oneWireScript_commandsCount += 2;
727 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
731 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
735 if ((error = OneWire_Get_tRSTH(&t_rsth, STANDARD)) != 0)
739 if ((error = OneWire_Get_tRSTL(&t_rstl, STANDARD)) != 0)
745 t_slot = t_w0l + t_rec;
746 byte_time = 8 * t_slot;
747 ow_rst_time = t_rsth + t_rstl;
750 oneWireScript_accumulativeOneWireTime += ow_rst_time + byte_time;
755 int OneWire_Script_Add_OW_READ_BLOCK(uint8_t *response_index, uint8_t rxBytes)
760 one_wire_speeds master_speed;
769 oneWireScript[oneWireScript_length++] = PC_OW_READ_BLOCK;
772 oneWireScript[oneWireScript_length++] = rxBytes;
775 *response_index = oneWireScriptResponse_length;
776 oneWireScriptResponse_length += rxBytes + 2;
779 oneWireScript_commandsCount += rxBytes;
783 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
788 if(master_speed != STANDARD)
790 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
794 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
801 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
805 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
812 t_slot = t_w0l + t_rec;
813 byte_time = 8 * t_slot;
816 oneWireScript_accumulativeOneWireTime += byte_time * rxBytes;
821 int OneWire_Script_Add_OW_WRITE_BLOCK(uint8_t *response_index,
const uint8_t *txData, uint8_t txData_length)
826 one_wire_speeds master_speed;
835 oneWireScript[oneWireScript_length++] = PC_OW_WRITE_BLOCK;
838 oneWireScript[oneWireScript_length++] = txData_length;
839 for(
int i = 0; i < txData_length; i++)
841 oneWireScript[oneWireScript_length++] = txData[i];
845 *response_index = oneWireScriptResponse_length;
846 oneWireScriptResponse_length += 2;
849 oneWireScript_commandsCount += txData_length;
853 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
858 if(master_speed != STANDARD)
860 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
864 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
871 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
875 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
882 t_slot = t_w0l + t_rec;
883 byte_time = 8 * t_slot;
886 oneWireScript_accumulativeOneWireTime += byte_time * txData_length;
891 void OneWire_Script_Add_DELAY(uint8_t ms)
894 oneWireScript[oneWireScript_length++] = PC_DELAY;
897 oneWireScript[oneWireScript_length++] = ms;
906 oneWireScript_accumulativeOneWireTime += ms * 1000;
909 void OneWire_Script_Add_PRIME_SPU(
void)
912 oneWireScript[oneWireScript_length++] = PC_PRIME_SPU;
926 void OneWire_Script_Add_SPU_OFF(
void)
929 oneWireScript[oneWireScript_length++] = PC_SPU_OFF;
943 int OneWire_Script_Add_SPEED(one_wire_speeds spd,
bool ignore)
955 oneWireScript[oneWireScript_length++] = PC_SPEED;
958 oneWireScript[oneWireScript_length++] = ((spd ^ 1) << 7) | (spd << 3) | (ignore << 1);
964 oneWireScript_commandsCount++;
970 if ((error = OneWire_Get_tRSTH(&t_rsth, OVERDRIVE)) != 0)
974 if ((error = OneWire_Get_tRSTL(&t_rstl, OVERDRIVE)) != 0)
981 if ((error = OneWire_Get_tRSTH(&t_rsth, STANDARD)) != 0)
985 if ((error = OneWire_Get_tRSTL(&t_rstl, STANDARD)) != 0)
992 ow_rst_time = t_rstl + t_rsth;
995 oneWireScript_accumulativeOneWireTime += ow_rst_time;
1000 int OneWire_Script_Add_VERIFY_TOGGLE(uint8_t *response_index)
1005 one_wire_speeds master_speed;
1014 oneWireScript[oneWireScript_length++] = PC_VERIFY_TOGGLE;
1020 *response_index = oneWireScriptResponse_length;
1021 oneWireScriptResponse_length += 2;
1024 oneWireScript_commandsCount++;
1028 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
1033 if(master_speed != STANDARD)
1035 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
1039 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
1046 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
1050 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
1057 t_slot = t_w0l + t_rec;
1058 byte_time = 8 * t_slot;
1061 oneWireScript_accumulativeOneWireTime += byte_time;
1066 int OneWire_Script_Add_VERIFY_BYTE(uint8_t *response_index, uint8_t byte)
1071 one_wire_speeds master_speed;
1080 oneWireScript[oneWireScript_length++] = PC_VERIFY_BYTE;
1083 oneWireScript[oneWireScript_length++] = byte;
1086 *response_index = oneWireScriptResponse_length;
1087 oneWireScriptResponse_length += 2;
1090 oneWireScript_commandsCount++;
1094 if ((error = OneWire_Get_OneWireMasterSpeed(&master_speed)) != 0)
1099 if(master_speed != STANDARD)
1101 if ((error = OneWire_Get_tW0L(&t_w0l, OVERDRIVE)) != 0)
1105 if ((error = OneWire_Get_tREC(&t_rec, OVERDRIVE)) != 0)
1112 if ((error = OneWire_Get_tW0L(&t_w0l, STANDARD)) != 0)
1116 if ((error = OneWire_Get_tREC(&t_rec, STANDARD)) != 0)
1123 t_slot = t_w0l + t_rec;
1124 byte_time = 8 * t_slot;
1127 oneWireScript_accumulativeOneWireTime += byte_time;
1132 void OneWire_Script_Add_CRC16_START(
void)
1135 oneWireScript[oneWireScript_length++] = PC_CRC16_START;
1149 void OneWire_Script_Add_VERIFY_CRC16(uint8_t *response_index,
unsigned short hex_value)
1152 oneWireScript[oneWireScript_length++] = PC_VERIFY_CRC16;
1155 oneWireScript[oneWireScript_length++] = (uint8_t)hex_value;
1156 oneWireScript[oneWireScript_length++] = (uint8_t)(hex_value >> 8);
1159 *response_index = oneWireScriptResponse_length;
1160 oneWireScriptResponse_length += 2;
1168 void OneWire_Script_Add_SET_GPIO(uint8_t *response_index, gpio_settings pioac)
1171 oneWireScript[oneWireScript_length++] = PC_SET_GPIO;
1174 oneWireScript[oneWireScript_length++] = pioac;
1177 *response_index = oneWireScriptResponse_length;
1178 oneWireScriptResponse_length += 2;
1186 void OneWire_Script_Add_READ_GPIO(uint8_t *response_index)
1189 oneWireScript[oneWireScript_length++] = PC_READ_GPIO;
1195 *response_index = oneWireScriptResponse_length;
1196 oneWireScriptResponse_length += 2;
1204 void OneWire_Script_Add_VERIFY_GPIO(uint8_t *response_index, gpio_verify_level_detection pioal)
1207 oneWireScript[oneWireScript_length++] = PC_VERIFY_GPIO;
1210 oneWireScript[oneWireScript_length++] = pioal;
1213 *response_index = oneWireScriptResponse_length;
1214 oneWireScriptResponse_length += 2;
1222 void OneWire_Script_Add_CONFIG_RPUP_BUF(
unsigned short hex_value)
1225 oneWireScript[oneWireScript_length++] = PC_CONFIG_RPUP_BUF;
1228 oneWireScript[oneWireScript_length++] = (uint8_t)hex_value;
1229 oneWireScript[oneWireScript_length++] = (uint8_t)(hex_value >> 8);
1241 int OneWire_Enable_APU(
bool apu)
1244 uint8_t reg_data[2];
1248 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1254 reg_data[1] |= 0x10;
1256 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1263 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1269 reg_data[1] &= ~(0x10);
1271 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1279 int OneWire_Enable_SPU(
bool spu)
1282 uint8_t reg_data[2];
1286 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1292 reg_data[1] |= 0x20;
1294 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1302 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1308 reg_data[1] &= ~(0x20);
1310 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1318 int OneWire_Enable_OneWirePowerDown(
bool pdn)
1321 uint8_t reg_data[2];
1325 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1331 reg_data[1] |= 0x40;
1333 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1341 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1347 reg_data[1] &= ~(0x40);
1349 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1357 int OneWire_Set_OneWireMasterSpeed(one_wire_speeds spd)
1360 uint8_t reg_data[2];
1362 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1368 reg_data[1] = ((reg_data[1] & ~0x80) | (spd << 7));
1370 if((error = DS2485_WriteOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1378 int OneWire_Get_OneWireMasterSpeed(one_wire_speeds *spd)
1381 uint8_t reg_data[2];
1383 if((error = DS2485_ReadOneWirePortConfig(MASTER_CONFIGURATION, reg_data)) != 0)
1388 if((reg_data[1] >> 7) != STANDARD)
1400 int OneWire_Set_Custom_RPUP_BUF(vth_values vth, viapo_values viapo, rwpu_values rwpu)
1403 uint8_t reg_data[2];
1406 reg_data[0] = (vth << 4) | (viapo << 2) | rwpu;
1408 if((error = DS2485_WriteOneWirePortConfig(RPUP_BUF, reg_data)) != 0)
1415 int OneWire_Get_Custom_RPUP_BUF(vth_values *vth, viapo_values *viapo, rwpu_values *rwpu)
1418 uint8_t reg_data[2];
1420 if((error = DS2485_ReadOneWirePortConfig(RPUP_BUF, reg_data)) != 0)
1425 switch((reg_data[0] >> 4) & 0x03)
1441 switch((reg_data[0] >> 2) & 0x03)
1447 *viapo = VIAPO_MEDIUM;
1450 *viapo = VIAPO_HIGH;
1457 switch(reg_data[0] & 0x03)
1460 *rwpu = RWPU_EXTERNAL;
1477 int OneWire_Set_tRSTL_Standard_Predefined(one_wire_timing_presets trstl)
1480 uint8_t reg_data[2];
1483 reg_data[0] = trstl;
1485 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tRSTL, reg_data)) != 0)
1492 int OneWire_Set_tRSTL_Overdrive_Predefined(one_wire_timing_presets trstl)
1495 uint8_t reg_data[2];
1498 reg_data[0] = trstl;
1500 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tRSTL, reg_data)) != 0)
1507 int OneWire_Set_tRSTL_Standard_Custom(
double trstl)
1510 uint8_t reg_data[2];
1514 return error = RB_INVALID_PARAMETER;
1518 trstl /= (double)62.5;
1519 trstl = ((int)trstl | 0x8000);
1520 reg_data[0] = (uint8_t)trstl;
1521 reg_data[1] = ((int)trstl >> 8);
1523 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tRSTL, reg_data)) != 0)
1530 int OneWire_Set_tRSTL_Overdrive_Custom(
double trstl)
1533 uint8_t reg_data[2];
1537 return error = RB_INVALID_PARAMETER;
1541 trstl /= (double)62.5;
1542 trstl = ((int)trstl | 0x8000);
1543 reg_data[0] = (uint8_t)trstl;
1544 reg_data[1] = ((int)trstl >> 8);
1546 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tRSTL, reg_data)) != 0)
1553 int OneWire_Get_tRSTL(
double *trstl, one_wire_speeds spd)
1556 uint8_t reg_data[2];
1557 unsigned short value;
1561 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tRSTL, reg_data)) != 0)
1566 if((reg_data[1] >> 7) != 0)
1569 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
1570 *trstl = (double)value;
1571 *trstl *= (double)62.5;
1579 *trstl = tRSTL_OVERDRIVE_PRESET_0;
1583 *trstl = tRSTL_OVERDRIVE_PRESET_1;
1587 *trstl = tRSTL_OVERDRIVE_PRESET_2;
1591 *trstl = tRSTL_OVERDRIVE_PRESET_3;
1595 *trstl = tRSTL_OVERDRIVE_PRESET_4;
1599 *trstl = tRSTL_OVERDRIVE_PRESET_5;
1603 *trstl = tRSTL_OVERDRIVE_PRESET_6;
1607 *trstl = tRSTL_OVERDRIVE_PRESET_7;
1611 *trstl = tRSTL_OVERDRIVE_PRESET_8;
1615 *trstl = tRSTL_OVERDRIVE_PRESET_9;
1619 *trstl = tRSTL_OVERDRIVE_PRESET_A;
1623 *trstl = tRSTL_OVERDRIVE_PRESET_B;
1627 *trstl = tRSTL_OVERDRIVE_PRESET_C;
1631 *trstl = tRSTL_OVERDRIVE_PRESET_D;
1635 *trstl = tRSTL_OVERDRIVE_PRESET_E;
1639 *trstl = tRSTL_OVERDRIVE_PRESET_F;
1643 *trstl = tRSTL_OVERDRIVE_PRESET_6;
1650 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tRSTL, reg_data)) != 0)
1655 if((reg_data[1] >> 7) != 0)
1657 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
1658 *trstl = (double)value;
1659 *trstl *= (double)62.5;
1667 *trstl = tRSTL_STANDARD_PRESET_0;
1671 *trstl = tRSTL_STANDARD_PRESET_1;
1675 *trstl = tRSTL_STANDARD_PRESET_2;
1679 *trstl = tRSTL_STANDARD_PRESET_3;
1683 *trstl = tRSTL_STANDARD_PRESET_4;
1687 *trstl = tRSTL_STANDARD_PRESET_5;
1691 *trstl = tRSTL_STANDARD_PRESET_6;
1695 *trstl = tRSTL_STANDARD_PRESET_7;
1699 *trstl = tRSTL_STANDARD_PRESET_8;
1703 *trstl = tRSTL_STANDARD_PRESET_9;
1707 *trstl = tRSTL_STANDARD_PRESET_A;
1711 *trstl = tRSTL_STANDARD_PRESET_B;
1715 *trstl = tRSTL_STANDARD_PRESET_C;
1719 *trstl = tRSTL_STANDARD_PRESET_D;
1723 *trstl = tRSTL_STANDARD_PRESET_E;
1727 *trstl = tRSTL_STANDARD_PRESET_F;
1731 *trstl = tRSTL_STANDARD_PRESET_6;
1739 int OneWire_Set_tRSTH_Standard_Predefined(one_wire_timing_presets trsth)
1742 uint8_t reg_data[2];
1745 reg_data[0] = trsth;
1747 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tRSTH, reg_data)) != 0)
1754 int OneWire_Set_tRSTH_Overdrive_Predefined(one_wire_timing_presets trsth)
1757 uint8_t reg_data[2];
1760 reg_data[0] = trsth;
1762 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tRSTH, reg_data)) != 0)
1769 int OneWire_Set_tRSTH_Standard_Custom(
double trsth)
1772 uint8_t reg_data[2];
1776 return error = RB_INVALID_PARAMETER;
1780 trsth /= (double)62.5;
1781 trsth = ((int)trsth | 0x8000);
1782 reg_data[0] = (uint8_t)trsth;
1783 reg_data[1] = ((int)trsth >> 8);
1785 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tRSTH, reg_data)) != 0)
1792 int OneWire_Set_tRSTH_Overdrive_Custom(
double trsth)
1795 uint8_t reg_data[2];
1799 return error = RB_INVALID_PARAMETER;
1803 trsth /= (double)62.5;
1804 trsth = ((int)trsth | 0x8000);
1805 reg_data[0] = (uint8_t)trsth;
1806 reg_data[1] = ((int)trsth >> 8);
1808 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tRSTH, reg_data)) != 0)
1815 int OneWire_Get_tRSTH(
double *trsth, one_wire_speeds spd)
1818 uint8_t reg_data[2];
1819 unsigned short value;
1823 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tRSTH, reg_data)) != 0)
1828 if((reg_data[1] >> 7) != 0)
1831 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
1832 *trsth = (double)value;
1833 *trsth *= (double)62.5;
1841 *trsth = tRSTH_OVERDRIVE_PRESET_0;
1845 *trsth = tRSTH_OVERDRIVE_PRESET_1;
1849 *trsth = tRSTH_OVERDRIVE_PRESET_2;
1853 *trsth = tRSTH_OVERDRIVE_PRESET_3;
1857 *trsth = tRSTH_OVERDRIVE_PRESET_4;
1861 *trsth = tRSTH_OVERDRIVE_PRESET_5;
1865 *trsth = tRSTH_OVERDRIVE_PRESET_6;
1869 *trsth = tRSTH_OVERDRIVE_PRESET_7;
1873 *trsth = tRSTH_OVERDRIVE_PRESET_8;
1877 *trsth = tRSTH_OVERDRIVE_PRESET_9;
1881 *trsth = tRSTH_OVERDRIVE_PRESET_A;
1885 *trsth = tRSTH_OVERDRIVE_PRESET_B;
1889 *trsth = tRSTH_OVERDRIVE_PRESET_C;
1893 *trsth = tRSTH_OVERDRIVE_PRESET_D;
1897 *trsth = tRSTH_OVERDRIVE_PRESET_E;
1901 *trsth = tRSTH_OVERDRIVE_PRESET_F;
1905 *trsth = tRSTH_OVERDRIVE_PRESET_6;
1912 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tRSTH, reg_data)) != 0)
1917 if((reg_data[1] >> 7) != 0)
1919 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
1920 *trsth = (double)value;
1921 *trsth *= (double)62.5;
1929 *trsth = tRSTH_STANDARD_PRESET_0;
1933 *trsth = tRSTH_STANDARD_PRESET_1;
1937 *trsth = tRSTH_STANDARD_PRESET_2;
1941 *trsth = tRSTH_STANDARD_PRESET_3;
1945 *trsth = tRSTH_STANDARD_PRESET_4;
1949 *trsth = tRSTH_STANDARD_PRESET_5;
1953 *trsth = tRSTH_STANDARD_PRESET_6;
1957 *trsth = tRSTH_STANDARD_PRESET_7;
1961 *trsth = tRSTH_STANDARD_PRESET_8;
1965 *trsth = tRSTH_STANDARD_PRESET_9;
1969 *trsth = tRSTH_STANDARD_PRESET_A;
1973 *trsth = tRSTH_STANDARD_PRESET_B;
1977 *trsth = tRSTH_STANDARD_PRESET_C;
1981 *trsth = tRSTH_STANDARD_PRESET_D;
1985 *trsth = tRSTH_STANDARD_PRESET_E;
1989 *trsth = tRSTH_STANDARD_PRESET_F;
1993 *trsth = tRSTH_STANDARD_PRESET_6;
2001 int OneWire_Set_tW0L_Standard_Predefined(one_wire_timing_presets tw0l)
2004 uint8_t reg_data[2];
2009 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tW0L, reg_data)) != 0)
2016 int OneWire_Set_tW0L_Overdrive_Predefined(one_wire_timing_presets tw0l)
2019 uint8_t reg_data[2];
2024 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tW0L, reg_data)) != 0)
2031 int OneWire_Set_tW0L_Standard_Custom(
double tw0l)
2034 uint8_t reg_data[2];
2038 return error = RB_INVALID_PARAMETER;
2042 tw0l /= (double)62.5;
2043 tw0l = ((int)tw0l | 0x8000);
2044 reg_data[0] = (uint8_t)tw0l;
2045 reg_data[1] = ((int)tw0l >> 8);
2047 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tW0L, reg_data)) != 0)
2054 int OneWire_Set_tW0L_Overdrive_Custom(
double tw0l)
2057 uint8_t reg_data[2];
2059 if (tw0l > (
double)31.5)
2061 return error = RB_INVALID_PARAMETER;
2065 tw0l /= (double)62.5;
2066 tw0l = ((int)tw0l | 0x8000);
2067 reg_data[0] = (uint8_t)tw0l;
2068 reg_data[1] = ((int)tw0l >> 8);
2070 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tW0L, reg_data)) != 0)
2077 int OneWire_Get_tW0L(
double *tw0l, one_wire_speeds spd)
2080 uint8_t reg_data[2];
2081 unsigned short value;
2085 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tW0L, reg_data)) != 0)
2090 if((reg_data[1] >> 7) != 0)
2093 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2094 *tw0l = (double)value;
2095 *tw0l *= (double)62.5;
2103 *tw0l = tW0L_OVERDRIVE_PRESET_0;
2107 *tw0l = tW0L_OVERDRIVE_PRESET_1;
2111 *tw0l = tW0L_OVERDRIVE_PRESET_2;
2115 *tw0l = tW0L_OVERDRIVE_PRESET_3;
2119 *tw0l = tW0L_OVERDRIVE_PRESET_4;
2123 *tw0l = tW0L_OVERDRIVE_PRESET_5;
2127 *tw0l = tW0L_OVERDRIVE_PRESET_6;
2131 *tw0l = tW0L_OVERDRIVE_PRESET_7;
2135 *tw0l = tW0L_OVERDRIVE_PRESET_8;
2139 *tw0l = tW0L_OVERDRIVE_PRESET_9;
2143 *tw0l = tW0L_OVERDRIVE_PRESET_A;
2147 *tw0l = tW0L_OVERDRIVE_PRESET_B;
2151 *tw0l = tW0L_OVERDRIVE_PRESET_C;
2155 *tw0l = tW0L_OVERDRIVE_PRESET_D;
2159 *tw0l = tW0L_OVERDRIVE_PRESET_E;
2163 *tw0l = tW0L_OVERDRIVE_PRESET_F;
2167 *tw0l = tW0L_OVERDRIVE_PRESET_6;
2174 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tW0L, reg_data)) != 0)
2179 if((reg_data[1] >> 7) != 0)
2181 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2182 *tw0l = (double)value;
2183 *tw0l *= (double)62.5;
2191 *tw0l = tW0L_STANDARD_PRESET_0;
2195 *tw0l = tW0L_STANDARD_PRESET_1;
2199 *tw0l = tW0L_STANDARD_PRESET_2;
2203 *tw0l = tW0L_STANDARD_PRESET_3;
2207 *tw0l = tW0L_STANDARD_PRESET_4;
2211 *tw0l = tW0L_STANDARD_PRESET_5;
2215 *tw0l = tW0L_STANDARD_PRESET_6;
2219 *tw0l = tW0L_STANDARD_PRESET_7;
2223 *tw0l = tW0L_STANDARD_PRESET_8;
2227 *tw0l = tW0L_STANDARD_PRESET_9;
2231 *tw0l = tW0L_STANDARD_PRESET_A;
2235 *tw0l = tW0L_STANDARD_PRESET_B;
2239 *tw0l = tW0L_STANDARD_PRESET_C;
2243 *tw0l = tW0L_STANDARD_PRESET_D;
2247 *tw0l = tW0L_STANDARD_PRESET_E;
2251 *tw0l = tW0L_STANDARD_PRESET_F;
2255 *tw0l = tW0L_STANDARD_PRESET_6;
2263 int OneWire_Set_tREC_Standard_Predefined(one_wire_timing_presets trec)
2266 uint8_t reg_data[2];
2271 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tREC, reg_data)) != 0)
2278 int OneWire_Set_tREC_Overdrive_Predefined(one_wire_timing_presets trec)
2281 uint8_t reg_data[2];
2286 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tREC, reg_data)) != 0)
2293 int OneWire_Set_tREC_Standard_Custom(
double trec)
2296 uint8_t reg_data[2];
2298 if (trec > (
double)255.5)
2300 return error = RB_INVALID_PARAMETER;
2304 trec /= (double)62.5;
2305 trec = ((int)trec | 0x8000);
2306 reg_data[0] = (uint8_t)trec;
2307 reg_data[1] = ((int)trec >> 8);
2309 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tREC, reg_data)) != 0)
2316 int OneWire_Set_tREC_Overdrive_Custom(
double trec)
2319 uint8_t reg_data[2];
2321 if (trec > (
double)255.5)
2323 return error = RB_INVALID_PARAMETER;
2327 trec /= (double)62.5;
2328 trec = ((int)trec | 0x8000);
2329 reg_data[0] = (uint8_t)trec;
2330 reg_data[1] = ((int)trec >> 8);
2332 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tREC, reg_data)) != 0)
2339 int OneWire_Get_tREC(
double *trec, one_wire_speeds spd)
2342 uint8_t reg_data[2];
2343 unsigned short value;
2347 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tREC, reg_data)) != 0)
2352 if((reg_data[1] >> 7) != 0)
2355 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2356 *trec = (double)value;
2357 *trec *= (double)62.5;
2365 *trec = tREC_OVERDRIVE_PRESET_0;
2369 *trec = tREC_OVERDRIVE_PRESET_1;
2373 *trec = tREC_OVERDRIVE_PRESET_2;
2377 *trec = tREC_OVERDRIVE_PRESET_3;
2381 *trec = tREC_OVERDRIVE_PRESET_4;
2385 *trec = tREC_OVERDRIVE_PRESET_5;
2389 *trec = tREC_OVERDRIVE_PRESET_6;
2393 *trec = tREC_OVERDRIVE_PRESET_7;
2397 *trec = tREC_OVERDRIVE_PRESET_8;
2401 *trec = tREC_OVERDRIVE_PRESET_9;
2405 *trec = tREC_OVERDRIVE_PRESET_A;
2409 *trec = tREC_OVERDRIVE_PRESET_B;
2413 *trec = tREC_OVERDRIVE_PRESET_C;
2417 *trec = tREC_OVERDRIVE_PRESET_D;
2421 *trec = tREC_OVERDRIVE_PRESET_E;
2425 *trec = tREC_OVERDRIVE_PRESET_F;
2429 *trec = tREC_OVERDRIVE_PRESET_6;
2436 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tREC, reg_data)) != 0)
2441 if((reg_data[1] >> 7) != 0)
2443 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2444 *trec = (double)value;
2445 *trec *= (double)62.5;
2453 *trec = tREC_STANDARD_PRESET_0;
2457 *trec = tREC_STANDARD_PRESET_1;
2461 *trec = tREC_STANDARD_PRESET_2;
2465 *trec = tREC_STANDARD_PRESET_3;
2469 *trec = tREC_STANDARD_PRESET_4;
2473 *trec = tREC_STANDARD_PRESET_5;
2477 *trec = tREC_STANDARD_PRESET_6;
2481 *trec = tREC_STANDARD_PRESET_7;
2485 *trec = tREC_STANDARD_PRESET_8;
2489 *trec = tREC_STANDARD_PRESET_9;
2493 *trec = tREC_STANDARD_PRESET_A;
2497 *trec = tREC_STANDARD_PRESET_B;
2501 *trec = tREC_STANDARD_PRESET_C;
2505 *trec = tREC_STANDARD_PRESET_D;
2509 *trec = tREC_STANDARD_PRESET_E;
2513 *trec = tREC_STANDARD_PRESET_F;
2517 *trec = tREC_STANDARD_PRESET_6;
2526 int OneWire_Set_tMSI_Standard_Predefined(one_wire_timing_presets tmsi)
2529 uint8_t reg_data[2];
2534 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSI, reg_data)) != 0)
2541 int OneWire_Set_tMSI_Overdrive_Predefined(one_wire_timing_presets tmsi)
2544 uint8_t reg_data[2];
2549 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSI, reg_data)) != 0)
2556 int OneWire_Set_tMSI_Standard_Custom(
double tmsi)
2559 uint8_t reg_data[2];
2561 if (tmsi > (
double)255.5)
2563 return error = RB_INVALID_PARAMETER;
2567 tmsi /= (double)62.5;
2568 tmsi = ((int)tmsi | 0x8000);
2569 reg_data[0] = (uint8_t)tmsi;
2570 reg_data[1] = ((int)tmsi >> 8);
2572 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSI, reg_data)) != 0)
2579 int OneWire_Set_tMSI_Overdrive_Custom(
double tmsi)
2582 uint8_t reg_data[2];
2584 if (tmsi > (
double)255.5)
2586 return error = RB_INVALID_PARAMETER;
2590 tmsi /= (double)62.5;
2591 tmsi = ((int)tmsi | 0x8000);
2592 reg_data[0] = (uint8_t)tmsi;
2593 reg_data[1] = ((int)tmsi >> 8);
2595 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSI, reg_data)) != 0)
2602 int OneWire_Get_tMSI(
double *tmsi, one_wire_speeds spd)
2605 uint8_t reg_data[2];
2606 unsigned short value;
2610 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tMSI, reg_data)) != 0)
2615 if((reg_data[1] >> 7) != 0)
2618 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2619 *tmsi = (double)value;
2620 *tmsi *= (double)62.5;
2628 *tmsi = tMSI_OVERDRIVE_PRESET_0;
2632 *tmsi = tMSI_OVERDRIVE_PRESET_1;
2636 *tmsi = tMSI_OVERDRIVE_PRESET_2;
2640 *tmsi = tMSI_OVERDRIVE_PRESET_3;
2644 *tmsi = tMSI_OVERDRIVE_PRESET_4;
2648 *tmsi = tMSI_OVERDRIVE_PRESET_5;
2652 *tmsi = tMSI_OVERDRIVE_PRESET_6;
2656 *tmsi = tMSI_OVERDRIVE_PRESET_7;
2660 *tmsi = tMSI_OVERDRIVE_PRESET_8;
2664 *tmsi = tMSI_OVERDRIVE_PRESET_9;
2668 *tmsi = tMSI_OVERDRIVE_PRESET_A;
2672 *tmsi = tMSI_OVERDRIVE_PRESET_B;
2676 *tmsi = tMSI_OVERDRIVE_PRESET_C;
2680 *tmsi = tMSI_OVERDRIVE_PRESET_D;
2684 *tmsi = tMSI_OVERDRIVE_PRESET_E;
2688 *tmsi = tMSI_OVERDRIVE_PRESET_F;
2692 *tmsi = tMSI_OVERDRIVE_PRESET_6;
2699 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tMSI, reg_data)) != 0)
2704 if((reg_data[1] >> 7) != 0)
2706 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2707 *tmsi = (double)value;
2708 *tmsi *= (double)62.5;
2716 *tmsi = tMSI_STANDARD_PRESET_0;
2720 *tmsi = tMSI_STANDARD_PRESET_1;
2724 *tmsi = tMSI_STANDARD_PRESET_2;
2728 *tmsi = tMSI_STANDARD_PRESET_3;
2732 *tmsi = tMSI_STANDARD_PRESET_4;
2736 *tmsi = tMSI_STANDARD_PRESET_5;
2740 *tmsi = tMSI_STANDARD_PRESET_6;
2744 *tmsi = tMSI_STANDARD_PRESET_7;
2748 *tmsi = tMSI_STANDARD_PRESET_8;
2752 *tmsi = tMSI_STANDARD_PRESET_9;
2756 *tmsi = tMSI_STANDARD_PRESET_A;
2760 *tmsi = tMSI_STANDARD_PRESET_B;
2764 *tmsi = tMSI_STANDARD_PRESET_C;
2768 *tmsi = tMSI_STANDARD_PRESET_D;
2772 *tmsi = tMSI_STANDARD_PRESET_E;
2776 *tmsi = tMSI_STANDARD_PRESET_F;
2780 *tmsi = tMSI_STANDARD_PRESET_6;
2789 int OneWire_Set_tMSP_Standard_Predefined(one_wire_timing_presets tmsp)
2792 uint8_t reg_data[2];
2797 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSP, reg_data)) != 0)
2804 int OneWire_Set_tMSP_Overdrive_Predefined(one_wire_timing_presets tmsp)
2807 uint8_t reg_data[2];
2812 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSP, reg_data)) != 0)
2819 int OneWire_Set_tMSP_Standard_Custom(
double tmsp)
2822 uint8_t reg_data[2];
2824 if (tmsp > (
double)255.5)
2826 return error = RB_INVALID_PARAMETER;
2830 tmsp /= (double)62.5;
2831 tmsp = ((int)tmsp | 0x8000);
2832 reg_data[0] = (uint8_t)tmsp;
2833 reg_data[1] = ((int)tmsp >> 8);
2835 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSP, reg_data)) != 0)
2842 int OneWire_Set_tMSP_Overdrive_Custom(
double tmsp)
2845 uint8_t reg_data[2];
2847 if (tmsp > (
double)255.5)
2849 return error = RB_INVALID_PARAMETER;
2853 tmsp /= (double)62.5;
2854 tmsp = ((int)tmsp | 0x8000);
2855 reg_data[0] = (uint8_t)tmsp;
2856 reg_data[1] = ((int)tmsp >> 8);
2858 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSP, reg_data)) != 0)
2865 int OneWire_Get_tMSP(
double *tmsp, one_wire_speeds spd)
2868 uint8_t reg_data[2];
2869 unsigned short value;
2873 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tMSP, reg_data)) != 0)
2878 if((reg_data[1] >> 7) != 0)
2881 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2882 *tmsp = (double)value;
2883 *tmsp *= (double)62.5;
2891 *tmsp = tMSP_OVERDRIVE_PRESET_0;
2895 *tmsp = tMSP_OVERDRIVE_PRESET_1;
2899 *tmsp = tMSP_OVERDRIVE_PRESET_2;
2903 *tmsp = tMSP_OVERDRIVE_PRESET_3;
2907 *tmsp = tMSP_OVERDRIVE_PRESET_4;
2911 *tmsp = tMSP_OVERDRIVE_PRESET_5;
2915 *tmsp = tMSP_OVERDRIVE_PRESET_6;
2919 *tmsp = tMSP_OVERDRIVE_PRESET_7;
2923 *tmsp = tMSP_OVERDRIVE_PRESET_8;
2927 *tmsp = tMSP_OVERDRIVE_PRESET_9;
2931 *tmsp = tMSP_OVERDRIVE_PRESET_A;
2935 *tmsp = tMSP_OVERDRIVE_PRESET_B;
2939 *tmsp = tMSP_OVERDRIVE_PRESET_C;
2943 *tmsp = tMSP_OVERDRIVE_PRESET_D;
2947 *tmsp = tMSP_OVERDRIVE_PRESET_E;
2951 *tmsp = tMSP_OVERDRIVE_PRESET_F;
2955 *tmsp = tMSP_OVERDRIVE_PRESET_6;
2962 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tMSP, reg_data)) != 0)
2967 if((reg_data[1] >> 7) != 0)
2969 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
2970 *tmsp = (double)value;
2971 *tmsp *= (double)62.5;
2979 *tmsp = tMSP_STANDARD_PRESET_0;
2983 *tmsp = tMSP_STANDARD_PRESET_1;
2987 *tmsp = tMSP_STANDARD_PRESET_2;
2991 *tmsp = tMSP_STANDARD_PRESET_3;
2995 *tmsp = tMSP_STANDARD_PRESET_4;
2999 *tmsp = tMSP_STANDARD_PRESET_5;
3003 *tmsp = tMSP_STANDARD_PRESET_6;
3007 *tmsp = tMSP_STANDARD_PRESET_7;
3011 *tmsp = tMSP_STANDARD_PRESET_8;
3015 *tmsp = tMSP_STANDARD_PRESET_9;
3019 *tmsp = tMSP_STANDARD_PRESET_A;
3023 *tmsp = tMSP_STANDARD_PRESET_B;
3027 *tmsp = tMSP_STANDARD_PRESET_C;
3031 *tmsp = tMSP_STANDARD_PRESET_D;
3035 *tmsp = tMSP_STANDARD_PRESET_E;
3039 *tmsp = tMSP_STANDARD_PRESET_F;
3043 *tmsp = tMSP_STANDARD_PRESET_6;
3052 int OneWire_Set_tW1L_Standard_Predefined(one_wire_timing_presets tw1l)
3055 uint8_t reg_data[2];
3060 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tW1L, reg_data)) != 0)
3067 int OneWire_Set_tW1L_Overdrive_Predefined(one_wire_timing_presets tw1l)
3070 uint8_t reg_data[2];
3075 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tW1L, reg_data)) != 0)
3082 int OneWire_Set_tW1L_Standard_Custom(
double tw1l)
3085 uint8_t reg_data[2];
3087 if (tw1l > (
double)255.5)
3089 return error = RB_INVALID_PARAMETER;
3093 tw1l /= (double)62.5;
3094 tw1l = ((int)tw1l | 0x8000);
3095 reg_data[0] = (uint8_t)tw1l;
3096 reg_data[1] = ((int)tw1l >> 8);
3098 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tW1L, reg_data)) != 0)
3105 int OneWire_Set_tW1L_Overdrive_Custom(
double tw1l)
3108 uint8_t reg_data[2];
3110 if (tw1l > (
double)255.5)
3112 return error = RB_INVALID_PARAMETER;
3116 tw1l /= (double)62.5;
3117 tw1l = ((int)tw1l | 0x8000);
3118 reg_data[0] = (uint8_t)tw1l;
3119 reg_data[1] = ((int)tw1l >> 8);
3121 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tW1L, reg_data)) != 0)
3128 int OneWire_Get_tW1L(
double *tw1l, one_wire_speeds spd)
3131 uint8_t reg_data[2];
3132 unsigned short value;
3136 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tW1L, reg_data)) != 0)
3141 if((reg_data[1] >> 7) != 0)
3144 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
3145 *tw1l = (double)value;
3146 *tw1l *= (double)62.5;
3154 *tw1l = tW1L_OVERDRIVE_PRESET_0;
3158 *tw1l = tW1L_OVERDRIVE_PRESET_1;
3162 *tw1l = tW1L_OVERDRIVE_PRESET_2;
3166 *tw1l = tW1L_OVERDRIVE_PRESET_3;
3170 *tw1l = tW1L_OVERDRIVE_PRESET_4;
3174 *tw1l = tW1L_OVERDRIVE_PRESET_5;
3178 *tw1l = tW1L_OVERDRIVE_PRESET_6;
3182 *tw1l = tW1L_OVERDRIVE_PRESET_7;
3186 *tw1l = tW1L_OVERDRIVE_PRESET_8;
3190 *tw1l = tW1L_OVERDRIVE_PRESET_9;
3194 *tw1l = tW1L_OVERDRIVE_PRESET_A;
3198 *tw1l = tW1L_OVERDRIVE_PRESET_B;
3202 *tw1l = tW1L_OVERDRIVE_PRESET_C;
3206 *tw1l = tW1L_OVERDRIVE_PRESET_D;
3210 *tw1l = tW1L_OVERDRIVE_PRESET_E;
3214 *tw1l = tW1L_OVERDRIVE_PRESET_F;
3218 *tw1l = tW1L_OVERDRIVE_PRESET_6;
3225 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tW1L, reg_data)) != 0)
3230 if((reg_data[1] >> 7) != 0)
3232 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
3233 *tw1l = (double)value;
3234 *tw1l *= (double)62.5;
3242 *tw1l = tW1L_STANDARD_PRESET_0;
3246 *tw1l = tW1L_STANDARD_PRESET_1;
3250 *tw1l = tW1L_STANDARD_PRESET_2;
3254 *tw1l = tW1L_STANDARD_PRESET_3;
3258 *tw1l = tW1L_STANDARD_PRESET_4;
3262 *tw1l = tW1L_STANDARD_PRESET_5;
3266 *tw1l = tW1L_STANDARD_PRESET_6;
3270 *tw1l = tW1L_STANDARD_PRESET_7;
3274 *tw1l = tW1L_STANDARD_PRESET_8;
3278 *tw1l = tW1L_STANDARD_PRESET_9;
3282 *tw1l = tW1L_STANDARD_PRESET_A;
3286 *tw1l = tW1L_STANDARD_PRESET_B;
3290 *tw1l = tW1L_STANDARD_PRESET_C;
3294 *tw1l = tW1L_STANDARD_PRESET_D;
3298 *tw1l = tW1L_STANDARD_PRESET_E;
3302 *tw1l = tW1L_STANDARD_PRESET_F;
3306 *tw1l = tW1L_STANDARD_PRESET_6;
3315 int OneWire_Set_tMSR_Standard_Predefined(one_wire_timing_presets tmsr)
3318 uint8_t reg_data[2];
3323 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSR, reg_data)) != 0)
3330 int OneWire_Set_tMSR_Overdrive_Predefined(one_wire_timing_presets tmsr)
3333 uint8_t reg_data[2];
3338 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSR, reg_data)) != 0)
3345 int OneWire_Set_tMSR_Standard_Custom(
double tmsr)
3348 uint8_t reg_data[2];
3350 if (tmsr > (
double)255.5)
3352 return error = RB_INVALID_PARAMETER;
3356 tmsr /= (double)62.5;
3357 tmsr = ((int)tmsr | 0x8000);
3358 reg_data[0] = (uint8_t)tmsr;
3359 reg_data[1] = ((int)tmsr >> 8);
3361 if((error = DS2485_WriteOneWirePortConfig(STANDARD_SPEED_tMSR, reg_data)) != 0)
3368 int OneWire_Set_tMSR_Overdrive_Custom(
double tmsr)
3371 uint8_t reg_data[2];
3373 if (tmsr > (
double)255.5)
3375 return error = RB_INVALID_PARAMETER;
3379 tmsr /= (double)62.5;
3380 tmsr = ((int)tmsr | 0x8000);
3381 reg_data[0] = (uint8_t)tmsr;
3382 reg_data[1] = ((int)tmsr >> 8);
3384 if((error = DS2485_WriteOneWirePortConfig(OVERDRIVE_SPEED_tMSR, reg_data)) != 0)
3391 int OneWire_Get_tMSR(
double *tmsr, one_wire_speeds spd)
3394 uint8_t reg_data[2];
3395 unsigned short value;
3399 if((error = DS2485_ReadOneWirePortConfig(OVERDRIVE_SPEED_tMSR, reg_data)) != 0)
3404 if((reg_data[1] >> 7) != 0)
3407 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
3408 *tmsr = (double)value;
3409 *tmsr *= (double)62.5;
3417 *tmsr = tMSR_OVERDRIVE_PRESET_0;
3421 *tmsr = tMSR_OVERDRIVE_PRESET_1;
3425 *tmsr = tMSR_OVERDRIVE_PRESET_2;
3429 *tmsr = tMSR_OVERDRIVE_PRESET_3;
3433 *tmsr = tMSR_OVERDRIVE_PRESET_4;
3437 *tmsr = tMSR_OVERDRIVE_PRESET_5;
3441 *tmsr = tMSR_OVERDRIVE_PRESET_6;
3445 *tmsr = tMSR_OVERDRIVE_PRESET_7;
3449 *tmsr = tMSR_OVERDRIVE_PRESET_8;
3453 *tmsr = tMSR_OVERDRIVE_PRESET_9;
3457 *tmsr = tMSR_OVERDRIVE_PRESET_A;
3461 *tmsr = tMSR_OVERDRIVE_PRESET_B;
3465 *tmsr = tMSR_OVERDRIVE_PRESET_C;
3469 *tmsr = tMSR_OVERDRIVE_PRESET_D;
3473 *tmsr = tMSR_OVERDRIVE_PRESET_E;
3477 *tmsr = tMSR_OVERDRIVE_PRESET_F;
3481 *tmsr = tMSR_OVERDRIVE_PRESET_6;
3488 if((error = DS2485_ReadOneWirePortConfig(STANDARD_SPEED_tMSR, reg_data)) != 0)
3493 if((reg_data[1] >> 7) != 0)
3495 value = ((reg_data[1] & ~(0x80)) << 8) | reg_data[0];
3496 *tmsr = (double)value;
3497 *tmsr *= (double)62.5;
3505 *tmsr = tMSR_STANDARD_PRESET_0;
3509 *tmsr = tMSR_STANDARD_PRESET_1;
3513 *tmsr = tMSR_STANDARD_PRESET_2;
3517 *tmsr = tMSR_STANDARD_PRESET_3;
3521 *tmsr = tMSR_STANDARD_PRESET_4;
3525 *tmsr = tMSR_STANDARD_PRESET_5;
3529 *tmsr = tMSR_STANDARD_PRESET_6;
3533 *tmsr = tMSR_STANDARD_PRESET_7;
3537 *tmsr = tMSR_STANDARD_PRESET_8;
3541 *tmsr = tMSR_STANDARD_PRESET_9;
3545 *tmsr = tMSR_STANDARD_PRESET_A;
3549 *tmsr = tMSR_STANDARD_PRESET_B;
3553 *tmsr = tMSR_STANDARD_PRESET_C;
3557 *tmsr = tMSR_STANDARD_PRESET_D;
3561 *tmsr = tMSR_STANDARD_PRESET_E;
3565 *tmsr = tMSR_STANDARD_PRESET_F;
3569 *tmsr = tMSR_STANDARD_PRESET_6;
3578 int OneWire_Init(
void)
3583 if ((error = OneWire_Set_tRSTL_Standard_Predefined(PRESET_6)) != 0)
3587 if ((error = OneWire_Set_tMSI_Standard_Predefined(PRESET_6)) != 0)
3591 if ((error = OneWire_Set_tMSP_Standard_Predefined(PRESET_6)) != 0)
3595 if ((error = OneWire_Set_tRSTH_Standard_Predefined(PRESET_6)) != 0)
3599 if ((error = OneWire_Set_tW0L_Standard_Predefined(PRESET_6)) != 0)
3603 if ((error = OneWire_Set_tW1L_Standard_Predefined(PRESET_6)) != 0)
3607 if ((error = OneWire_Set_tMSR_Standard_Predefined(PRESET_6)) != 0)
3611 if ((error = OneWire_Set_tREC_Standard_Predefined(PRESET_6)) != 0)
3616 if ((error = OneWire_Set_tRSTL_Overdrive_Predefined(PRESET_6)) != 0)
3620 if ((error = OneWire_Set_tMSI_Overdrive_Predefined(PRESET_6)) != 0)
3624 if ((error = OneWire_Set_tMSP_Overdrive_Predefined(PRESET_6)) != 0)
3628 if ((error = OneWire_Set_tRSTH_Overdrive_Predefined(PRESET_6)) != 0)
3632 if ((error = OneWire_Set_tW0L_Overdrive_Predefined(PRESET_6)) != 0)
3636 if ((error = OneWire_Set_tW1L_Overdrive_Predefined(PRESET_6)) != 0)
3640 if ((error = OneWire_Set_tMSR_Overdrive_Predefined(PRESET_6)) != 0)
3644 if ((error = OneWire_Set_tREC_Overdrive_Predefined(PRESET_6)) != 0)
3650 error = OneWire_Set_OneWireMasterSpeed(STANDARD);
3651 if(error)
return error;
3654 error = OneWire_Set_Custom_RPUP_BUF(VTH_MEDIUM, VIAPO_LOW, RWPU_1000);
3655 if(error)
return error;
3665 error = OneWire_ResetPulse();
3666 if(error)
return error;
General library for the DS2485, supporting the higher-level one_wire.c/.h API.
OneWire_ROM_ID_T type stores a 1-Wire address.
int OneWire_Search(OneWire_ROM_ID_T *romid, bool search_reset, bool *last_device_found)
General 1-Wire API using the DS2485 1-Wire master.