Полная версия этой страницы:
Запуск программы
Здравствуйте, уважаемые! Проблема в следующем, после подачи питания на устройство запуск программы происходит не всегда, можно несколько раз дергать питание или ресет для запуска. Кажется, что не происходит переход к пользовательской программе. На ресете висит монитор питания, P0.14 подтянут в питанию. Среда разработки и компилятор - Keil, прошиваю Flash utility v2.2.3. Пользуюсь стандартным Startup. Подскажите, в чем может быть причина? Спасибо.
zltigo
Mar 31 2009, 06:08
1. Узнаем ревизию чипа
2. Читаем errata
Подскажите, где в маркировке сокрыта ревизия?
zltigo
Mar 31 2009, 06:23
Цитата(ylan @ Mar 31 2009, 09:19)

Подскажите, где в маркировке сокрыта ревизия?
Тогда начние с п.2 - читайте errata на предмет маркировки.
Спасибо, нашел. Ревизия D, но до сути не докопался. Поможите, плиз.
Поскольку Flash утилита прошивает, то процессор не виноват.
Проблема в P0.14 и сигнале сброса при включении питания.
Покажите схему.
zltigo
Mar 31 2009, 07:28
Цитата(ylan @ Mar 31 2009, 09:29)

Спасибо, нашел. Ревизия D, но до сути не докопался. Поможите, плиз.
Что "не докопался"? В errata описаны ДВЕ возможные проблемы. Вы точно уверены, что Вы их обходите? Тогда разбирайтесь со своими программами.
Цитата(zltigo @ Mar 31 2009, 11:28)

Что "не докопался"? В errata описаны ДВЕ возможные проблемы. Вы точно уверены, что Вы их обходите? Тогда разбирайтесь со своими программами.
Грубовато, однако.
Человек помощи просит.
zltigo
Mar 31 2009, 08:09
Цитата(etoja @ Mar 31 2009, 10:48)

Грубовато, однако.
Зато, я прочитал, в самом первом сообщении, что P0.14 подтянут к питанию и в отличии от Вас не стал расказывать Автору, что "Проблема в P0.14 ". Заниматься copy-paste из errata не считаю нужным.
Если-же Вы в отличии от меня телепатически поняли, до чего Автор не докопался - можете поделться соображениями на этот счет.
Цитата(zltigo @ Mar 31 2009, 12:09)

Зато, я прочитал, в самом первом сообщении, что P0.14 подтянут к питанию и в отличии от Вас не стал расказывать Автору, что "Проблема в P0.14 ". Заниматься copy-paste из errata не считаю нужным.
Если-же Вы в отличии от меня телепатически поняли, до чего Автор не докопался - можете поделться соображениями на этот счет.
P0.14 может быть подтянут к питанию высокоомным резистором, а нужно поставить низкоомный.
Сигнал сброса может быть короче, чем нужно.
SanvaldYV
Mar 31 2009, 09:21
Цитата(etoja @ Mar 31 2009, 11:27)

P0.14 может быть подтянут к питанию высокоомным резистором, а нужно поставить низкоомный.
Сигнал сброса может быть короче, чем нужно.
Вполне возможно. У меня была подобная ситуация - на P0.14 висело прерывание окончания преобразования от внешнего АЦП. При этом нога была подтянута к питанию через 10 кОм. Время от времени при включении МК оставался в загрузчике. Так что действительно тут надо смотреть схему.
zltigo
Mar 31 2009, 09:27
Цитата(etoja @ Mar 31 2009, 11:27)

P0.14 может быть подтянут к питанию высокоомным резистором, а нужно поставить низкоомный.
Да ну?Полагаете мегаомы вдруг поставлены?
Цитата
Сигнал сброса может быть короче, чем нужно.
Нука, дайте мне ссылочку на ресетчик который МОЖЕТ ВЫДАТЬ импульс сброса короче, нежели это допустимо для LPC.
Цитата(zltigo @ Mar 31 2009, 13:27)

Нука, дайте мне ссылочку на ресетчик который МОЖЕТ ВЫДАТЬ импульс сброса короче, нежели это допустимо для LPC.
Ссылочка: ADM6315xxD1 = 2ms. Для LPC213x при включении питания Reset должен длиться не менее 10ms (user manual UM10120, страница 36).
А вот пример из практики: купил формирователь ресета ADM1818-10ART-RL7 (Analog Devices) - других не было в наличии.
Формирует длительность 100ms при пороге 2.88v
При медленном нарастании напряжения питания (дачные электросети с провалами напряжения) сигнал сброса часто формировался раньше,чем на процессоре устанавливалось напряжение питания 3.00v
Отвлекся, извините... На P0.14 22кОм. Монитор питания дает задержку по цепи ресет ~175милисекунд
По ERRATам - все корректно
Цитата(ylan @ Mar 31 2009, 15:09)

Отвлекся, извините... На P0.14 22кОм. Монитор питания дает задержку по цепи ресет ~175милисекунд
По ERRATам - все корректно
Поставьте на P0.14 3кОм (подтягивающий к питанию) и пропаяйте все вывода процессора.
Керамические конденсаторы 1uF должны быть установлены рядом с соответствующими выводами питания процессора.
Напряжение питания должно быть 3.3v ... 3.4v (допустимо 3.00v ... 3.60v).
Кварцевый резонатор должен располагаться рядом с соответствующими выводами процессора, обязательны два конденсатора 22pF на землю.
Если монитор питания имеет тип "открытый коллектор", то нужен и подтягивающий резистор.
Перед включением питания платы отсоедините от неё кабели JTAG и RS232, так как они могут не дать ей правильно стартовать.
Все именно так, кроме емкостей по питанию, они стоят 0.1мкФ. 3 кОм подтяжки ничего дал.
SanvaldYV
Mar 31 2009, 12:17
А что собственно в программе? Как инициализируете PLL, включаете ли Watchdog?
Вы уверены, что МК "не доходит" до вашей программы? Если он остается в загрузчике, то можно послать ему через терминал "?", в ответ должно придти "syncronized".
инициализация выглядит так:
void CPUinit(void)
{
VICProtection = 0;
VICIntEnClr = 0xffffffff;
PLLCFG = 0x00000003; // Set multiplier and divider of PLL to give 60.00 Mhz
PLLCON = 0x00000003; // Enable the PLL
PLLFEED = 0x000000AA; // Update PLL registers with feed sequence
PLLFEED = 0x00000055;
while (!(PLLSTAT & 0x400))
{
;
}
PLLCON = 0x00000003; // Connect the PLL
PLLFEED = 0x000000AA; //Update PLL registers
PLLFEED = 0x00000055;
MAMTIM = 0x00000003; //МАМТИМ - 3 периода для выборки
MAMCR = 0x00000001; //частичное использование акселератора
VPBDIV = 0x00000001; //Set the VLSI peripheral bus to 58.987 Mhz
PINSEL0=0x0;
PINSEL1=0x0;
IO0DIR = 0xE67C3DC2;
IO1DIR = 0x8F870000;
IO0SET = 0x82000400;
IO1SET = 0;
IO1SET = FACT_1CH;
}
Эмулятора нет, поэтому могу только догадываться, что пользовательская программа не начинает выполняться. Увеличение номинала емкостей ничего не дало.
Спасибо за участие.
Судя по всему PLL неправильно настраиваете - Fcco слишком низкая получается.
Исходя из ваших данных M=4, P=1 (кварц я так понимаю 15MHz) - хотите получить 60MHz
Fcco=Fosc * 2 * M * P = 120MHz. А надо в диапазоне 156MHz - 320MHz
Цитата(ylan @ Mar 31 2009, 08:54)

Проблема в следующем, после подачи питания на устройство запуск программы происходит не всегда...
Если запуск иногда происходит, значит вы неправильно запрограммировали PLL и внутренняя тактовая частота выше допустимой.
Кварц 14.745. Дебагер показывает частоту~ 58 мег.
SanvaldYV
Mar 31 2009, 13:25
ylan, как уже сказал Nixon, у Вас похоже неправильно инициализирован PLL, если кварц 15МГц (как можно предположить, или 14745600), то тогда должно быть М = 4, а Р = 2, чтобы Fcco попадало в диапазон 156-320 МГц.
Nixon, спасибо! Вы оказались правы. Спасибо всем отклинувшимся!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.