Не могу завести PIC12f6x

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Не могу завести PIC12f6x

Сообщение Ge_die »

Всем привет!

Я делаю интервалометр для фотоаппарата. Прошивку писал в MPLAB, отлаживал в ISIS, всё работало. Решил, наконец, реализовать в железе и был сильно удивлён результатом. Контроллеры (перепробовал 3 штуки - 2 675х и 629) не запускаются. Даже прошивка, выставляющая нули\единицы на ногах мк не работает как надо. Что бы я ни зашивал, результат один и тот же - на GP5 - 0, на GP4 -2.5 В (и медленно скатывается к нулю), на остальных ногах - вообще тишина. Прогамматор - PICKIT 2, шьюсь из MPLAB (софт, который шёл с программатором жалуется на отсутствие конфигурационного слова в *.hex), компилятор - HI TECH C. Схема - простая до безобразия - сам мк и источник питания. Питаю от 3-х батареек AAA.

И ещё. Никак не пойму, почему если выставить 1 на какой либо ноге, осцилограф в ISIS рисует на ней не прямую, а кривую, стремящуюся к нулю?

Заранее благодарю!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Не могу завести PIC12f6x

Сообщение dosikus »

На счет протеуса - проект в студию.
На счет железа - в конфиге определяется тактовый генератор , практически сердце контроллера.
Как он будет работать если не сконфигурирован ?
Еще одна распространенная ошибка - забывают о MCLR ...
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

Добавил проект на протеусе и воркспейс из мплаба в аттач. Конфигурационые биты я задавал в мплабе и рассчитывал что они попадут в прошивку. В них, собственно, и задействован внутренний генератор, декларируется использование MCLR как порта итп. Может их где-то ещё нужно задавать? Ведь по какой-то причине PICKit 2 Programmer их не видит и выставляет по умолчанию 01FF, хотя в мплабе значение совсем другое
Вложения
proteus_projects.rar
(12.68 КБ) 112 скачиваний
project one.rar
(53.29 КБ) 99 скачиваний
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение urry »

1. __CONFIG( WDTDIS & MCLRDIS & INTIO & BORDIS);
2. выражение if (T0IF) неправильное, потому что флаг может взвестись независимо от того, замаскировано прерывание или нет. правильно if (T0IF && T0IE) - собственно, все это касается и других видов прерывания.
3.INTCON = 0b11111000; - мне это ничего не говорит - перепишите по флагам отдельно, нет никакого желания нырять в даташит. В заголовочном файле все это есть.
4. Скользкий момент - прерывание по изменению уровня сигнала на входах.
Обработка неправильная - вначале нужно прочитать или записать инфу в GPIO, а затем только сбросить GPIF, иначе Вы никогда не выйдете из прерывания.
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

Переписал, теперь код выглядит так:

Код: Выделить всё

#include <htc.h>
__CONFIG(WDTE_OFF & MCLRE_OFF & FOSC_INTRCIO & BOREN_OFF);

int main()
{
   GPIF = 0;
   period = halfMinuteInterval;
   counter = period;
      CMCON=7;
   GPIF = 0;
   INTF = 0;
   T0IF = 0;
   GPIE = 1;
   INTE = 1;
   T0IE = 1;
   PEIE = 1;
   GIE  = 1;
      TRISIO = 0b00000001;
      IOCB = 0b00000001;
      WPU = 0b00000001;
   OPTION_REG = 0b00000101;
   while(1)
   {
      GP0 = 1;
      GP1 = 1;
      GP2 = 1;
      GP3 = 1;
      GP4 = 1;
      GP5 = 1;
   }
      
}


Выкинул всё что было можно, не работает. Или работает, но совсем не так как нужно: напряжение на ногах есть, но выводятся явно не единички. Пока ковырялся в даташитах и с МПЛАБом куча странных вещей обнаружилась. К примеру, если выставить конфигурационные биты в настройках, а не в коде, то при сборке проекта МПЛАБ их сбрасывает у меня на глазах %). Кроме того сейчас мплаб думает что конфигурационное слово - 3194, а пик кит программер, прочитав то что насобирал мплаб, решил что слово - 0194. И да, не очень понимаю почему флаги конфигурационного слова объедняются оператором &, а не |.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение urry »

как должно работать ? Алгоритм .
я за несколько лет ни разу не пользовался оболочкой пиккита, прошиваю из мплаба.
Весь проект, пожалуйста - и где что не работает - по этому куску сложно судить, что не так.
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

Это не кусок, это весь код, который я оставил. Я ожидал получить единицы на ногах GP0-GP5 как доказательство того, что контроллер работает как надо, но этого не произошло. Шеллом из комплекта я и сам бы не стал бы пользоваться, если бы всё работало как надо. Просто тыкаюсь уже, пробую всё подряд, ибо не представляю что я делаю не так
Вложения
project_one.rar
(42.36 КБ) 97 скачиваний
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение Аlex »

Выкинул всё что было можно, не работает.
А что у Вас может работать ? Вы, когда писали, хотя-бы подумали что пишете.
Наразрешали кучу прерваний, а обработчика нет вообще.

Просто тыкаюсь уже, пробую всё подряд
А Вы сядьте и почитайте литературу. Будет намного полезнее.
Тут метод тыка не прокатывает.
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: Не могу завести PIC12f6x

Сообщение TripleKill »

Может, схемку покажете, как чего подключено? Только не в протеусе, а в реальности.
В протеусе не нужно подключать кварц или вообще какую-либо частотозадающую цепь.
Я не знаю, может в 12-ых есть встроенный тактовый генератор, но если нет, то подключили ли вы внешний?
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

Аlex писал(а):А что у Вас может работать ? Вы, когда писали, хотя-бы подумали что пишете.
Наразрешали кучу прерваний, а обработчика нет вообще.

Работать вот прямой сейчас должен вывод единиц на ноги. Я прекрасно понимаю чего хочу. Обработчик прерываний я выкинул, как и весь остальной код, когда искал косяк. В симуляторе всё работало прекрасно. Сейчас цель - заставить работать железо, когда я этого добьюсь, код вернётся на место.
TripleKill писал(а):Может, схемку покажете, как чего подключено?

Схема - тривиальнейшая. + 4.5В к VDD, 0В - к VSS. Микросхема и блок из 3х батарей AAA. И да, конденсатор ещё стабилизирующий.
TripleKill писал(а):Я не знаю, может в 12-ых есть встроенный тактовый генератор, но если нет, то подключили ли вы внешний?

Внутренний генератор есть, именно его я и задействовал.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение urry »

Давайте угадаю - Вы забыли обнулить ANSEL и у Вас первые 4 ноги идут как аналоговые.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение Аlex »

Ge_die писал(а):Обработчик прерываний я выкинул, как и весь остальной код
Я вижу что Вы его выкинули. По этому и говорю что его нет. А прерывания кто зпрещать будет ? Контроллер сам, чисто интелектуально, должен догадаться ?
Вы досих пор даже не сказали какой у Вас чип. Возможно, действительно, забыли АЦП выключить.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение urry »

Аlex, там по заголовочному видно, 12F675. Я запретил прерывания и прошелся в мплаб сим - действительно не работает из-за ANSEL . Странно, что эту ошибку проглотил протеус, впрочем, я его не запускал.
И совет ТС - уйти от версий про для хайтека, перейти на старые добрые std.
В про версии 2+2 не всегда равно 4.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу завести PIC12f6x

Сообщение Аlex »

Аlex, там по заголовочному видно, 12F675.
Тогда да, ANSEL виновен. :)
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

Ge_die писал(а):Контроллеры (перепробовал 3 штуки - 2 675х и 629) не запускаются.
Так что модель я указал, хотя конечно да, надо было по-человечески написать. Итого: у меня два 12f675 и один 12f629. Сегодня купил ещё один 12f675, чтобы проверить, не покалечил ли я старые микросхемы. На нём баги воспроизвелись. Спасибо что сказали про ANSEL, я про него не знал. Однако обнуление регистра (как и отдельных битов в нём) не помогло. Флаги прерываний тоже сбросил - никакой разницы. 12f629 тоже глючит. Больше всего обескураживает то, что напряжение разное получается от запуска к запуску. Как правило везде единицы кроме MCLR. Иногда единицы бывают только на GP0 и GP5. Бывает и по-другому. Хотя программу я переписал и выводить она должна нули (кроме GP0, конечно. он помечен как входной). А PRO версию я не использую (если мы конечно об одном и том же говорим). Вот интересно, может я питаю его криво? Влияют ли всплески при включении на работу? Стабилизирующий кондёр у меня на 470 мкф, может быть напряжение при включении слишком плавно нарастает?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Не могу завести PIC12f6x

Сообщение КРАМ »

Конденсатор не стабилизирующий, а блокировочный. Уменьшите его до 10 мкФ, но параллельно поставьте 0,1 мкФ КЕРАМИКУ. Покажите живую схему устройства. Приведите принципиальную схему, включая источник питания. Обозначьте на схеме номинал питающего напряжения.
И покажите текущий используемый код.
Иначе мы пытаемся поймать черную кошку в темной комнате...
Ge_die
Родился
Сообщения: 10
Зарегистрирован: Вт июл 19, 2011 19:20:17

Re: Не могу завести PIC12f6x

Сообщение Ge_die »

В общем всем большое спасибо, девайс заработал, хоть и не без некоторых странностей. По всей видимости, дело было в том, что MPLAB прошивал невалидный OSCCAL (я галку в настройках линкера поставил, чтобы он калибровал генератор). Перекалибровал в PIC Kit Programmer'e и контроллер запустился. Правда на GP5 выводится единичка, хоть я и не просил контроллер об этом, но тут я и сам разберусь. Да и не использую я эту ножку
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»