Сергей Борщ 134 27 августа, 2011 Опубликовано 27 августа, 2011 · Жалоба С кортексами дела не имел, закладываю в схему 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мм пучком проводов, чего не хотелось бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HARMHARM 0 28 августа, 2011 Опубликовано 28 августа, 2011 · Жалоба Вопрос - пока я держу RESET зажатым, я смогу достучаться до камня по SWD и стереть неправильную программу (CRP не стоит, само собой)? Или же ~RESET блокирует SWD и камень в помойку? Судя по разным обсуждениям на форумах и некоторым данным из даташитов, SWD не будет работать в состоянии сброса. Но это так, ИМХО. LPC1114 у меня есть, но работать через SWD нечем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 28 августа, 2011 Опубликовано 28 августа, 2011 · Жалоба Перед назначением SPI сделать полсекундную задержку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HARMHARM 0 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять.Можно. Но во время отладки этого кода можно запросто "убить" камень. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек.Да, пожалуй так и сделаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Y.Kolmakov 2 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Сергей, А вы прошивать через UART пробовали? Я несколько раз прочел в документацию и так не понял - проц сам переходит в режим программирования по UART или для этого что то надо сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 30 августа, 2011 Опубликовано 30 августа, 2011 · Жалоба проц сам переходит в режим программирования по UART или для этого что то надо сделать?Существует три входа в заводской загрузчик (ISP): 1) В проце нет пользовательской программы. В этом случае после сброса безусловно запускается загрузчик. 2) Во время сброса нога P0.1 прижата к земле 3) Из пользовательской программы осуществлен переход на точку входа в процедуру ISP. Поскольку у LPC1102 на ногу P0.1 места не хватило, то остаются первый и третий способы. Первый доступен в чистом кристалле с завода, третий нужно (можно) предусматривать в вашей программе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 8 сентября, 2011 Опубликовано 8 сентября, 2011 · Жалоба Сергей, если интересно. Проверял на LPC1111. Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю. Connecting ... - Connecting via USB to J-Link device 0 - J-Link firmware: V1.20 (J-Link ARM V8 compiled Apr 27 2011 20:42:35) - JTAG speed: 5 kHz (Fixed) - Initializing CPU core (Init sequence) ... - Initialized successfully - JTAG speed: 4000 kHz (Fixed) - CPU clock frequency: 11992 kHz (Auto detected) - Connected successfully WARNING: Supply voltage too low, disconnecting target! Disconnecting ... - Disconnected Connecting ... - Connecting via USB to J-Link device 0 - J-Link firmware: V1.20 (J-Link ARM V8 compiled Apr 27 2011 20:42:35) - JTAG speed: 5 kHz (Fixed) - Initializing CPU core (Init sequence) ... - Initialized successfully - JTAG speed: 4000 kHz (Fixed) - ERROR: Failed to download RAMCode for CPU clock frequency detection! - ERROR: Failed to measure CPU clock frequency - ERROR: Failed to connect Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ra3wum 0 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба Проверял на LPC1111. Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю. ... WARNING: Supply voltage too low, disconnecting target! По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания. У меня плата на LPC1114, все сигналы для SWD идут напрямую без подтяжек. В том числе reset. МК стабильно шьётся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба МК стабильно шьётся.Даже когда нога сброса в программе используется на порт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания. Упс, забыл написать, что вместо того, чтобы по-человечески сделать disconnect, я просто щелкнул кнопкой питания. Вот между этими строками я выключал питание и паял соплю между резетом и землёй: WARNING: Supply voltage too low, disconnecting target! Disconnecting ... - Disconnected Connecting ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrei0686 0 21 сентября, 2011 Опубликовано 21 сентября, 2011 · Жалоба Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с 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 все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 21 сентября, 2011 Опубликовано 21 сентября, 2011 · Жалоба Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с 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 все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так? уверены, что в правильную ветку запостили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться