Nikon27

impulseofReset

May 13th, 2019
288
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uint8_t ds_reset_pulse(uint16_t PinMask)
  2. {
  3. uint16_t result;
  4.  
  5. if((PORT->IDR & PinMask)==0) return 2; //проверить линию на отсутствие замыкания
  6. PORT->ODR &= ~PinMask; //потянуть шину к земле
  7. TIMER->CNT=0;
  8. while(TIMER->CNT<480){}; //ждать 480 микросекунд
  9. PORT->ODR |= PinMask; //отпустить шину
  10. while(TIMER->CNT<550){}; //ждать 70 микросекунд
  11. result = PORT->IDR & PinMask; //прочитать шину
  12. while(TIMER->CNT<960){}; //дождаться окончания инициализации
  13. if(result) return 1; //датчик не обнаружен
  14. return 0; //датчик обнаружен
  15. }
RAW Paste Data