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

 
 
> RESET LPС1768, Не выполняется старт
TAutomatic
сообщение Aug 20 2012, 17:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Непонятки получились с ресетом. При подаче питания контроллер не стартует, только при нажатии на кнопку сброса, она предусмотрена для обновления прошивки. Ножка ресет подтянута на 3.3В резистором 10кОм. Поставил керамику на землю 0,1мкФ, ноль результата. Супервизор питания - тоже самое. Сброс и старт программы только через нажатие кнопки. Да и то не сразу, бывает пару-тройку раз приходится нажать или подержать нажатой 3-4 сек. В чем тут может быть дело?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Terminator
сообщение Oct 22 2012, 05:24
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Не стал заводить ещё одну тему. Спрошу тут.

Как правильно программно перезапустить lpc1768 ?
Щас используется такой код:
Код
    DBGSTRINFO("Reset!\n\n\n\n");
    portDISABLE_INTERRUPTS();
    for (int i = 0; i < 35; i++)
    {
        NVIC_DisableIRQ((IRQn_Type) i);
        NVIC_ClearPendingIRQ((IRQn_Type) i);
    }
    SCB->VTOR = 0x0; //bootloader_start_addr;
    asm volatile
    (
        "ldr r0, =0    \n"
        "msr control, r0 \n" // init control reg like reset did
        "ldr r0, =0x0 \n"
        "ldr sp, [r0] \n"//init stack pointer reg on start_bootloader_addr
        "ldr r0, =0x4 \n"
        "ldr pc, [r0] \n"//init program counter reg on start_bootloader_addr+4 - jump to user code
    );


Прошивка перезапускается, но виснет в процессе загрузки. Если передёрнуть питания, то стартует нормально.

Сообщение отредактировал Terminator - Oct 22 2012, 05:25
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 22 2012, 06:07
Сообщение #3


Гуру
******

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



QUOTE (Terminator @ Oct 22 2012, 08:24) *
Как правильно программно перезапустить lpc1768 ?
Использовать бит SYSRESETREQ регистра AIRCR или сброс по срабатыванию собаки путем ее запуска и записи в нее неправильного ключа.

QUOTE (Terminator @ Oct 22 2012, 08:24) *
Прошивка перезапускается, но виснет в процессе загрузки
Значит где-то в процессе инициализации предполагается начальное состояние какого-либо регистра, а после вашего "перезапуска" состояние этого регистра изменено. Например, в настройках PLL. А некоторые регистры вообще не реагируют на повторную запись, например - регистр управления собакой. Поэтому программно вернуть проц полностью в исходное состояние другими методами невозможно - только вызвав честный сброс одним из двух вышеупомянутых методов.


--------------------
На любой вопрос даю любой ответ
"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
Terminator
сообщение Oct 22 2012, 08:43
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Цитата(Сергей Борщ @ Oct 22 2012, 13:07) *
Использовать бит SYSRESETREQ регистра AIRCR или сброс по срабатыванию собаки путем ее запуска и записи в нее неправильного ключа.


Цитата
Note: support for
SYSRESETREQ is not included in LPC17xx devices.
This bit reads as 0.

Это из мануала к процу.

Цитата(Сергей Борщ @ Oct 22 2012, 13:07) *
Значит где-то в процессе инициализации предполагается начальное состояние какого-либо регистра, а после вашего "перезапуска" состояние этого регистра изменено. Например, в настройках PLL. А некоторые регистры вообще не реагируют на повторную запись, например - регистр управления собакой. Поэтому программно вернуть проц полностью в исходное состояние другими методами невозможно - только вызвав честный сброс одним из двух вышеупомянутых методов.

Вроде всё уже перерыл.
Буду копать дальше ...

P. S. однако SYSRESETREQ сработал.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TAutomatic   RESET LPС1768   Aug 20 2012, 17:38
- - Altemir   А что на ножке P2.10 при старте? Куда подтянута?   Aug 21 2012, 06:28
- - TAutomatic   Ножка P2.10 тоже подтянута на питание 3.3В через р...   Aug 22 2012, 05:44
- - shreck   Очень многие ARM'ы требуют от источника питани...   Aug 22 2012, 06:38
|- - TAutomatic   Цитата(shreck @ Aug 22 2012, 09:38) Очень...   Aug 22 2012, 17:47
- - theBMV   Вот мой вариант. Использую постоянно. 10 из 10 при...   Aug 24 2012, 08:08
|- - TAutomatic   Цитата(theBMV @ Aug 24 2012, 11:08) Вот м...   Aug 24 2012, 17:52
|- - TAutomatic   Цитата(TAutomatic @ Aug 24 2012, 20:52) С...   Aug 26 2012, 16:56
- - theBMV   В супервизоре внутри подтяжка 5 кОм. Он не с откры...   Aug 27 2012, 19:28
|- - TAutomatic   Цитата(theBMV @ Aug 27 2012, 22:28) В суп...   Aug 31 2012, 07:19
- - stoker   Была похожая проблема. Из 5 плат одна показывала в...   Sep 28 2012, 16:43
- - kan35   Не уверен про LPC, но к STM32 категорически запрещ...   Sep 30 2012, 09:50
- - AlexPo   Смущает очень медленный внешний сброс у LPC1768. П...   Oct 3 2012, 16:38
|- - theBMV   Цитата(AlexPo @ Oct 3 2012, 20:38) Смущае...   Oct 5 2012, 08:14
- - KnightIgor   Цитата(TAutomatic @ Aug 20 2012, 19:38) Н...   Oct 3 2012, 17:32
- - AlexPo   Решил отписаться по по поводу медленного сброса. В...   Oct 17 2012, 06:57
|- - jcxz   Цитата(Terminator @ Oct 22 2012, 11:24) f...   Oct 22 2012, 06:56
- - stoker   я использую для сброса NVIC_SystemReset();   Oct 30 2012, 12:13


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

 


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


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