Example #1
0
    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")
Example #2
0
    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")
Example #3
0
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
Example #4
0
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