|
Помогите проморгаться, Не заводится LPC2478 |
|
|
|
Feb 13 2011, 04:18
|
Группа: Новичок
Сообщений: 9
Регистрация: 28-12-09
Пользователь №: 54 544

|
Здравствуйте. Имеется плата SK-LPC2478-S3E от StarterKit. Между P0.16 и землей повесил светодиод, изначально он слабо светится, на ноге 2,3 В. Написал простую программу для LPC2478: #include <LPC24xx.H>
void delay (int cycles) { volatile int i;
for(i = 0; i<cycles; i++) //simple delay loop {} }
int main(void) { int cycles = 36000000;
PINSEL1 = 0; //P0.16-31 as GPIO PINMODE1 = 0xFFFFFFFF; //P0.16-26 PULLDOWN IODIR0 = 0x10000; // P0.16 as output
while(1) { IOSET0 = 0x10000; //P0.16 set
delay(cycles);
IOCLR0 = 0x10000; //P0.16 clear
delay(cycles); } }
Пишу в Keil, шью FlashMagic через COM. Отлаживаю OCD Commander'ом через Wiggler. Светодиод не моргает (продолжает тускло светиться), шаги процессора по OCD Commander'у и симулятору кейла не совпадают. Проект здесь: http://dl.dropbox.com/u/4180373/2nd_blinking.zipStartup был предложен кейлом при создании проекта, вносил изменения по настройке клока - результатов никаких. В коде main имеются ошибки? Если нет, то, видимо, напортачил со startup'ом, но не могу разобраться где. Может, кто-нибудь поделится 100% рабочим примером для LPC2478? Или подскажете что здесь не так? До сих пор сидел на ПЛИС, решил подружить их с ARM и такая сходу незадача..
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Feb 13 2011, 06:53
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Когдато начинал осваивать lpc2468 в KEIL, но быстро перешел на IAR. Прикладываю пример табло которе делел на SK-LPC2468. Если не изменяет память то чтото менял в стартапе - гдето какойто вектор не совпадал. Посмотрите - вдруг поможет. И кстати у Вас огромная задержка в цикле. Для моргания светодиода при корректном стартапе и правльном файле кнфигурации памяти достаточно такого кода Код #include <NXP/iolpc2468.h>
volatile int cnt; int main(void) { // Set io pins for led P0.21 IO0DIR |= (1<<21);
// Endless loop to toggle the red LED P0.21 for(;; ) { IO0CLR = (1<<21); for( cnt = 2000000; cnt; cnt-- ); IO0SET = (1<<21); for( cnt = 2000000; cnt; cnt-- ); } }
Сообщение отредактировал mempfis_ - Feb 13 2011, 06:57
|
|
|
|
|
Feb 13 2011, 09:38
|

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

|
Цитата(atana @ Feb 13 2011, 07:18)  Между P0.16 и землей повесил светодиод, изначально он слабо светится, на ноге 2,3 В. Резистор-то есть? Некритично, конечно, но - нехорошо... Цитата(atana @ Feb 13 2011, 07:18)  Пишу в Keil, шью FlashMagic через COM. Отлаживаю OCD Commander'ом через Wiggler. Я не знаю, что такое OCD Commander (да и вигглер видел только в коробке с барахлом. Остался от человека, который работал у нас года три назад  ). Этот коммандер флеш перезаписывает, или умеет только по шагам ходить? Для человеческой работы всячески рекомендую клон JLink. Например, у того же стартеркита есть. Цитата(atana @ Feb 13 2011, 07:18)  шаги процессора по OCD Commander'у и симулятору кейла не совпадают. А что этот коммандер показывает? Наверное, лучше всего будет скриншот. Цитата(atana @ Feb 13 2011, 07:18)  Startup был предложен кейлом при создании проекта, вносил изменения по настройке клока - результатов никаких. Имеющиеся изменения мне нравятся. Т.е. ошибок там точно нет  Сейчас клок вообще не настраивается, контроллер работает без PLL на внутреннем 4 МГц генераторе. Цитата(atana @ Feb 13 2011, 07:18)  В коде main имеются ошибки? Если нет, то, видимо, напортачил со startup'ом, но не могу разобраться где. Не вижу проблем. Возможные грабли вроде удалось обойти: - ошибка при настройки клока - использование медленного GPIO вместо быстрого Цитата(GetSmart @ Feb 13 2011, 10:24)  atana, контрольная сумма по адресу 0х14 неправильная. Поэтому запускается бутлоадер вместо программы. Маловероятно. Флешмэджик - штука умная, умеет самостоятельно считать контрольную сумму. Хотя, кто такой Macraigor, я не знаю. Но проверить это легко - переставляем джампер "бут" в нормальное положение, запускаем - и флешмэджик по-прежнему может соединиться с платой.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Feb 13 2011, 09:44
|
Группа: Новичок
Сообщений: 9
Регистрация: 28-12-09
Пользователь №: 54 544

|
Цитата(mempfis_ @ Feb 13 2011, 09:53)  Когдато начинал осваивать lpc2468 в KEIL, но быстро перешел на IAR. Прикладываю пример табло которе делел на SK-LPC2468. Если не изменяет память то чтото менял в стартапе - гдето какойто вектор не совпадал. Посмотрите - вдруг поможет. И кстати у Вас огромная задержка в цикле. Для моргания светодиода при корректном стартапе и правльном файле кнфигурации памяти достаточно такого кода Код #include <NXP/iolpc2468.h>
volatile int cnt; int main(void) { // Set io pins for led P0.21 IO0DIR |= (1<<21);
// Endless loop to toggle the red LED P0.21 for(;; ) { IO0CLR = (1<<21); for( cnt = 2000000; cnt; cnt-- ); IO0SET = (1<<21); for( cnt = 2000000; cnt; cnt-- ); } } Проморгался IAR'ом. Причем без Startup'а, только main.c с этим кодом и все. В Keil'е такая фишка не прокатила, не заработало и со Startup'ом из вашего проекта. Теперь возникла некоторая неопределенность: если Startup'а нет, то в каком режиме работает камень, какой сорс клока и какая частота. Но, я так понимаю, настройки PLL можно дополнительно прописывать ручками? Keil, собственно, графическим визардом и привлекал. Задержка да, большая, поменял на 10000 - моргает 2-3 Гц. Но дело было точно не в этом, различие в яркости между тем неопределенным состоянием (кстати, выводы по дефолту в тристэйт инициализируются?) и нормальной логической единицей существенно. Еще у меня параллельно вставал вопрос насчет отработки кода в OCD Commander'е: http://electronix.ru/forum/index.php?showtopic=86424. На ПЛИС с системой на MicroBlaze частенько так делаю, пишу tcl-скрипт, отрабатываю и уже потом пишу C-код. Правда, там это более оправдано из-за большого времени сборки проекта. А тут пока еще синтаксис не освоил.
Сообщение отредактировал atana - Feb 13 2011, 09:45
|
|
|
|
|
Feb 13 2011, 10:00
|
Группа: Новичок
Сообщений: 9
Регистрация: 28-12-09
Пользователь №: 54 544

|
Цитата Резистор-то есть? Некритично, конечно, но - нехорошо... Да, конечно. Цитата Я не знаю, что такое OCD Commander (да и вигглер видел только в коробке с барахлом. Остался от человека, который работал у нас года три назад  ). Этот коммандер флеш перезаписывает, или умеет только по шагам ходить? Для человеческой работы всячески рекомендую клон JLink. Например, у того же стартеркита есть. И шьет и шагает: http://dl.dropbox.com/u/4180373/ocdcom.JPGЭто на примере рабочей програмы, в симуляторе уже даже не смотрел. С ног валюсь, спать надо) MTLink-7 от StarterKit на неделе только приедет, а ковыряться времени только на выходных есть, потому и распаял по-быстрому Wiggler. Цитата Имеющиеся изменения мне нравятся. Т.е. ошибок там точно нет  Сейчас клок вообще не настраивается, контроллер работает без PLL на внутреннем 4 МГц генераторе. Т.е. в случае IAR'а без startup'а так же дефолтный внутренний клок на 4 МГц? Видимо, продолжать буду в IAR.
|
|
|
|
|
Feb 13 2011, 10:37
|

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

|
Цитата(atana @ Feb 13 2011, 13:00)  И шьет и шагает: Никогда не пытался разобраться в работе загрузчика, но, видимо, это он и есть. Кажется, он делает ремап и мы видим его работу где-то с середины. Цитата(atana @ Feb 13 2011, 13:00)  Т.е. в случае IAR'а без startup'а так же дефолтный внутренний клок на 4 МГц? Не знаю, я только в IAR AVR работал. Может там какой-то визард есть. Но даташит вполне однозначен: Цитата Upon power up or any chip reset, the LPC2400 uses the IRC as the clock source. Software may later switch to one of the other available clock sources. Цитата(GetSmart @ Feb 13 2011, 13:00)  Да ладно. Да зуб даю  FlashMagic записывает правильную контрольную сумму на LPC2134, LPC2138, LPC2366 и LPC2368. При этом никаких сообщений не выдаётся, исходный файл не меняется. Верификация также проходит, а вот считывание файла с последующим сравнением внешней утилитой - уже нет. Почему бы ему не сделать то же самое на 2478, я не знаю. В данном случае, скорее всего, мы наблюдаем результаты работы OCD Commander, который не настолько интеллектуален.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Feb 13 2011, 11:42
|
Группа: Новичок
Сообщений: 9
Регистрация: 28-12-09
Пользователь №: 54 544

|
Цитата В данном случае, скорее всего, мы наблюдаем результаты работы OCD Commander, который не настолько интеллектуален. Commander'ом не прошивал ни разу, им я только пытался посмотреть почему не горит светодиод. Пока что не разобрался. Он может сказать текущий адрес проца и состояние регистров. Кстати, в один из разов проц крутился на адресах 0х10-0х14, в то время как симулятор Keil мирно их проскакивал.
Сообщение отредактировал atana - Feb 13 2011, 11:44
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|