реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADUC7020 не запускается
Eugeny25
сообщение Jun 17 2009, 21:36
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 17-03-09
Пользователь №: 46 212



Разжился я маленькой макетной платой от AD,
на ней стоит только ADUC7020 стабилизатор на 3,3В, две кнопки, два светодиода и еще несколько конденсаторов.
Схема тут:
http://www.analog.com/static/imported-file...7020_adap_a.pdf

Чтобы начать, слепил маленькую програмку, – она должна была мигать светодиодом, подключенным к порту P4.2.
Текст на СИ вот такой:

#include <aduc7020.h>

int main (void)
{
unsigned long i; // Delay var

GP4DAT = 0x04000000; // P4.2 defined as Output
while (1) //Loop forever
{
GP4DAT ^= 0x00040000; // Toggle P4.2 LED
for (i = 0; i < 100000; i++);
}
}

Оттранслировал все это Кейл-ом, и загрузил ARMWSD.
Загрузка проходит, но светодиод не мигает :-[,
такое впечатление, что до исполнения сишного кода дело не доходит.
В качестве пролога я использовал стандартный файл ADuC702x.s, поставляемый вместе с кейлом.

Вопрос собственно в следующем:
1) Может ли быть так, что какое-нибудь прерывание или исключительная ситуация
мешает процессору дойти до исполнения кода, написанного на Си
(например нужно какую-нибудь ногу подтянуть к питанию (предположим TMS или TDI, чего на плате не сделано) или еще что-нибудь в этом же роде)
2) Может у кого-нибудь есть HEX файл, который заведомо мигает этим светодиодом на ADuC7020, а я что-нибудь неправильно странслировал?
3) Или все-таки мне достался битый процессор, хотя он явно загружается, и после нажатия кнопки RUN в ARMWSD,
тот пишет running. Кроме того MRST, ведет себя адекватно и после появления питания или отпускания Reset-a переходит c правильной задержкой в 1.
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 18 2009, 07:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Вы подумали какую паузу обеспечивает цикл до ста тысяч при быстродействии 20 MIPS ?

Для светодиода команда чтение-модификация-запись может не изменять состояние вывода микросхемы. Почему? - Подумайте сами и посмотрите осциллографом.
Go to the top of the page
 
+Quote Post
Eugeny25
сообщение Jun 18 2009, 09:28
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 17-03-09
Пользователь №: 46 212



Цитата(etoja @ Jun 18 2009, 11:33) *
Вы подумали какую паузу обеспечивает цикл до ста тысяч при быстродействии 20 MIPS ?

Для светодиода команда чтение-модификация-запись может не изменять состояние вывода микросхемы. Почему? - Подумайте сами и посмотрите осциллографом.



20 MIPS? даже если в цикле одна команда то получится 200Гц для светодиода это не предел smile.gif
Осциллографом я тоже смотрел - вывод в 3 состоянии.
Или Вы думаете, что цикл слишком длинный (т.е. задержка слишком большая) и я не могу дождаться когда она кончится, так нет - я пробовал начинать и с выключенного светодиода и с включенного.

Все равно спасибо, хоть кто-то ответил. smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 18 2009, 11:13
Сообщение #4


Гуру
******

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



1)Надо смотреть листинг.
2)Такой цикл компилятор скорее всего выбросит - с его точки зрения он ничего полезного не делает. Чтобы обойти это, объявите i с квалификатором volatile.
3)Насколько я помню, никаких дополнительных сигналов кроме сброса подавать не надо (работал с 7021).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Eugeny25
сообщение Jun 18 2009, 12:45
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 17-03-09
Пользователь №: 46 212



Цитата(Сергей Борщ @ Jun 18 2009, 15:13) *
1)Надо смотреть листинг.
2)Такой цикл компилятор скорее всего выбросит - с его точки зрения он ничего полезного не делает. Чтобы обойти это, объявите i с квалификатором volatile.
3)Насколько я помню, никаких дополнительных сигналов кроме сброса подавать не надо (работал с 7021).


Cпасибо,
Но проблема не в том, что светодиод мигает слишком быстро, а в том, что нога Р4.2 в третьем состоянии, другими словами светодиод не только не мигает, но и не светится, да и осциллографом импульсов не видно. Даже кусок без цикла While не зажигает светодиод sad.gif
Ни в случае GP4DAT = 0x04000000;, ни в случае GP4DAT = 0x04040000; от отчаяния попробовал даже
значения 0хFF000000 и 0хFFFF0000...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 18 2009, 13:28
Сообщение #6


Гуру
******

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



Цитата(Eugeny25 @ Jun 18 2009, 15:45) *
Но проблема не в том, что светодиод мигает слишком быстро, а в том, что нога Р4.2 в третьем состоянии
Пункт 1. Надо смотреть листинг. Весь. Пройти его глазами или в симуляторе Кейла от вектора Reset до цикла.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016