Баг IAR AVR EC++ 3.20C

Hi All,

По оптимизации кода на размер IAR 3.20 получается где-то на 5...10% лучше, чем 2.28. Однако в нем есть баги.

void RTC::I2C_Stop() { _WDR(); TWCR = 0x94; while(TWCR&0x10); // Wait until TWSTOP is cleared }

25 void RTC::I2C_Stop() \ ??I2C_Stop: 26 { 27 _WDR(); \ 00000000 95A8 WDR 28 TWCR = 0x94; \ 00000002 E904 LDI R16,148 \ 00000004 93000074 STS 116,R16 29 while(TWCR&0x10); // Wait until TWSTOP is cleared \ ??I2C_Stop_1: \ 00000008 CFFF RJMP ??I2C_Stop_1 30 }

Такие дела :( VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Reply to
Vladimir Vassilevsky
Loading thread data ...

Привет Vladimir!

14 Oct 04 17:49, Vladimir Vassilevsky писал All:

VV> TWCR = 0x94; VV> while(TWCR&0x10); // Wait until TWSTOP is cleared

VV> \ 00000002 E904 LDI R16,148 VV> \ 00000004 93000074 STS 116,R16 VV> 29 while(TWCR&0x10); // Wait until TWSTOP is cleared VV> \ ??I2C_Stop_1: VV> \ 00000008 CFFF RJMP ??I2C_Stop_1

Объявление TWCR можно увидеть?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок вареный с вареньем.

Reply to
Alex Mogilnikov

Thu Oct 14 2004 23:34, Alex Mogilnikov wrote to Vladimir Vassilevsky:

VV>> TWCR = 0x94; VV>> while(TWCR&0x10); // Wait until TWSTOP is cleared

VV>> \ 00000002 E904 LDI R16,148 VV>> \ 00000004 93000074 STS 116,R16 VV>> 29 while(TWCR&0x10); // Wait until TWSTOP is cleared VV>> \ ??I2C_Stop_1: VV>> \ 00000008 CFFF RJMP ??I2C_Stop_1

AM> Объявление TWCR можно увидеть?

См. штатные файлы iom128.h и iomacro.h из комплекта. Увы, там все правильно описано.

Примечание: если писать так, как рекомендуют в мануале: while(TWCR_TWSTO), то получается точно такой же неправильный результат.

Лечение: локально отключить оптимизацию c помощью прагмы.

VLV

P.S. Это давно отлаженный код, который успешно собирался всеми предыдущими версиями.

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Reply to
Vladimir Vassilevsky

Привет Vladimir!

15 Oct 04 00:57, Vladimir Vassilevsky писал Alex Mogilnikov:

AM>> Объявление TWCR можно увидеть?

VV> См. штатные файлы iom128.h и iomacro.h из комплекта. Увы, там все VV> правильно описано.

Право же, не хочется покупать сабж ради того чтобы посмотреть декларацию символа... :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... О сколько нам открытий чудных готовит открывашки крюк!

Reply to
Alex Mogilnikov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.