|
неадекватная работа PIC16F886.... |
|
|
|
Dec 15 2013, 14:36
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Столкнулся с загадочным поведением PIC16F886 - устройство переделывалось с заменой камня в SOIC на SSOP, и как-то уж очень долго стартовало. Грешил на обвязку часового кварца, но картина оказалась еще более загадочной. Итак, простейший код: CODE __CONFIG _CONFIG1, _INTOSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
org 0
banksel 0 clrf INTCON
banksel TRISB bcf TRISB,7
banksel 0 clrf PORTB
goto $
На прототипе, где стоял камень в SOIC, работает как и должно (а чего бы и не работать ?) - сразу бит порта в 0 (у него там была внешняя притяжка). На новом устройстве, где в SSOP - молчит секунд десять (на всякий случай - на сбросе уже давно гарантированно "1"), потом переходит в "0", затем несколько коротких импульсов в "1", и лишь затем встает в цикл. Ладно, вдруг (чем черт не шутит) - перепаиваю камень. Ура - работает. Но радость была недолгой, пока плата была еще горячей после перепайки, работало, остыла до комнатной температуры - картина стала прежней, десять секунд до старта, и загадочные "иголки". Я в полном недоумении... Да, советы "смени флюс" - не принимаются.
|
|
|
|
|
Dec 16 2013, 10:15
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081

|
Цитата(rx3apf @ Dec 16 2013, 11:01)  В CODEBOXе. В кодебоксе я вижу только слова конфигурации настраиваются. А я говорю про SFR. Не поленитесь их принудительно настроить, а не оставлять "по дефолту".
|
|
|
|
|
Dec 16 2013, 11:30
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Помнится, у PIC-ов с буквой A на конце и без буквы была разная начинка, ревизия, компараторов добавили или нечто подобное. Еще технологические нормы менялись, отчего он становился более быстрым, и легче воспринимал помехи. :-) Поэтому стоит пройтись по настройкам всех его периферийных устройств, чтобы убедиться, что ничто не мешает работе портов. Но, мне кажется, важнее проверить качество питания. Может, там помехи? И тактовую частоту вывести наружу, если можно.
|
|
|
|
|
Dec 16 2013, 12:37
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(rx3apf @ Dec 16 2013, 02:01)  Где-где... В CODEBOXе. Там одна настойка, седьмого бита порта B. На нем и смотрю. Я чето не понял, а что программа делать должна? Переход в конце по current счетчику? Скакать по кругу до начала?
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Dec 16 2013, 17:33
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Программа должна настроить порт на вывод и встать в пустой цикл. Никаких конфликтов периферии в такой конфигурации нет, камни однотипные, разница в корпусировке (ну и в партии кристаллов, разумеется). Питание - батарейное (3.6), пробовал внешнее (PICKIT2). На всякий случай запаял и MCLR прямо на VCC, контролирую тактовую - появляется секунд через десять после подачи питания. Следующий этап будет, когда получу камни из другой партии, но это, увы (а продукцию давно надо было отгружать !), будет не слишком быстро. А пока я уверен, что моя коллекция "трофеев" (а там есть и Microchip, и AD, и TI, и FTDI) пополнилась еще одним образчиком
Сообщение отредактировал rx3apf - Dec 16 2013, 19:56
|
|
|
|
|
Dec 17 2013, 04:50
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081

|
Цитата(rx3apf @ Dec 16 2013, 14:53)  О каких регистрах идет речь ? Речь о всех регистрах SFR. В приведённом примере (не знаю, как в реальной программе) они все оставлены "в дефолте". Я же Вам предлагаю настроить их явно-принудительно. После того, как пару раз неработающие камни ожили от такой операции, я всегда так поступаю. Помимо этого, не всегда настройки SFR "по дефолту" соответствуют требуемым (это уже надо конкретно с каждым чипом разбираться). Ну, и разумеется, коли переразводили плату, как говорил дедушка Ленин: "Контакты, контакты, и ещё раз, контакты".
|
|
|
|
|
Dec 17 2013, 08:12
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Еще раз - _какие_ регистры ? Все используемые мной регистры (PORTB, TRISB) настроены, это видно в примере. Да хоть бы и не настроены - не работает тактовый генератор (кстати, с EXTRC картина та же, если что). И программатор отключался - это тоже ничего не меняет. Цитата(dinam @ Dec 17 2013, 06:34)  1. Ткнулся бы осциллографом в питание и посмотрел на предмет всяких загадочных пульсаций. Нет. Цитата 2. Проверил тестером подтягивающие резисторы если они есть. Есть. Поэтому до настройки портов я вижу (когда смотрю скопом) питание, а когда логическим пробником (низкоимпедансным) - вижу Z-состояние. Цитата 3. Проверил цоколевку корпусов, желательно из разных мест(рисунков, таблиц). Вдруг SOIC и SSOP разводка разная. Ага. А через десять секунд микросхема сама меняет себе разводку и запускается ? Цитата 4. Я так понимаю плату переразводили, значит плату ещё раз проверьте. "Земля" есть, "питание" есть, "сброс" на месте. Все. Для выполнения того кода, что я привел, больше ничего не надо. Цитата 5. Проверьте уровни 0 и 1 на всех входах/выходах они должны иметь четкие уровни. 6. Попробовать вывести сигнал на другие порты. Еще раз - тактовый генератор не запускается, код не выполняется. Да, на других портах я пробовал еще раньше, когда еще не понял, что проблемы именно в запуске.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|