реклама на сайте
подробности

 
 
> PIC18F4520 - проблемы с запуском
Epikur
сообщение Jan 13 2006, 08:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 17-04-05
Из: Минск
Пользователь №: 4 215



День добрый.
Есть система, построенная на базе PIC18F4520. В качестве тактового генератора был выбран кварц на частоте 4
Мгц, режим: HS-PLL. К кварцу приделаны 2 конденсатора по 15 пФ.
Чего бы ни выбирать с режимах работы внутренних и внешних генераторах, (Fail-safe clock, two speed
startup, startup timers, watchdog итд.), чего бы ни отключать, система периодически при старте
уходит в глубокий ступор.
Были выявлены следующие "закономерности"
* При выключенном FSCM (Fail-safe clock monitoring), TSS (Two-speed startup) - вне
зависимости от PTMR (Power-up Timer) и WDT, система просто иногда не стартует. Обычно после цикла "
программирование (ICD-2)-> выключение питания (снятие ICD) -> включение питания) первый раз стартует
всегда, а второй раз после включения-выключения - где-то только в 20% случаев.
* При включенном TSS система, в общем, ведёт себя схожим образом, только стартует чаще. А иногда стартует
на частоте примерно раз в 16 ниже (видимо, на встроенном генераторе, который по умолчанию настроен на 1
Мгц). И на основную частоту не переходит.
* При включённом FSCM и TSS система иногда стартует (обычно), иногда не стартует вообще, иногда стартует
на частоте 1 Мгц, иногда - где-то видимо в диапазоне 32 кГц (тоже там такой генератор есть).
* При сбросе по WDT система всегда стартует нормально. Если дёрнуть MCLR - аналогично.
* С добавлением в программе кода защиты от сбоев (приведён ниже), система стала 95% стабильной. Но иногда
всё равно не стартует, и хоть ты тресни.

Что самое неприятное, так это что глюк стал почти невоспроизводим. Вот сегодня я с ним долбался, раз 50
программировал, включал, выключал - и ни разу ни одного сбоя. А понёс девайс на приёмку, так он со
второго раза повесился. А потом опять начал нормально работать.
Я даже посоветовал включить в инструкцию по эксплуатации строчку, мол "если устройство не подаёт признаков
жизни, выдердните его из сети, подождите минуту и включите опять". (после такого перерыва устройство обычно
включалось) Но это как-то несолидно.

Привожу код защиты (на HT-PIC C18)
Код
// функция вызывается из main - в первой строке.
void DeviceInitialize (void)
{
    u16 Temp;

    // Выражения вроде BitN и xBitN определны как байт с одной единицей или одним нулём соответственно
    
    OSCCON |= Bit4 | Bit5 | Bit6;   // Выбираем частоту внутреннего генератора 8 Мгц
    while (!OSTS) asm ("\tclrwdt"); // Ожидаем, пока внешний генератор не стабилизируется
    OSCCON &= xBit0 & xBit1;        // Выбираем режим работы: от основного (внешнего) генератора
                                    // Подозреваю, что эта строка не будет иметь эффекта.

    // Проверка, чтобы устройство работало на основной частоте. Иначе - сброс по Watchdog
    // Длительность одного цикла декремента: 3 мкс (12 тактов).
    // Период таймера устанавливаем около 16 млс (делитель 1:4)
    // Получаемая задержка: 12 млс либо гораздо больше, если основной генератор не завёлся.
    Temp = 4000;
    while (Temp--);
    asm ("\tclrwdt");
    
    // Дальнейший код инициализации...
    return;
}


Ещё стоит заметить, что этот же проект на PIC18F458 работает безо всяких проблем, но это старая версия, в новой мы перешли на 4520.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Epikur   PIC18F4520 - проблемы с запуском   Jan 13 2006, 08:05
- - Alex B._   Либо кварц убогий, либо программная ошибка. И вооб...   Jan 13 2006, 09:20
- - Epikur   Благодарю за несомненно ценный совет. Только вот к...   Jan 14 2006, 16:20
- - Epikur   Проблема, похоже, решилась установкой резистора по...   Jan 17 2006, 21:14
|- - dm_mur   Несмотря на то, что проблема решилась: Как вы фом...   Jan 18 2006, 03:25
- - Epikur   Дело в том, что ради удобства же пользователей наш...   Jan 21 2006, 22:54
|- - vm1   У нас была такая же проблема и тоже с 18 пиком. В ...   Jan 22 2006, 01:19
|- - dm_mur   Цитата(Epikur @ Jan 22 2006, 01:54) Дело ...   Jan 25 2006, 07:01
- - Алексей Непочатов   To Epikur: А у Вас все рекомендации общего порядка...   Jan 23 2006, 08:57
- - Alex B._   2Алексей Непочатов Весьма ценные замечания. 2Epik...   Jan 23 2006, 09:39
|- - vm1   Цитата(Alex B._ @ Jan 23 2006, 12:39) 2vm...   Jan 24 2006, 19:45
- - Epikur   ЦитатаПосле аппаратного сброса кнопкой работал нор...   Jan 24 2006, 15:01
- - Alex B._   Цитата4520LF LF не LF отбирается на фабрике тестир...   Jan 24 2006, 16:55
- - FPGA   Цитата(Epikur @ Jan 13 2006, 11:05) День ...   Jan 24 2006, 17:34
- - Алексей Непочатов   Каковы, интересно, "небольшие допущения...   Jan 24 2006, 19:06
- - Epikur   Каковы, интересно, "небольшие допущения...   Jan 25 2006, 06:27


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016