"ГЛЮКИ" МИКРОКОНТРОЛЛЕРОВ PIC

Здесь представлена попытка собрать "глюки" (баги) и другие неизвестности, встречающиеся при работе с микроконтроллерами PIC. Часть подборки переведена с сайта Microchip, остальные - обнаружены ценой сломанной головы. Если в Вашей практике встречалось нечто подобное, напишите мне, пожалуйста, и я с благодарностью  вставлю Ваше описание. Пусть остальные тоже узнают о некоторых загадках.
 
ТИП REV СКОЛЬКО
12C50X A пока не обнаружены
12С67X А 2
12C67X A0 1
16C64 B 2
16C710, 16C711 A 1
16С73В - 1
16С74, эмулятор - 1
16F84 A 3
17С44 JW (отлад) 1
17C756 A 4
ПРИМЕЧАНИЕ: Номер партии (mask revision number) можно узнать по маркировке корпуса как предпоследний символ во второй строке обозначения.
 

ОБЩИЕ ЗАМЕЧАНИЯ

Важное замечание для тех, кто работает с отладочными кристаллами. Если в таком кристалле (с окошком, маркировка JW) установить бит защиты CP, то он станет одноразовым (OTP). Это означает, что Вы больше не сможете его стереть ультрафиолетом и перепрограммировать. 

Выяснилось, что микроконтроллеры очень боятся наводок, чувствовать которые они начинают при подключении измерительной техники или длинных проводов. Приведу несколько замечаний людей, встретившихся с подобной проблемой:

Девайс на пике F84 был собран на монтажке, и к общему проводу был подсоединен корпус осциллографа С1-65.(длина 1.5 м). Так ПИК ловил статику этим проводом...(самопроизвольно сбрасывался). Особо не любил, когда пластиковую коробочку с деталями двигаешь по полированному столу. Заземление ни к чему не приводило. Все прекращалось только после отсоединения общего провода от осциллографа.
Wisix
 
У меня было абсолютно то же, о чем пишет Wisix. Я думаю, что все же дело не в PICе, а в фокусах осциллографа (утечка фазы на корпус и т.п. дребедень). Дело в том, что при разработке разных типов девайсов этот эффект наблюдался мной один раз примерно из двадцати.
Николай.
 
ПИК передавал через уд608 по RS-232 в ПК. Так вот когда кабель не был воткнут в ПК, т.е. -12в (питание) на ОУ не подавалось, то ПИК сбрасывался от малейшей статики. Пластиковый футляр с фломастерами по столу передвигаешь (расстояние до контроллера 20 см) - происходит сброс. Блокировочные емкости и т.п. - все присутствовало. 
Олег П.

Хочется напомнить, что в мануалах на ПИКИ советуют все незадействованные ножки портов подключать на Vdd (шину питания) через резисторы или напрямую на массу  во избежание переключений от наводок. Например, не выполнение этих требований, может привести к значительному увеличению тока потребления микросхемой за счет случайных переключений входных каскадов портов. Можно поступить иначе: оставить эти выводы свободными, но запрограммировать их как выходы и установить в любое состояние. Правда замечу, что не все порты бывают двунаправленные, бывают только как вход. 
Так же лучше поступать и с теми ножками портов, которые используются как входы в схемах. Там, где возможно, желательно подключать конденсатор небольшой емкости между портом и массой.

 


12С67Х (REV A)
12C67X (REV A0) только пункт 1.

  1. Power on Reset. Чтобы микроконтроллер надежно возвращался в Power-up режим, Power-up Timer (PWRT) должен быть разрешен (enabled)

  2. A/D. Если биты PCFG2:PCFG0 в регистре ADCON1 установлены как 111 (все цифровые входы), то  VREF = Vss.   Выполнение аналогового чтения даст ошибочные результаты.  

Вернуться

16C64 (REV B)

  1. Модуль SSP. Когда используете SPI в мастер режиме с частотой OSC/64, он может не правильно функционировать .

  2. Модуль SSP. Когда используете I2C в мастер режиме, изменение двух бит TRISC <4:3> не будет влиять на SCL и SDA. Причем в slave режиме все работает правильно.                             

Вернуться

16C710, 16C711 (REV A)

  1. MCLR, Внешний сброс (MCLR) во время нормальной работы может вызвать переключение бита T0 в регистре STATUS при напряжении питания больше 6 В и внешней температуре от -30 до - 40 град.

Вернуться

16C73B

При частоте кварцевого резонатора 20 МГц врет 0 канал АЦП. Тоесть, при Vref = Vdd = Vin значение ADRES = 207 вместо 255. От этого значения вниз все линейно до нуля. Немножко помогает введение задержки порядка 20 мксек между инициализацией ADCON0 и установкой ADGO. Кристалл 16C73B в корпусе SSOP. Аналогичного явления ни на кристалле 16C73A/JW, ни на эмуляторе не наблюдается. Снижение тактовой частоты до 4 МГц явление устраняет полностью. Другой возможный вариант решения проблемы - после установки бита ADON задержка порядка 20 мкс перед установкой бита ADGO. 

Вернуться

16С74 Эмулятор.

  1. Баг в эмуляторном чипе для PIC16C74. При работе с параллельным портом
    PSP эмулятор теряет примерно 10% прерываний PSP. Если PIC16C74 используется как слэйв и сидит на шине какого-то главного микроконтроллера то отлаживать обмен придется вручную, без
    эмулятора.
    (Алексей Кузнецов)

Вернуться

16F84 (REV A)

  1. Регистр STATUS. Операция Power-down (бит PD в регистре STATUS) может не выполняться правильно при температурах ниже - 20 град.

  2. Модуль EEPROM. Изменение регистра EECON1 сразу после операции чтения может привести к изменению содержимого EEDATA.

  3. Модуль Timer0. Регистр TMR0 может увеличиться на 1 при переключении предделителя от WDT к Timer0. Если TMR0 = 0xFF, то при переключении TMR0 может переполниться и установится флаг T0IF.

Вернуться

17C44/JW

Во время передачи информации по последовательному порту USART была предпринята попытка считать данные из таблицы (использовалась команда TBLRD). При обращении к таблице работа последовательного порта нарушилась. После считывания байта из таблицы USART продолжал нормальную работу.

Вернуться

17C756 (REV A)

  1. Модуль MSSP. В режиме I2C SSPBUF может принимать или все "0" или все "1" независимо от того, что присутствовало на SDA.
    Как обойти: для правильной работы оба бита SMP и CKP должны бить в одном состоянии (или "0" или "1").

  2. Регистр TCON3. Неопределенный бит 7 регистра TCON3 может читаться как "0" и как "1".
    Как обойти: если не возможно просто игнорировать это значение, то можно скопировать регистр TCON3 во временный регистр и произвести логическое "И" этого регистра и 0x7F (7FH).

  3. Модуль A/D. Самый младший разряд аналого-цифрового преобразования может быть потерян, когда устройство работает при температуре >25 град. и  Vref+ > AVdd - 0,3В.

  4. Модуль A/D. Значение 511 может не присутствовать диапазоне. 10-ти битное цифровое преобразование дает 1024 значения (от 0 до 1023). 10-ти битное значение верно для диапазонов от 0 до 510 и от 512 до 1023. Значение 511 - середина всего диапазона

Вернуться

Hosted by uCoz