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

Тогда начние с п.2 - читайте errata на предмет маркировки.
ylan
Спасибо, нашел. Ревизия D, но до сути не докопался. Поможите, плиз.
etoja
Поскольку Flash утилита прошивает, то процессор не виноват.
Проблема в P0.14 и сигнале сброса при включении питания.

Покажите схему.
zltigo
Цитата(ylan @ Mar 31 2009, 09:29) *
Спасибо, нашел. Ревизия D, но до сути не докопался. Поможите, плиз.

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


Грубовато, однако.
Человек помощи просит.
zltigo
Цитата(etoja @ Mar 31 2009, 10:48) *
Грубовато, однако.

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


P0.14 может быть подтянут к питанию высокоомным резистором, а нужно поставить низкоомный.
Сигнал сброса может быть короче, чем нужно.
SanvaldYV
Цитата(etoja @ Mar 31 2009, 11:27) *
P0.14 может быть подтянут к питанию высокоомным резистором, а нужно поставить низкоомный.
Сигнал сброса может быть короче, чем нужно.


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

Да ну?Полагаете мегаомы вдруг поставлены?
Цитата
Сигнал сброса может быть короче, чем нужно.

Нука, дайте мне ссылочку на ресетчик который МОЖЕТ ВЫДАТЬ импульс сброса короче, нежели это допустимо для LPC.
etoja
Цитата(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
ylan
Отвлекся, извините... На P0.14 22кОм. Монитор питания дает задержку по цепи ресет ~175милисекунд

По ERRATам - все корректно
etoja
Цитата(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, так как они могут не дать ей правильно стартовать.
ylan
Все именно так, кроме емкостей по питанию, они стоят 0.1мкФ. 3 кОм подтяжки ничего дал.
SanvaldYV
А что собственно в программе? Как инициализируете PLL, включаете ли Watchdog?
Вы уверены, что МК "не доходит" до вашей программы? Если он остается в загрузчике, то можно послать ему через терминал "?", в ответ должно придти "syncronized".
ylan
инициализация выглядит так:
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;
}
Эмулятора нет, поэтому могу только догадываться, что пользовательская программа не начинает выполняться. Увеличение номинала емкостей ничего не дало.
Спасибо за участие.
Nixon
Судя по всему PLL неправильно настраиваете - Fcco слишком низкая получается.
Исходя из ваших данных M=4, P=1 (кварц я так понимаю 15MHz) - хотите получить 60MHz
Fcco=Fosc * 2 * M * P = 120MHz. А надо в диапазоне 156MHz - 320MHz
etoja
Цитата(ylan @ Mar 31 2009, 08:54) *
Проблема в следующем, после подачи питания на устройство запуск программы происходит не всегда...


Если запуск иногда происходит, значит вы неправильно запрограммировали PLL и внутренняя тактовая частота выше допустимой.
ylan
Кварц 14.745. Дебагер показывает частоту~ 58 мег.
SanvaldYV
ylan, как уже сказал Nixon, у Вас похоже неправильно инициализирован PLL, если кварц 15МГц (как можно предположить, или 14745600), то тогда должно быть М = 4, а Р = 2, чтобы Fcco попадало в диапазон 156-320 МГц.
ylan
Nixon, спасибо! Вы оказались правы. Спасибо всем отклинувшимся!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.