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

 
 
> LPC2478 не запускается ИНОГДА, как поймать от чего?
ar__systems
сообщение Oct 9 2012, 17:39
Сообщение #1


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Есть устройство на этом чипе, выпущено уже 600 плат. С десяток плат замечены в том, что чип ИНОГДА не запускается. Одно из первых вещей которые делается в майн это зажигание светодиода, чего не происходит. Проблема в том, что происходит это весьма редко,и пока я не понял от чего зависит. Я взял 4 платы у заказчика которые я видел, что они не запускаются несколько раз (но не подряд), но повторить у себя в лаборатории не могу. Пробовал их охлаждать, и блок питания тоже. Никакго эффекта.

Дергание ресета когда плата зависла в этот момент не помогает.
Подозрений у меня два:

1. Не запускается PLL по каким-то причинам и чип безнадежно его ожидает. Но почему ресет не помогает?
2. Блок питания каким-то образом вводит чип в неправильное состояние. Медленно напряжение нарастает? Может это быть причиной?

Какие могут быть еще варианты, и как можно проверить обе версии? Как можно увеличить вероятность незапуска?

Спасибо!
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 38)
Nixon
сообщение Oct 9 2012, 19:17
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Когда-то был такой вопрос уже на форуме по поводу подобных симптомов - посмотрите не выходите ли вы вы за диапазон допустимого для Fcco при конфигурировании PLL.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 9 2012, 20:03
Сообщение #3


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Nixon @ Oct 9 2012, 15:17) *
Когда-то был такой вопрос уже на форуме по поводу подобных симптомов - посмотрите не выходите ли вы вы за диапазон допустимого для Fcco при конфигурировании PLL.


Mvalue - 45 (в регистр 44)
NValue - 1
резонатор - 12МГц, что дает частоту PLL 540МГц. Близко к пределу 550, но все-таки в пределах.
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 9 2012, 20:17
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



было подобное у LPC, обычно с питанием и ресетом связано. Внешний супервизор стоит?
(еще можно попробовать задержку перед включением PLL)
И обязательно проверить что бы код запуска PLL был корректный, например, для отладки вызвать функцию инициализации второй раз (при уже запущенном PLL) т.е. там нужно проверять запущен ли уже и т.п. отключать в нужной последовательности.
Go to the top of the page
 
+Quote Post
Nixon
сообщение Oct 9 2012, 20:34
Сообщение #5


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Цитата(ar__systems @ Oct 9 2012, 23:03) *
Mvalue - 45 (в регистр 44)
NValue - 1
резонатор - 12МГц, что дает частоту PLL 540МГц. Близко к пределу 550, но все-таки в пределах.

При ваших значениях M = 45 и N = 1 мы получим Fcco = 2 * M * Fin / N = 90 * 12 = 1080 Mhz. Многовато будет. Стартовать может и будет, но неустойчиво очень. Пересчитывайте коэффициенты.

P.S. Я обычно, если есть какой-то ограничительный диапазон, стараюсь выбирать значения из его середины - спокойнее как-то sm.gif


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 9 2012, 23:55
Сообщение #6


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Nixon @ Oct 9 2012, 16:34) *
При ваших значениях M = 45 и N = 1 мы получим Fcco = 2 * M * Fin / N = 90 * 12 = 1080 Mhz. Многовато будет. Стартовать может и будет, но неустойчиво очень. Пересчитывайте коэффициенты.

P.S. Я обычно, если есть какой-то ограничительный диапазон, стараюсь выбирать значения из его середины - спокойнее как-то sm.gif


я неправильно написал, N = 2, (1 написано в регистре). CCLKSEL = 7, что дает CPU clock 67.5MHz.

Код инициализации PLL был взят целиком из Embedded Artists примеров, как и исходные параметры. только частоту я один раз менял с 72 на 67.5.

Смотря сейчас на этот код, я вижу там одну подозрительную строку:
Код
void ConfigurePLL ( void )
{
    unsigned int MValue, NValue;

    if ( PLLSTAT & (1 << 25) )
    {
        PLLCON = 1;            /* Enable PLL, disconnected */
        PLLFEED = 0xaa;
        PLLFEED = 0x55;
    }

    PLLCON = 0;                /* Disable PLL, disconnected */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    
    SCS |= 0x20;            /* Enable main OSC */
    while( !(SCS & 0x40) );    /* Wait until main OSC is usable */

    CLKSRCSEL = 0x1;        /* select main OSC, 12MHz, as the PLL clock source */

    PLLCFG = PLL_MValue | (PLL_NValue << 16);
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
      
    PLLCON = 1;                /* Enable PLL, disconnected */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;

    CCLKCFG = CCLKDivValue;    /* Set clock divider */
#if USE_USB
    USBCLKCFG = USBCLKDivValue;        /* usbclk = 288 MHz/6 = 48 MHz */
#endif

    while ( ((PLLSTAT & (1 << 26)) == 0) );    /* Check lock bit status */
    
    MValue = PLLSTAT & 0x00007FFF;
    NValue = (PLLSTAT & 0x00FF0000) >> 16;
    while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );

    PLLCON = 3;                /* enable and connect */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while ( ((PLLSTAT & (1 << 25)) == 0) );    /* Check connect bit status */
}


Не нравится мне эта строка:
Код
    while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );

PLL_MValue и PLL_NValue это defines, две переменные в цикле не меняются. Понятно что этот цинл в теории не должен никогда срабатывать, но...


Цитата(KRS @ Oct 9 2012, 16:17) *
было подобное у LPC, обычно с питанием и ресетом связано. Внешний супервизор стоит?
(еще можно попробовать задержку перед включением PLL)
И обязательно проверить что бы код запуска PLL был корректный, например, для отладки вызвать функцию инициализации второй раз (при уже запущенном PLL) т.е. там нужно проверять запущен ли уже и т.п. отключать в нужной последовательности.

Супервизора нет. Питание нарастает до 3.3В за 4мс. Ресет просто подвязан к питанию через резистор. Думаю добавлю в процедуру инициализации PLL диагностической печати, чтобы если девайс не стартовал, можно было бы проверить, где он.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 10 2012, 04:44
Сообщение #7


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



У меня было подобное на STM32, когда flash latency конфигурировалась слишком оптимистично. В итоге зависал конвеер и процессор не реагировал ни на одно из прерываний, включая ресет. Первый случай, при котором нужно увеличивать flash latency был, емнип, как раз 60 МГц. Так что, с 67 как раз может проскакивать в большинстве случаев.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Oct 10 2012, 05:37
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Вот так мы инициализируем PLL на LPC24xx. Кореллирует с User Manual.
CODE
    uint32_t readback;

    /* Check if PLL is connected, disconnect if yes */
    if( PLLSTAT & PLLSTAT_PLLC )
    {
        PLLCON        = PLLCON_PLLE; // PLL enabled and disconnected
        PLLFEED        = 0xaa;
        PLLFEED        = 0x55;
    }

    PLLCON        = 0;                // PLL disabled
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    SCS|=            SCS_OSCEN;        // Enable main OSC

    while(!(SCS & SCS_OSCSTAT));    // Wait until OSC is usable

    CLKSRCSEL = CLKSRC_MAIN_OSC;    // Select main OSC as the PLL clock source

    /* Select PLL multiplier and devider */
    PLLCFG        = ( mainPLL_MUL | mainPLL_DIV );
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    PLLCON        = PLLCON_PLLE;        // Enable PLL, disconnected
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    /* Set clock devider */
    CCLKCFG        = mainCPU_CLK_DIV;

    //USBCLKCFG    = USBCLK_DIV_VALUE;

    /* Waiting for the PLL achieve lock */
    while(!(PLLSTAT & PLLSTAT_PLOCK));

    readback     = PLLSTAT & 0x00FF7FFF;
    /* stall - invalid readback */
    while (readback != (mainPLL_MUL | mainPLL_DIV));

    /* Enable and connect */
    PLLCON         = (PLLCON_PLLE | PLLCON_PLLC);
    PLLFEED     = 0xaa;
    PLLFEED     = 0x55;
    /* Check connect bit status, wait for connect */
    while(!(PLLSTAT & PLLSTAT_PLLC));


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Oct 10 2012, 05:40
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Может банально кварц не заводится из-за технологической емкости платы?


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 10 2012, 07:00
Сообщение #10


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Если бы кварц запускался через раз, висло бы на цикле ожидания запуска кварца и ресет бы работал.

А если вызвать процедуру инициализации pll дважды, ошибка повторится?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 10 2012, 08:31
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Oct 10 2012, 08:55
Сообщение #12


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Цитата(Сергей Борщ @ Oct 10 2012, 11:31) *
Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10


У нас было так на плате с LPC2132, когда только начинали с ним работать. У LPC есть нога, нулевой уровень на которой в момент ресета запускает встроенный (заводской) загрузчик. У 2132 это была P0.14. У нас она использовалась еще для работы с внешним АЦП и при включении девайса иногда была ситуация что в момент запуска МК в момент поднятия ресета напряжение на этой ноге еще не установилось. Тоже долго не могли понять почему иногда некоторые платы не стартуют.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 10 2012, 14:26
Сообщение #13


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Сергей Борщ @ Oct 10 2012, 04:31) *
Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10

О, вот это интересно. На ногу Р2.10 выведена схема от интерфеса программатора через последовательный порт (также скопирована с EA платы), и при отключенном программаторе там high-z. Попробовать туда поставить пулл-ап? Или без задержки отпускания ресета все равно не обойтись?

И ресет не действует на внутренний загрузчик?

Цитата(MBR @ Oct 10 2012, 00:44) *
У меня было подобное на STM32, когда flash latency конфигурировалась слишком оптимистично. В итоге зависал конвеер и процессор не реагировал ни на одно из прерываний, включая ресет. Первый случай, при котором нужно увеличивать flash latency был, емнип, как раз 60 МГц. Так что, с 67 как раз может проскакивать в большинстве случаев.

Мне интересно как вы в итоге пришли к такому диагнозу, что именно зависал конвеер? Так же мне не очень понятно почему ресет в этом случает не помогал? Ну это не обязательно имеет отношение к моей проблеме, а в общем.

Цитата(haker_fox @ Oct 10 2012, 01:37) *
Вот так мы инициализируем PLL на LPC24xx. Кореллирует с User Manual.

У вас в общем-то все тоже самое что и в нашем (EA) коде.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 10 2012, 14:37
Сообщение #14


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(ar__systems @ Oct 10 2012, 18:26) *
Мне интересно как вы в итоге пришли к такому диагнозу, что именно зависал конвеер? Так же мне не очень понятно почему ресет в этом случает не помогал? Ну это не обязательно имеет отношение к моей проблеме, а в общем.

Лишь мои домыслы, не более того. Ресет, если следовать армовской документации, это прерывание с наивысшим приоритетом. Если в процессе ресета процессор зависнет, скажем, на чтении инструкции из флеша, ресет не отработает. Именно это я и наблюдал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 10 2012, 14:56
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MBR @ Oct 10 2012, 18:37) *
Ресет, если следовать армовской документации, это прерывание с наивысшим приоритетом.

Это пишут в разделе Programmer's model. Прерыванием он является только с этой стороны.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 10 2012, 15:53
Сообщение #16


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Хм... не знаю не знаю насчет Р2.10. Для пробы поставил кондер 0.1uF между этим пином и землей. Разряжаю его перемычкой. Запускаю плату - висит. Но ресет при этом поиагает. Т.е. по симтомам не совсем совпадает. Плюс там еще экран есть, и там очень характерный паттерн появляется на экране, а в моем тесте просто черный.

При каких вообще обстоятельствах ресет может не действовать?
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 10 2012, 17:17
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Вы где-нибудь на этапе до всякой инициализации в ПО на неиспользуемой внешней ноге установите уровень, по которому можно посмотреть скопом, проходит проц этот участок кода или нет. Если используете IAR, то лучше сделать в __low_level_init в самом начале, для других кросс-компиляторов должны быть подобные механизмы, или стартап поправить.
Вы таким образом практически однозначно определите, стартует у вас контроллер из флэш и выполняет ваше ПО, а потом виснет, или сваливается в бутлоадер.
Если вы используется C++, то проблема может заключаться в конструкторе глобальных объектов, которые вызываются при инициализации системы.
Да мало ли там еще может быть причин. По вашим постам не совсем понятно, как и где вы инициализируете систему и что у вас там наворочено.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 10 2012, 17:37
Сообщение #18


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Andy Mozzhevilov @ Oct 10 2012, 13:17) *
Вы таким образом практически однозначно определите, стартует у вас контроллер из флэш и выполняет ваше ПО, а потом виснет, или сваливается в бутлоадер.

Да, пожалуй так и сделаю. Использую GNU ARM, вся инфраструктура взята из кода EA.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 11 2012, 05:27
Сообщение #19


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(aaarrr @ Oct 10 2012, 18:56) *
Это пишут в разделе Programmer's model. Прерыванием он является только с этой стороны.

Где пишут иначе? И почему тогда до полного обесточивания чипа я наблюдаю отказ обработки ресета?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 11 2012, 12:42
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MBR @ Oct 11 2012, 09:27) *
Где пишут иначе? И почему тогда до полного обесточивания чипа я наблюдаю отказ обработки ресета?

В других разделах. Неужели Вы действительно полагаете, что сигналы IRQn и RESETn чем-то похожи?
Конвеер, разумеется, по сбросу очищается.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 11 2012, 14:26
Сообщение #21


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(aaarrr @ Oct 11 2012, 16:42) *
Неужели Вы действительно полагаете, что сигналы IRQn и RESETn чем-то похожи?

А как тогда быть с soft-reset (armv7)?

Цитата(aaarrr @ Oct 11 2012, 16:42) *
Конвеер, разумеется, по сбросу очищается.

Если "разумеется", почему ресет не отрабатывает?

Цитата(aaarrr @ Oct 11 2012, 16:42) *
В других разделах.

А грубить-то зачем?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 11 2012, 19:28
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MBR @ Oct 11 2012, 18:26) *
А как тогда быть с soft-reset (armv7)?

Сравните методы вызова "программного" сброса и честного исключения типа SVC. Разница заметна?
Первое - не более чем взвод битика в периферийном модуле (пусть и являющимся неотъемлемой частью ядра),
приводящий в результате к активации вполне себе "железных" цепей сброса, а не выполнению
некой программной последовательности.
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Oct 12 2012, 06:03
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(MBR @ Oct 11 2012, 18:26) *
А как тогда быть с soft-reset (armv7)?

Но всё же LPC2478 у ТС совсем не armv7, вроде нет там никакого soft-reset...
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 12 2012, 17:54
Сообщение #24


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Про P2.10 -- у меня эта версия вызывает определенные сомнения, т.к. этот пин в момент включения подтянут к VDD (внутренниий пуллап)... Вот пин RTCK никуда не подтянут, проверяю эту версию с ним. Там симптомы более похожи.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Oct 12 2012, 23:51
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ar__systems @ Oct 12 2012, 21:54) *
Про P2.10 -- у меня эта версия вызывает определенные сомнения, т.к. этот пин в момент включения подтянут к VDD (внутренниий пуллап)... Вот пин RTCK никуда не подтянут, проверяю эту версию с ним. Там симптомы более похожи.


UM10237 (Rev. 04 — 26 August 2009), page 676

Цитата
Pin P2.10 that is used as hardware request for ISP requires special attention. Since P2.10
is in high impedance mode after reset, it is important that the user provides external
hardware (a pull-up resistor or other device) to put the pin in a defined state. Otherwise
unintended entry into ISP mode may occur.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 13 2012, 04:47
Сообщение #26


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(toweroff @ Oct 12 2012, 19:51) *
UM10237 (Rev. 04 — 26 August 2009), page 676

Спасибо. Да, это полезная инфа, любопытно что этот косяк присутсвует на плате EA, которые официальные разработчики демок для LPC
Go to the top of the page
 
+Quote Post
toweroff
сообщение Oct 13 2012, 06:50
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ar__systems @ Oct 13 2012, 08:47) *
Спасибо. Да, это полезная инфа, любопытно что этот косяк присутсвует на плате EA, которые официальные разработчики демок для LPC

я на эти грабли наступал, тоже долго не мог понять, что происходит
а по поводу платы - возможно, у вас старая ревизия и артисты уже пофиксили в новых версиях... все бывает
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 17 2012, 11:45
Сообщение #28


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Так, поставил пуллапы на П2.10 и на RTCK, эффекта никакого. Т.е. все продолжает виснуть как и раньше. Но, проявления теперь в точности как при подтяжке к нулю RTCK (пытался сам такое зависание каким-то образом воспроизвести). Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует.

Пуллапы 11К. Еще странность на которую обратил внимание но не успел исследлвать, странный уровень напряжения на П2.10, около 2.5В (без пуллапа). Питание чипа 3.3В

Да, посмотрел еще на схематику демки олимекса. У них схема программатора джамперами отделена от чипа с пуллапом, и подтяжки стоят на всех линниях jTAG. Попробую тоже добавить...
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 18 2012, 02:58
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Вы все же разобрались, стартует у вас бутлоадер, ваш код, или ни то и ни другое и контроллер находится в каком-то неопределенном вами состоянии?
Не понятна фраза "Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует."
Может кратко в одном посте можете описать последовательность действий и состояний контроллера?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 18 2012, 11:50
Сообщение #30


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Andy Mozzhevilov @ Oct 17 2012, 22:58) *
Не понятна фраза "Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует."
Может кратко в одном посте можете описать последовательность действий и состояний контроллера?

Да немного приболел последние 3 дня так что не занимался проблемой.

Ресет не работает, т.е. никакого видимого эффекта на плату не производит. Если же ее не трогать, она через какое-то время начинает работать как и должна, это я имел ввиду под словами "в течении секунд 20-30 программа нормально стартует". Все тоже самое я наблюдаю если запускать плату с притянутым к нулю RTCK.

Go to the top of the page
 
+Quote Post
Lotor
сообщение Oct 18 2012, 12:25
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Вам ранее советовали уже с помощью осцилла определить в каком месте затык. Почему Вы не следуете этому здравому совету? =)


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 18 2012, 16:42
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(ar__systems @ Oct 18 2012, 15:50) *
Да немного приболел последние 3 дня так что не занимался проблемой.

Ресет не работает, т.е. никакого видимого эффекта на плату не производит. Если же ее не трогать, она через какое-то время начинает работать как и должна, это я имел ввиду под словами "в течении секунд 20-30 программа нормально стартует". Все тоже самое я наблюдаю если запускать плату с притянутым к нулю RTCK.


Как вы определяете факт старта платы?
У вас есть динамическая инициализация, т.е. вы используете С++ и глобальные объекты классов, или у вас чисто С код?
Те 20-30 секунд, когда плата находится в непонятном для вас состоянии, осциллятор запускается?
Все это происходит только по включению питания, или нормально заработавшая плата может в такое состояние переходить, если ей дернуть Reset?



--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 18 2012, 19:12
Сообщение #33


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ar__systems @ Oct 9 2012, 20:39) *
Есть устройство на этом чипе, выпущено уже 600 плат. С десяток плат замечены в том, что чип ИНОГДА не запускается.


Неплохой показатель для 600 плат проблемы иметь всего с десятком.
Вполне вписывается в процент брака. Я бы смело менял чипы и не копал бы дальше.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 18 2012, 22:39
Сообщение #34


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Andy Mozzhevilov @ Oct 18 2012, 12:42) *
Как вы определяете факт старта платы?
У вас есть динамическая инициализация, т.е. вы используете С++ и глобальные объекты классов, или у вас чисто С код?
Те 20-30 секунд, когда плата находится в непонятном для вас состоянии, осциллятор запускается?
Все это происходит только по включению питания, или нормально заработавшая плата может в такое состояние переходить, если ей дернуть Reset?

Нету никой динамической инициализации и С++ тоже нету. После ресета плата ни разу ни была замечена в зависании. Я до сегодняшнего дня не имел возможности потыкать скопом в зависшую плату, поэтому про состояния кварца тоже не было ничего известно.
----------------------------------------------------------------------------------------------------
Короче я понял в чем дело. sm.gif *Всем большое спасибо за участие и советы!!!*

Плата питается 5В от внешнего БП. Если увеличить время нарастания питания с 0 до 5В до примерно 50 ms плата виснет 100% попыток.

После 5В стоит 3.3В регулятор LD1117. Вскоре после достижения VDD 3.0B чип включается и пытается запустить кварц. После примерно 10 колебаний кварца на VDD начинается что-то странное - толи у LD1117 ограничение по току включается, толи он при таком напряжении вообще себя неадекватно ведет, только VDD выше 3.0В так и не вырастает, начинается какая-то байда. далее на VDD наблюдаю что-то типа UUUUUUUU c верхними пиками на 3В и нижней кромкой около 2.1В. При этом потребление тока примерно на 500мА больше чем при нормально включившейся плате.

Если подаю 3.3В с таким же медленным рампом от другого регулятора непосредственно на VDD, все стартует нормально. Кстати, все обыскал, но спецификаций на то, как быстро должен нарастать VDD у этого CPU не нашел.

Т.е. сам по себе факт медленного нарастания VDD для чипа не проблема, главное чтобы регулятор не спотыкался при резком скачке тока в момент старта чипа.

Вставил небольшую задержку перед стартом кварца. Вроде стало работать. При этом шняга какая-то на VDD все равно видна, но не бесконечная, как раньше, а всего на пару мс.

Думаю в следуеще версии заменю нафиг этот регулятор.

Цитата(AlexandrY @ Oct 18 2012, 15:12) *
Неплохой показатель для 600 плат проблемы иметь всего с десятком.
Вполне вписывается в процент брака. Я бы смело менял чипы и не копал бы дальше.

Казалось бы да, но дефект проявляется крайне редко, и уже пару плат вернулось от заказчиков после тестирования, проверок итд. Т.е. не исключено, что они все такие.

Цитата(Lotor @ Oct 18 2012, 08:25) *
Вам ранее советовали уже с помощью осцилла определить в каком месте затык. Почему Вы не следуете этому здравому совету? =)

Написал же, болел sad.gif
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Oct 19 2012, 09:17
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(ar__systems @ Oct 19 2012, 02:39) *
Плата питается 5В от внешнего БП. Если увеличить время нарастания питания с 0 до 5В до примерно 50 ms плата виснет 100% попыток.

После 5В стоит 3.3В регулятор LD1117. Вскоре после достижения VDD 3.0B чип включается и пытается запустить кварц. После примерно 10 колебаний кварца на VDD начинается что-то странное - толи у LD1117 ограничение по току включается, толи он при таком напряжении вообще себя неадекватно ведет, только VDD выше 3.0В так и не вырастает, начинается какая-то байда. далее на VDD наблюдаю что-то типа UUUUUUUU c верхними пиками на 3В и нижней кромкой около 2.1В. При этом потребление тока примерно на 500мА больше чем при нормально включившейся плате.


У вас LD1117 фиксированный на +3.3V или ADJ? Входное напряжение +5В как себя ведёт, когда VDD начинает дёргаться? А конденсатор на выходе LD1117 какой стоит? Если стоит 10 мкФ, то, возможно, вам надо его увеличить, хотя бы до 20 мкФ.
Go to the top of the page
 
+Quote Post
Altemir
сообщение Oct 19 2012, 10:47
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



А ещё большинство Low drop-ов очень не любят на выходе кондёры со сверхнизким ESR, т.е. керамику. В ряде даташитов об этом говорят, рекомендуя ставить танталы или электролиты, в противном случае имеет место быть самовозбуждение. По LD1117 же в даташите ни слова.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 19 2012, 14:12
Сообщение #37


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Zwerg_nase @ Oct 19 2012, 05:17) *
У вас LD1117 фиксированный на +3.3V или ADJ? Входное напряжение +5В как себя ведёт, когда VDD начинает дёргаться? А конденсатор на выходе LD1117 какой стоит? Если стоит 10 мкФ, то, возможно, вам надо его увеличить, хотя бы до 20 мкФ.

Конденсатор стоит 22мкф электролит, даже два, но один на другом конце платы. 5В напряжение ведет себя прекрасно, спокойненько продолжает себе расти по прямой до 5В.

LD1117 фиксированый.
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Oct 22 2012, 13:52
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(ar__systems @ Oct 19 2012, 18:12) *
Конденсатор стоит 22мкф электролит, даже два, но один на другом конце платы. 5В напряжение ведет себя прекрасно, спокойненько продолжает себе расти по прямой до 5В.

LD1117 фиксированый.


На мой взгляд, проблема в том, что при увеличении выходного тока, т.е. когда процессор включается при VDD = +3V, увеличивается Dropout Voltage регулятора (в даташите оно отличается на 0,1V при увеличении выходного тока со 100 мА до 800 мА), а так как на входе напряжение не успевает пропорционально вырасти, то регулятор перестаёт регулировать и на выходе получаются броски напряжения. Возможно, это получиться вылечить увеличением выходной ёмкости. В даташите у ST на выходе LD1117 нарисованы конденсаторы до 100 мкФ.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 22 2012, 15:15
Сообщение #39


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Zwerg_nase @ Oct 22 2012, 09:52) *
На мой взгляд, проблема в том, что при увеличении выходного тока, т.е. когда процессор включается при VDD = +3V, увеличивается Dropout Voltage регулятора (в даташите оно отличается на 0,1V при увеличении выходного тока со 100 мА до 800 мА), а так как на входе напряжение не успевает пропорционально вырасти, то регулятор перестаёт регулировать и на выходе получаются броски напряжения. Возможно, это получиться вылечить увеличением выходной ёмкости. В даташите у ST на выходе LD1117 нарисованы конденсаторы до 100 мкФ.

Кстати, интересная версия. Не совсем правда объясняет почему VDD вообще не поднимается после этого выше 3В? Даже когда Vin доходит до 5В.

Да, про конденсатор я тоже подумал. Увеличим его тоже.
Go to the top of the page
 
+Quote Post

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

 


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


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