Гость Гость 29 марта, 2007 Опубликовано 29 марта, 2007 · Жалоба Никак не могу установить iar ew 4.11. Клизма есть. Сгенерированные коды менеджер ключей воспринимает и пишет, что всё о'кей, но компилятор при построении проекта выдаёт 'fatal error. there is not valid license". Для evaluation версии я правда подставлял коды не те, которые мне прислали (я вообщ не посылал запрос), а нашёл на каком-то форуме. Может быть проблема в этом? Ошибка выдавалась и на evaluation версии. Может быть, у кого-нибудь есть хороший дистрибутив какой-нибудь версии и evaluation коды для него? Я сталкивался уже с проблемой установки IAR'а и успешно ее решил тупым переводом времени. Вообще я только начинаю с ним работать и у меня версия 2.28А. (старовато, но на этом писалась программа, которую мне необходимо переделать, а использовать более новую версию боюсь, да и нет ее у меня). У меня сейчас возник другой вопрос. Мне нужно отладить программу, написанную в Си, а С-Spy соглашается показывать ее только в ассемблере. Есть ли какой-нибудь способ просмотреть пошаговое выполнение программы на Сях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 30 марта, 2007 Опубликовано 30 марта, 2007 · Жалоба В опциях компилятора надо установить генерирование отладочной информации. В опциях линкера - установить формат выходного файла debug или ubrof, расширение при этом будет d90 или dbg. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gretis 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба существует ли возможность в IAR через C-Cpy отлаживать USART? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба существует ли возможность в IAR через C-Cpy отлаживать USART? Конечно, все доступно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gretis 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 (изменено) · Жалоба а где можно прочитать про это? В руководстве нашел про случай с использованием 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; }; Изменено 7 сентября, 2007 пользователем aspID Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба а где можно прочитать про это? В руководстве нашел про случай с использованием stdin, stdout. Но использую фрагмент предложенный в даташите... Извините, про что ЭТО? Я немного перестал понимать, о чем речь. У Вас данные не отправляются в порт? Можно поставить точку останова и убедиться, что контроллер выполняет эту команду. Про конфигурацию порта и прерываний, я думаю, Вы знаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gretis 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба про что ЭТО? Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные? Поставьте брейкпоинт прямо на команду "пихания данных в регистр". Если USART сконфигурирован верно, то после выполнения этой команды очередной символ уйдет в линию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gretis 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба симовол уходит без проблем, но при этом не выставляется флаг TXC и при попытке передачи следующего стоим на while ( !( UCSRA & (1<<UDRE)) ); до тех пор, пока руками 1 не поставить. После передачи пары строк забываешь, чего хотел... :07: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Unknown_Usr 0 27 сентября, 2007 Опубликовано 27 сентября, 2007 · Жалоба У меня такой вопрос: почему у меня, если поставить галочку General Options->System->Initialize unused interrupt vectors with RETI instructions не работает прерывание по переполнению TIMER3 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 27 сентября, 2007 Опубликовано 27 сентября, 2007 · Жалоба У меня такой вопрос: почемуНедостаточно информации. А без галочки обработчик работает? Перестает работать только этот обработчик или вся остальная программа тоже? В любом случае ответ один - потому что у вас где-то ошибка в программе. Предполагаю, что разрешается какое-то из прерываний, для которого не прописан обработчик. Попав в него выполняется RETI, но флаг не снимается (например, прерывание АЦП, UDRE, RXC и подобные), и после reti выполняется вход в этот обработчик снова, программа циклится. А таймер3 имеет приоритет ниже и до него очередь не доходит. Или вектор на ваш обработчик прерывания от TIMER3 расположен по неправильному адресу. И если раньше при переходе по вектору процессор натыкался на опкод 0xFFFF, исполнял его и попадал таки в ваш обработчик, то теперь он сразу попадает на RETI и до вашего обработчика не добирается. P.S. На всяки случай - когда вы разберетесь, в чем дело - напишите пожалуйста сюда, чтобы другие не наступали на такие же грабли или, если все же наступят, найдя это сообщение могли в комплекте получить и ответ. Даже если ответ будет из серии "сам дурак". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Unknown_Usr 0 28 сентября, 2007 Опубликовано 28 сентября, 2007 · Жалоба to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 28 сентября, 2007 Опубликовано 28 сентября, 2007 · Жалоба to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу.Я бы написал на неиспользуемые вектора ловушки и дергал в них в цикле разными свободными ногами. Или если свободная нога одна, то в разных ловушках с разной частотой а еще нагляднее - скважностью. Таким образом определил бы, не попадает ли программа в какой-либо из неиспользуемых векторов и если попадает - то в какой. Дальше смотрел бы в исходнике работу с соотвествующей периферией и разбирался бы, почему вызывается прерывание. Ибо если такое случается - это вылезет каким-нибудь очень неприятным глюком в самый неподходящий момент. Это даже очень хорошо, что вы обнаружили такое непонятное поведение сами и сейчас, а не заказчик во время приемо-сдаточных испытаний:smile3046: Но если вы не локализуете ее, может случиться такое: :maniac: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Unknown_Usr 0 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Сегодня проверил - и правда программа заходит, как минимум, ещё в одно прерывание, которое я запрещал. Видимо "просто" в результате какого либо бага моя программа нечаянно его разрешает. Будем копать дальше. Сергей Борщ, спасибо за совет )). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Unknown_Usr 0 3 октября, 2007 Опубликовано 3 октября, 2007 · Жалоба Никак не могу найти способ доступа из функций, написаных на Си, к переменным, размещёным в области кода программы. То есть, есть массив, объявленый как : __flash char SomeArray[] = { 1, 2 }; и функция: void DoSmth( char *Arr ){ } Что нужно сделать, чтобы, код DoSmth( SomeArray ); нормально работал ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться