Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Баг IAR AVR EC++ 3.20C
- 10-14-2004
- Vladimir Vassilevsky
October 14, 2004, 12:49 pm

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аполеон Бонапарт
По оптимизации кода на размер 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аполеон Бонапарт

Баг IAR AVR EC++ 3.20C
Привет 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]
Алексей М.
... Пирожок вареный с вареньем.
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]
Алексей М.
... Пирожок вареный с вареньем.

Баг IAR AVR EC++ 3.20C
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аполеон Бонапарт
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аполеон Бонапарт

Баг IAR AVR EC++ 3.20C
Привет Vladimir!
15 Oct 04 00:57, Vladimir Vassilevsky писал Alex Mogilnikov:
AM>> Объявление TWCR можно увидеть?
VV> См. штатные файлы iom128.h и iomacro.h из комплекта. Увы, там все
VV> правильно описано.
Право же, не хочется покупать сабж ради того чтобы посмотреть декларацию
символа... :)
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... О сколько нам открытий чудных готовит открывашки крюк!
15 Oct 04 00:57, Vladimir Vassilevsky писал Alex Mogilnikov:
AM>> Объявление TWCR можно увидеть?
VV> См. штатные файлы iom128.h и iomacro.h из комплекта. Увы, там все
VV> правильно описано.
Право же, не хочется покупать сабж ради того чтобы посмотреть декларацию
символа... :)
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... О сколько нам открытий чудных готовит открывашки крюк!
Site Timeline
- » Зарядное устройство
- — Next thread in » Microcontrollers (Russian)
-
- » Graphic LCD panel
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » Biblioteka MQTT i dziwny kod w C
- — The site's Newest Thread. Posted in » Electronics (Polish)
-