|
LPC1102 и SWD, Работает ли SWD при ~RESET = 0 |
|
|
|
Aug 27 2011, 15:46
|

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

|
С кортексами дела не имел, закладываю в схему LPC1102 (габариты жмут). Курю описание. Там сказано, что нет специальной ноги для принудительного запуска загрузчика. Рекомендуют запуск ISP предусматривать в программе. Но поскольку проект первый, то вполне вероятно записать в проц программу, которая не то что ISP не запустит - вообще камень на лопатки положтит. А ног и так мало, ноги SWD естественно будут заняты под SPI и нога SWCLK превратится в SPI CLK. В инструкции сказано, что в этом случае SWD отключается. Также будет занята и нога P0.0/~RESET. Изучив описание еще раз, возник такой вопрос: при подаче питания нога P0.0 работает как ~RESET. Зажав его, я не даю запуститься моей программе и не допускаю перепрограммирования функций ног ~RESET и SWCLK. Вопрос - пока я держу RESET зажатым, я смогу достучаться до камня по SWD и стереть неправильную программу (CRP не стоит, само собой)? Или же ~RESET блокирует SWD и камень в помойку? В таком случае надо будет отрабатывать программу на чем-то более многоногом и безопасном, например LPC1114, подпаивая его к полю из 4х4 площадок с шагом 0.5мм пучком проводов, чего не хотелось бы.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 29 2011, 19:13
|
Местный
  
Группа: Участник
Сообщений: 224
Регистрация: 1-05-06
Из: С-Петербург
Пользователь №: 16 657

|
Цитата(Сергей Борщ @ Aug 29 2011, 13:23)  Сергей, А вы прошивать через UART пробовали? Я несколько раз прочел в документацию и так не понял - проц сам переходит в режим программирования по UART или для этого что то надо сделать?
|
|
|
|
|
Aug 30 2011, 06:03
|

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

|
QUOTE (Ya. Kolmakov @ Aug 29 2011, 22:13)  проц сам переходит в режим программирования по UART или для этого что то надо сделать? Существует три входа в заводской загрузчик (ISP): 1) В проце нет пользовательской программы. В этом случае после сброса безусловно запускается загрузчик. 2) Во время сброса нога P0.1 прижата к земле 3) Из пользовательской программы осуществлен переход на точку входа в процедуру ISP. Поскольку у LPC1102 на ногу P0.1 места не хватило, то остаются первый и третий способы. Первый доступен в чистом кристалле с завода, третий нужно (можно) предусматривать в вашей программе.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 13 2011, 05:01
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578

|
Цитата(esaulenka @ Sep 8 2011, 16:50)  Проверял на LPC1111. Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю. ... WARNING: Supply voltage too low, disconnecting target! По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания. У меня плата на LPC1114, все сигналы для SWD идут напрямую без подтяжек. В том числе reset. МК стабильно шьётся.
--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх! В. Кипелов, Беги за солнцем.
|
|
|
|
|
Sep 13 2011, 09:20
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(RA3WUM @ Sep 13 2011, 09:01)  По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания. Упс, забыл написать, что вместо того, чтобы по-человечески сделать disconnect, я просто щелкнул кнопкой питания. Вот между этими строками я выключал питание и паял соплю между резетом и землёй: Код WARNING: Supply voltage too low, disconnecting target! Disconnecting ... - Disconnected Connecting ...
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Sep 21 2011, 16:43
|
Группа: Новичок
Сообщений: 4
Регистрация: 19-07-11
Пользователь №: 66 294

|
Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с AVR под компиляторо IAR все работало, попробывал под LPC1114 контроллер уходит в аварийное прерывание как под iar так и под KEIL-ом. Суть следующая: пусть у нас есть массив с данными типа unsigned char mas[10]{0,1,2,3,4,5,6,7,8,9}; и есть переменная unsigned short LenData=0x0302; Мне необходимо 2 и 3 байт массива сравнить с переменной LenData, под AVR я делал так if (LenData == *(unsigned short*)&mas[2]) {} и все работало, а как только я подставил данную конструкцию под LPC1114 То он сразу ушел в прерывание по сбою работы программы. Причем при использовании эмулятора от KEIL все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так?
|
|
|
|
|
Sep 21 2011, 19:38
|

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

|
Цитата(Andrei0686 @ Sep 21 2011, 20:43)  Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с AVR под компиляторо IAR все работало, попробывал под LPC1114 контроллер уходит в аварийное прерывание как под iar так и под KEIL-ом. Суть следующая: пусть у нас есть массив с данными типа unsigned char mas[10]{0,1,2,3,4,5,6,7,8,9}; и есть переменная unsigned short LenData=0x0302; Мне необходимо 2 и 3 байт массива сравнить с переменной LenData, под AVR я делал так if (LenData == *(unsigned short*)&mas[2]) {} и все работало, а как только я подставил данную конструкцию под LPC1114 То он сразу ушел в прерывание по сбою работы программы. Причем при использовании эмулятора от KEIL все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так? уверены, что в правильную ветку запостили?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|