def detectPic(self): ''' Выполняет определение типа МК. На МК в момент определения должен выполняться код bootloader'а @param self Ссылка на экземпляр класса @raise PicNotDetected В случае, если не удалось определить модель МК по значению, полученному от загрузчика ''' logger.info("Detecting PIC...") # Отправляем запрос прошивке TinyBootloader self.serial.write(chr(0xC1)) # Ответ должен содержать 2 байта ret = self.serial.read(2) # Длина ответа отличается? if len(ret) != 2: raise PicNotDetected("Incorrect PIC reply length") # Ответ не соответствует ожидаемому? if ret[1] != "K": raise PicNotDetected("Wrong PIC reply") # Определяем тип МК self._type, self._max_flash, self._family = pic_type(ord(ret[0])) # Удалось определить? if self._type: logger.info("Detected PIC type {0} ({2} family), max flash address is {1}".format( self._type, self._max_flash, self._family)) if self._family != "16F8XX": logger.error("Unsupported PIC family {}".format(self._family)) PicNotDetected("Unsupported PIC family") else: raise PicNotDetected("Unknown PIC type")
def detectPic(self): ''' Выполняет определение типа МК. На МК в момент определения должен выполняться код bootloader'а @param self Ссылка на экземпляр класса @raise PicNotDetected В случае, если не удалось определить модель МК по значению, полученному от загрузчика ''' logger.info("Detecting PIC...") # Отправляем запрос прошивке TinyBootloader self.serial.write(chr(0xC1)) # Ответ должен содержать 2 байта ret = self.serial.read(2) # Длина ответа отличается? if len(ret) != 2: raise PicNotDetected("Incorrect PIC reply length") # Ответ не соответствует ожидаемому? if ret[1] != "K": raise PicNotDetected("Wrong PIC reply") # Определяем тип МК self._type, self._max_flash, self._family = pic_type(ord(ret[0])) # Удалось определить? if self._type: logger.info( "Detected PIC type {0} ({2} family), max flash address is {1}". format(self._type, self._max_flash, self._family)) if self._family != "16F8XX": logger.error("Unsupported PIC family {}".format(self._family)) PicNotDetected("Unsupported PIC family") else: raise PicNotDetected("Unknown PIC type")
def check_pic(PORT, BAUD, RESET_RTS): type = None max_flash = None family = None bsize = None ser = serial.Serial(PORT, BAUD, timeout=0.1) if RESET_RTS: ser.setRTS(1) time.sleep(.1) ser.setRTS(0) time.sleep(.1) #Ask PIC IDE ser.write(b'\xC1') #wait for PIC answer ret = ser.read(2) ret = ret.decode() #close serial port ser.close() #In case there was no answer from pic if len(ret) != 2: message = 'Not found, \n ERROR!' return type, max_flash, family, message, bsize #In case of pic not recognized if ret[1] != "K": message = "\n Error, PIC not recognized (protocol error)\n" return type, max_flash, family, message, bsize pt = ord(ret[0]) type, max_flash, family, bsize = pic_type(pt) message = '\n Found:' + type return type, max_flash, family, message, bsize
def check_pic(PORT,BAUD,RESET_RTS): type=None max_flash=None family=None ser = serial.Serial(PORT,BAUD,timeout=0.1) if RESET_RTS: ser.setRTS(1) time.sleep(.1) ser.setRTS(0) time.sleep(.1) #Ask PIC IDE ser.write(chr(0xC1)) #wait for PIC answer ret=ser.read(2) #close serial port ser.close() #In case there was no answer from pic if len(ret)!=2: message='Not found, \n ERROR!' return type,max_flash,family,message #In case of pic not recognized if ret[1]!= "K": message="\n Error, PIC not recognized (protocol error)\n" return type,max_flash,family,message pt=ord(ret[0]) type, max_flash, family=pic_type(pt) message = '\n Found:'+ type return type,max_flash,family,message