Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбираемся с IAR, Нестыковка с AVR studio 
:(
    Опции темы
jimmi
Дата 15.7.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.9.2004

Репутация: 5
Всего: 5



smile

Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:51
PM MAIL   Вверх
PILOT
Дата 17.7.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



У тебя что=то не так.
Вот во что у меня твой код дизассемблировался:
Код

@0000002A: delay
---- e:\work\Ýëåêòðîíèêà\Ïðîåêòû\tmp_prj\main.c ---------------------------------------------------
4:        for (unsigned char i = 0xff; i != 0; i--);
+0000002A:   EF0F        SER     R16              Set Register
+0000002B:   C001        RJMP    PC+0x0002        Relative jump
4:        for (unsigned char i = 0xff; i != 0; i--);
+0000002C:   950A        DEC     R16              Decrement
4:        for (unsigned char i = 0xff; i != 0; i--);
+0000002D:   2300        TST     R16              Test for Zero or Minus
+0000002E:   F7E9        BRNE    PC-0x02          Branch if not equal
5:        }
+0000002F:   9508        RET                      Subroutine return



--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Guest
Дата 19.7.2005, 17:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А у меня так дизассемблируется.
АврСтудия последняя. IAR 411a, 30 дней еще не прошло.
Формат hex intel standart. Вместо процедуры задержки один return.
Прикольно.

@00000000: _..X_HUGE_HEAP_SIZE
+00000000: 940C0035 JMP 0x00000035 Jump
+00000002: 9518 RETI Interrupt return
+00000003: 9518 RETI Interrupt return
+00000004: 9518 RETI Interrupt return
+00000005: 9518 RETI Interrupt return
+00000006: 9518 RETI Interrupt return
+00000007: 9518 RETI Interrupt return
@00000008: _..X_HEAP_SIZE
+00000008: 9518 RETI Interrupt return
+00000009: 9518 RETI Interrupt return
+0000000A: 9518 RETI Interrupt return
+0000000B: 9518 RETI Interrupt return
+0000000C: 9518 RETI Interrupt return
+0000000D: 9518 RETI Interrupt return
+0000000E: 9518 RETI Interrupt return
+0000000F: 9518 RETI Interrupt return
@00000010: _..X_RSTACK_SIZE
+00000010: 9518 RETI Interrupt return
+00000011: 9518 RETI Interrupt return
+00000012: 9518 RETI Interrupt return
+00000013: 9518 RETI Interrupt return
+00000014: 9518 RETI Interrupt return
+00000015: 9518 RETI Interrupt return
+00000016: 9518 RETI Interrupt return
+00000017: 9518 RETI Interrupt return
+00000018: 9518 RETI Interrupt return
+00000019: 9518 RETI Interrupt return
+0000001A: 9518 RETI Interrupt return
+0000001B: 9518 RETI Interrupt return
+0000001C: 9518 RETI Interrupt return
+0000001D: 9518 RETI Interrupt return
+0000001E: 9518 RETI Interrupt return
+0000001F: 9518 RETI Interrupt return
+00000020: 9518 RETI Interrupt return
+00000021: 9518 RETI Interrupt return
+00000022: 9518 RETI Interrupt return
+00000023: 9518 RETI Interrupt return
+00000024: 9518 RETI Interrupt return
+00000025: 9518 RETI Interrupt return
+00000026: 9518 RETI Interrupt return
+00000027: 9518 RETI Interrupt return
+00000028: 9518 RETI Interrupt return
+00000029: 9518 RETI Interrupt return
@0000002A: _..X_FLASH_BASE
---- d:\temp\prj\main.c -----------------------------------------------------------------
8: }
+0000002A: 9508 RET Subroutine return
@0000002B: main
11: DDRA = 0x01;
+0000002B: E001 LDI R16,0x01 Load immediate
+0000002C: BB0A OUT 0x1A,R16 Out to I/O location
14: PORTA|= (1<<0); // 1 на PA.0
+0000002D: 9AD8 SBI 0x1B,0 Set bit in I/O register
15: delay();
+0000002E: DFFB RCALL PC-0x0004 Relative call subroutine
16: PORTA&=~(1<<0); // 0 на PA.0
+0000002F: 98D8 CBI 0x1B,0 Clear bit in I/O register
@00000030: _..X_RSTACK_BASE
17: delay();
+00000030: DFF9 RCALL PC-0x0006 Relative call subroutine
+00000031: CFFB RJMP PC-0x0004 Relative jump
@00000032: ?C_FUNCALL
---- No Source ------------------------------------------------------------------------------------
+00000032: 0000 NOP No operation
@00000033: __exit
+00000033: 9588 SLEEP Sleep
+00000034: CFFE RJMP PC-0x0001 Relative jump
@00000035: ?C_STARTUP
+00000035: E90F LDI R16,0x9F Load immediate
+00000036: BF0D OUT 0x3D,R16 Out to I/O location
+00000037: E000 LDI R16,0x00 Load immediate
+00000038: BF0E OUT 0x3E,R16 Out to I/O location
+00000039: E8C0 LDI R28,0x80 Load immediate
+0000003A: E0D0 LDI R29,0x00 Load immediate
@0000003B: ?call_low_level_init
+0000003B: 940E0043 CALL 0x00000043 Call subroutine
@0000003D: ?cstartup_call_main
+0000003D: 940E002B CALL 0x0000002B Call subroutine
+0000003F: 940E0000 CALL 0x00000000 Call subroutine
+00000041: 940C0032 JMP 0x00000032 Jump
@00000043: __low_level_init
+00000043: E001 LDI R16,0x01 Load immediate
+00000044: 9508 RET
  Вверх
PILOT
Дата 19.7.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Нетрудно заметить что код правильный и прыгает на STARTUP, а затем на main (35ый адрес).

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
jimmi
Дата 19.7.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.9.2004

Репутация: 5
Всего: 5



smile

Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:52
PM MAIL   Вверх
PILOT
Дата 19.7.2005, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Всегда при отладке должен быть none, т.к. в противном случае компилятор начинает принимать такие решения, которых вы от него не требовали, а иногда работать нестабильно.
Я вообще стараюсь не использовать оптимизацию, а стараться написать с предсказанием того во что это откомпилируется.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
jimmi
Дата 26.7.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.9.2004

Репутация: 5
Всего: 5



smile

Это сообщение отредактировал(а) jimmi - 7.9.2005, 16:51
PM MAIL   Вверх
cardinal
Дата 26.7.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(jimmi @ 26.7.2005, 13:58)
Переписал так, теперь светодиод должен зажигаться на 10 сек и гаснуть тоже на 10 сек.

А он до сих пор не так работает как ты хочешь?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
PILOT
Дата 26.7.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Он работает.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
cardinal
Дата 26.7.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Ну тогда ясно. smile

Я задержку кстати через прерывания делал, а потом по простому
Код

void WaitXms(int iWait)
{
   for(iCtr1ms_g = iWait; iCtr1ms_g > 0;);


И не надо говорить, что это бесконечный цикл smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Гость_Calypso
Дата 9.9.2005, 18:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ребята. IAR - это кака. Не хочу навязывать свое мнение, конечно.
Юзайте GNU, юзайте CodeVision.
  Вверх
PILOT
Дата 17.9.2005, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Обоснуй...


СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Pluto5C
Дата 19.9.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.9.2005

Репутация: нет
Всего: нет



Цитата(PILOT @ 17.9.2005, 22:57)
Обоснуй...


СУВ.

Обосновываю.

Столкнувшись с проблемой разработки ПО, так или иначе приходится выбирать - на чем писать.
Я работал с IAR для PIC и для AVR. Причем, версии пробовал разные и для AVR, и для PIC.
Что не понравилось, так это очень криво реализованная оптимизация. Так, даже при выключенной опт. программа функционировала некорректно. Доходило до того, что в отладчике я не находил ассемблерных инструкций, соответствующих конкретному оператору на C: то есть он просто самовольно выбрасывает куски кода и даже не на максимальном уровне оптимизации.
Если есть желание бороться с компилятором, а не заниматься написанием программы - выбирайте IAR. Тем не менее наш главный инженер пишет именно на IAR для AVR. Тратит уйму времени на отладку ПО, ибо JTAG не имеем.
Просто предлагаю начинающим использовать CodeVisionAVR. Из минусов можно отметить то, что "wizard" не заставляет людей еще неопытных думать. Все делает за них. В CodeVision я написал довольно много программ. Даже сравнивать не могу с IAR.

Очень хорошо зарекомендовала себя среда WinAVR. Настоятельно рекомендую. Все что основано на GNU - работает практически безупречно.

Что касается PIC-контроллеров. С IAR для PIC проблем гораздо меньше. Если не устроит, попробуйте HT-PIC. Отличный компилятор, хотя тоже имеет свои заморочки.
Ну а для MSP430 - выриантов не вижу - IAR )))

Есть еще один момент. Если вам приходится работать, к примеру, с AVR, PIC, MSP430, очень хорошо бы юзать одну среду разработки как IAR. Геморойно, но зато все одинаково.
PM MAIL   Вверх
ManiaK
Дата 19.9.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Pluto5C спасибо за информацию!..
PM MAIL WWW   Вверх
PILOT
Дата 19.9.2005, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Pluto5C
Ну что тут скажешь...
Борьба с компилятором вместо разработки это грубовато, но компилятор меня устраивает полностью, он схватывает моменты которые другие компиляторы не могут нормально отработать (например наследование классовsmile ). Возможно классы это перебор, но была задачка которую в лоб было долго решать, вот и ...
И еще, компилятор весьма грамотный и не буде пихать не нужный код (например инициализацию переменных которым через 3 строчки после инициализации опять присваивают уже новые значения), этот пример я лично показывал одному из своих подчиненных который не мог понять куда делся ассемблерный кусок.
Скажу так: мне ИАР нравится даже больше, чем Кейл. smile И уж тем более ИАР АВР версии более 4, где наконец-то изменили интерфейс, который до этого был ооочень неудобным.
Оптимизацией не пользуюсь, стараюсь сразу все сделать грамотно (классы не в счет, как и говорил - лень было думать, зато крупный проект был сделан за считанные дни smile )

И кстати, ИАР для АВР поддерживает ЭМУЛЯТОР JTAG (правда пока только через COM порт, но этого вполне достаточно). А если возникают проблемы то всегда есть URBOF8 и AVR-Studio которая прекрасно отлаживает Си++ проекты как с симулятором, так и со всеми поддерживаемыми эмуляторами.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1173 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.