Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * DEKLARACE GLOBAL PROMENNYCH
- */
- uint64_t ROM_NO = 0;
- /*
- * FUNKCE
- */
- void first (void)
- {
- uint8_t id_bit_number = 0;
- uint8_t id_bit = 0;
- uint8_t cmp_id_bit = 0;
- uint8_t LastDiscrepancy = 0;
- uint8_t LastDeviceFlag = 0;
- uint8_t last_zero = 0;
- uint8_t search_direction;
- if(therm_reset())
- {
- id_bit_number = 1;
- LastDiscrepancy = 0;
- last_zero = 0;
- therm_write_byte(THERM_CMD_SEARCHROM);
- for(uint8_t i=0; i<64; i++ )
- {
- id_bit = therm_read_bit();
- if(therm_read_bit())
- {
- if(id_bit) return; // Error no device on bus
- else search_direction = 0; // 01
- }
- else
- {
- if(id_bit)search_direction = 1; // 10
- else // Discrepancy
- {
- if(id_bit_number > LastDiscrepancy) {last_zero = id_bit_number; search_direction = 0;}
- else if (id_bit_number == LastDiscrepancy) search_direction = 1;
- else search_direction = ROM_NO & ((uint64_t)1 << id_bit_number);
- }
- }//konec if(therm_read_bit())
- if(search_direction) ROM_NO |= ((uint64_t)1 << i);
- else ROM_NO &= ~((uint64_t)1 << i);
- therm_write_bit(search_direction);
- id_bit_number++;
- }//konec foru
- LastDiscrepancy = last_zero;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement