Easyelectronics.ru

Электроника для всех
Текущее время: 19 окт 2019, 00:05

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: WinAVR в Студии 4.18 и чудеса оптимизации
СообщениеДобавлено: 21 ноя 2011, 23:33 
Старожил

Зарегистрирован: 31 янв 2010, 20:19
Сообщения: 4946
Откуда: Донецк-Мариуполь
Коллеги!
Есть достаточно невинный код:
Код:

void   Data_Transmit(uint8_t cData, uint8_t Dig)
{
uint8_t   i;

   for (i=0;i<8;i++)
   {
      CLK_DN;
      if ( cData & 0x80 )
         DATA_UP;
      else
         DATA_DN;
      CLK_UP;
      cData <<= 1;
   }
   CLK_DN;
   switch (Dig)
...............


Так вот, оптимизатор выкинул нафиг все, и начинает работать в этой функции только со строки switch(Dig).
Если добавить дополнительную переменную, причем обязательно volatile, спокировать в нее значение параметра cData, и работать с ней - то все выполняется.
Так, что - весь код перелопачивать на предмет правильного исполнения и ставить, где ни попадя volatile ???

Кто знает, в чем же дело?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAVR в Студии 4.18 и чудеса оптимизации
СообщениеДобавлено: 21 ноя 2011, 23:43 
Старожил

Зарегистрирован: 01 июл 2010, 15:30
Сообщения: 473
Откуда: Энгельс
А что такое CLK_DN; DATA_UP; CLK_UP; DATA_DN; ? Как они определены?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAVR в Студии 4.18 и чудеса оптимизации
СообщениеДобавлено: 21 ноя 2011, 23:55 
Старожил

Зарегистрирован: 31 янв 2010, 20:19
Сообщения: 4946
Откуда: Донецк-Мариуполь
Это макросы типа
sbi(PORTD,PD3);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAVR в Студии 4.18 и чудеса оптимизации
СообщениеДобавлено: 22 ноя 2011, 01:00 
Старожил

Зарегистрирован: 31 янв 2010, 20:19
Сообщения: 4946
Откуда: Донецк-Мариуполь
Все, вопрос снят... Макросы были только объявлены, но без тела...
Изначально подозревал...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB