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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Помогите начать с IAR, Помогите начать с IAR
Guest_Гость_*
сообщение Mar 29 2007, 19:37
Сообщение #31





Guests






Цитата(Guest_Виктор_* @ Mar 3 2006, 17:06) *
Никак не могу установить iar ew 4.11. Клизма есть. Сгенерированные коды менеджер ключей воспринимает и пишет, что всё о'кей, но компилятор при построении проекта выдаёт 'fatal error. there is not valid license". Для evaluation версии я правда подставлял коды не те, которые мне прислали (я вообщ не посылал запрос), а нашёл на каком-то форуме. Может быть проблема в этом? Ошибка выдавалась и на evaluation версии. Может быть, у кого-нибудь есть хороший дистрибутив какой-нибудь версии и evaluation коды для него?


Я сталкивался уже с проблемой установки IAR'а и успешно ее решил тупым переводом времени. Вообще я только начинаю с ним работать и у меня версия 2.28А. (старовато, но на этом писалась программа, которую мне необходимо переделать, а использовать более новую версию боюсь, да и нет ее у меня). У меня сейчас возник другой вопрос. Мне нужно отладить программу, написанную в Си, а С-Spy соглашается показывать ее только в ассемблере. Есть ли какой-нибудь способ просмотреть пошаговое выполнение программы на Сях?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 30 2007, 10:04
Сообщение #32


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



В опциях компилятора надо установить генерирование отладочной информации.
В опциях линкера - установить формат выходного файла debug или ubrof, расширение при этом будет d90 или dbg.
Go to the top of the page
 
+Quote Post
aspID
сообщение Sep 7 2007, 05:49
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



существует ли возможность в IAR через C-Cpy отлаживать USART?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 7 2007, 05:58
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(aspID @ Sep 7 2007, 08:49) *
существует ли возможность в IAR через C-Cpy отлаживать USART?

Конечно, все доступно.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
aspID
сообщение Sep 7 2007, 06:36
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



а где можно прочитать про это? В руководстве нашел про случай с использованием stdin, stdout. Но использую фрагмент предложенный в даташите
Код
void USART_Transmit( char & data )
{
  PORTD |= (1 << PD3);
  /* Wait for empty transmit buffer */
  while ( !( UCSRA & (1<<UDRE)) );
  /* Put data into buffer, sends the data */
  UDR = data;
};


Сообщение отредактировал aspID - Sep 7 2007, 06:37
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 7 2007, 07:04
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(aspID @ Sep 7 2007, 09:36) *
а где можно прочитать про это? В руководстве нашел про случай с использованием stdin, stdout. Но использую фрагмент предложенный в даташите...

Извините, про что ЭТО? Я немного перестал понимать, о чем речь.
У Вас данные не отправляются в порт?
Можно поставить точку останова и убедиться, что контроллер выполняет эту команду.
Про конфигурацию порта и прерываний, я думаю, Вы знаете.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
aspID
сообщение Sep 7 2007, 07:13
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Цитата
про что ЭТО?

Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные?
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 7 2007, 07:22
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(aspID @ Sep 7 2007, 13:13) *
Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные?

Поставьте брейкпоинт прямо на команду "пихания данных в регистр". Если USART сконфигурирован верно, то после выполнения этой команды очередной символ уйдет в линию.
Go to the top of the page
 
+Quote Post
aspID
сообщение Sep 7 2007, 07:30
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



симовол уходит без проблем, но при этом не выставляется флаг TXC и при попытке передачи следующего стоим на
Код
while ( !( UCSRA & (1<<UDRE)) );
до тех пор, пока руками 1 не поставить. После передачи пары строк забываешь, чего хотел... 07.gif
Go to the top of the page
 
+Quote Post
Unknown_User
сообщение Sep 27 2007, 04:43
Сообщение #40





Группа: Новичок
Сообщений: 11
Регистрация: 9-09-07
Пользователь №: 30 404



У меня такой вопрос: почему у меня, если поставить галочку General Options->System->Initialize unused interrupt vectors with RETI instructions не работает прерывание по переполнению TIMER3 ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 27 2007, 09:34
Сообщение #41


Гуру
******

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



Цитата(Unknown_User @ Sep 27 2007, 07:43) *
У меня такой вопрос: почему
Недостаточно информации. А без галочки обработчик работает? Перестает работать только этот обработчик или вся остальная программа тоже? В любом случае ответ один - потому что у вас где-то ошибка в программе. Предполагаю, что разрешается какое-то из прерываний, для которого не прописан обработчик. Попав в него выполняется RETI, но флаг не снимается (например, прерывание АЦП, UDRE, RXC и подобные), и после reti выполняется вход в этот обработчик снова, программа циклится. А таймер3 имеет приоритет ниже и до него очередь не доходит. Или вектор на ваш обработчик прерывания от TIMER3 расположен по неправильному адресу. И если раньше при переходе по вектору процессор натыкался на опкод 0xFFFF, исполнял его и попадал таки в ваш обработчик, то теперь он сразу попадает на RETI и до вашего обработчика не добирается.
P.S. На всяки случай - когда вы разберетесь, в чем дело - напишите пожалуйста сюда, чтобы другие не наступали на такие же грабли или, если все же наступят, найдя это сообщение могли в комплекте получить и ответ. Даже если ответ будет из серии "сам дурак".


--------------------
На любой вопрос даю любой ответ
"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
Unknown_User
сообщение Sep 28 2007, 07:28
Сообщение #42





Группа: Новичок
Сообщений: 11
Регистрация: 9-09-07
Пользователь №: 30 404



to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 28 2007, 20:28
Сообщение #43


Гуру
******

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



Цитата(Unknown_User @ Sep 28 2007, 10:28) *
to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу.
Я бы написал на неиспользуемые вектора ловушки и дергал в них в цикле разными свободными ногами. Или если свободная нога одна, то в разных ловушках с разной частотой а еще нагляднее - скважностью. Таким образом определил бы, не попадает ли программа в какой-либо из неиспользуемых векторов и если попадает - то в какой. Дальше смотрел бы в исходнике работу с соотвествующей периферией и разбирался бы, почему вызывается прерывание. Ибо если такое случается - это вылезет каким-нибудь очень неприятным глюком в самый неподходящий момент. Это даже очень хорошо, что вы обнаружили такое непонятное поведение сами и сейчас, а не заказчик во время приемо-сдаточных испытанийsmile3046.gif Но если вы не локализуете ее, может случиться такое: maniac.gif


--------------------
На любой вопрос даю любой ответ
"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
Unknown_User
сообщение Oct 1 2007, 10:02
Сообщение #44





Группа: Новичок
Сообщений: 11
Регистрация: 9-09-07
Пользователь №: 30 404



Сегодня проверил - и правда программа заходит, как минимум, ещё в одно прерывание, которое я запрещал. Видимо "просто" в результате какого либо бага моя программа нечаянно его разрешает. Будем копать дальше.
Сергей Борщ, спасибо за совет )).
Go to the top of the page
 
+Quote Post
Unknown_User
сообщение Oct 3 2007, 10:20
Сообщение #45





Группа: Новичок
Сообщений: 11
Регистрация: 9-09-07
Пользователь №: 30 404



Никак не могу найти способ доступа из функций, написаных на Си, к переменным, размещёным в области кода программы.
То есть, есть массив, объявленый как :
__flash char SomeArray[] = { 1, 2 };
и функция:
void DoSmth( char *Arr ){
}
Что нужно сделать, чтобы, код DoSmth( SomeArray ); нормально работал ?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 01:41
Рейтинг@Mail.ru


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