реклама на сайте
подробности

 
 
> или глюк в IAR, или я что- то упускаю, вопрос по массиву
Метценгерштейн
сообщение Jan 22 2011, 18:29
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



вот код
Код
void main (void) {
__enable_interrupt();
uint32_t timeStamp =CntT1_ms;

char data [15];
uint8_t num = 0;
  
      
       putString("AT+CSQ\r"); //уровень приема сигнала

      
    for(;;){
      
         if ((CntT1_ms-timeStamp) >= LED_BLINK_PERIOD)
         {
           //off (LED);
           putString("AT\r");
           timeStamp =CntT1_ms;
         }    
      
       if ( hasinput() )
            {    
               data [num] = getchar();
              
               cpl (LED);
            }

  }
}


во- первых, странно, что ИАР ругается на варнинг на объявление массива char data[15];

Warning[Pe550]: variable "data" was set but never used D:\works\projects\Blink_LED mega8 +HT\main.c 102

И как только часть кода
data [num] = getchar();
включаю в работу (убираю комментарии),
отказывается работать часть кода между
main (); и

for (;;)

т.е.
putString("AT+CSQ\r");


Что за странное поведение?

Сообщение отредактировал Метценгерштейн - Jan 22 2011, 18:30
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Jan 24 2011, 12:34
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Нет. Возврат значения он на то и возврат, чтобы вернуть значение(результат работы) вызывающей функции. Иначе всё это было бы бсполезно.

Вы б с букваря начали....
Вам же объясняют уже сколько: вернула getchar(); значение, присвоили вы его одному из элементов массива(изменили одну ячейку памяти микроконтроллера), а дальше то что? ЗНАЧЕНИЕ ЭТО НИГДЕ НЕ ИСПОЛЬЗУЕТСЯ!
Оптимизация же подразумевает достижение того-же результата с меньшим кол-вом телодвижений. Так если значение функции нам не нужно, то зачем делать всю эту работу? чтобы просто один раз изменить ячейку памяти или регистр контроллера? Если это изменение ни на что в дальнейшем не влияет - то его можно не делать. Вот как думает компилятор. И разжевали вам это уже очень хорошо и живопсисно! Перечитывайте хоть ответы тогда уж по мере продвижения...


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   или глюк в IAR, или я что- то упускаю   Jan 22 2011, 18:29
- - OLEG_BOS   Цитата(Метценгерштейн @ Jan 22 2011, 20:2...   Jan 22 2011, 19:29
- - Dog Pawlowa   Мне даже две первые строчки непонятны. Разрешить ...   Jan 22 2011, 19:55
- - Метценгерштейн   прерывания используются для другой ф-ии- вывода ст...   Jan 22 2011, 19:59
|- - Dog Pawlowa   Цитата(Метценгерштейн @ Jan 22 2011, 22:5...   Jan 22 2011, 20:03
- - Метценгерштейн   что значит не беру, еще как беру, смотрите Кодif ...   Jan 22 2011, 20:10
|- - OLEG_BOS   Цитата(Метценгерштейн @ Jan 22 2011, 22:1...   Jan 22 2011, 20:16
- - Метценгерштейн   значение num меняется по плану, оно ++, но закомме...   Jan 22 2011, 20:20
|- - OLEG_BOS   Цитата(Метценгерштейн @ Jan 22 2011, 22:2...   Jan 22 2011, 20:24
- - Метценгерштейн   вот зараза то и, что он в данном случае наопти...   Jan 22 2011, 20:27
- - sigmaN   Цитатаон ругается на переменную data [], а это мас...   Jan 22 2011, 22:21
- - Метценгерштейн   на самом деле интересно и не понятно, зачем ИАР вы...   Jan 22 2011, 22:51
|- - zltigo   QUOTE (Метценгерштейн @ Jan 23 2011, 01:5...   Jan 22 2011, 23:38
|- - OLEG_BOS   Цитата(zltigo @ Jan 23 2011, 01:38) Перед...   Jan 22 2011, 23:48
- - DpInRock   Наплевать что вы записываете что-т о в переменную....   Jan 22 2011, 23:20
- - rezident   Насчет putString("AT+CSQ\r"); не ув...   Jan 22 2011, 23:35
- - Метценгерштейн   хорошо, простой пример: есть некий Кодvoid main...   Jan 23 2011, 12:32
|- - Dog Pawlowa   Цитата(Метценгерштейн @ Jan 23 2011, 15:3...   Jan 23 2011, 12:58
|- - zltigo   QUOTE (Метценгерштейн @ Jan 23 2011, 15:3...   Jan 23 2011, 13:14
- - Метценгерштейн   читаю, читаю... пока не разобрался еще. Если есть ...   Jan 23 2011, 13:07
- - Метценгерштейн   Мне как- то лет в 18 инструктор по вождению говори...   Jan 23 2011, 13:24
|- - Dog Pawlowa   Цитата(Метценгерштейн @ Jan 23 2011, 16:2...   Jan 23 2011, 13:36
|- - zltigo   QUOTE (Метценгерштейн @ Jan 23 2011, 16:2...   Jan 23 2011, 13:41
- - Метценгерштейн   На самом деле, спасибо за то, что прояснили ситуац...   Jan 23 2011, 13:48
|- - zltigo   QUOTE (Метценгерштейн @ Jan 23 2011, 16:4...   Jan 23 2011, 13:51
- - Метценгерштейн   ldi r16, low(RAMEND) out SPL, r16 ;...   Jan 23 2011, 14:00
|- - zltigo   QUOTE (Метценгерштейн @ Jan 23 2011, 17:0...   Jan 23 2011, 14:35
- - Метценгерштейн   Получается, так. Я устанавливал только указатель н...   Jan 23 2011, 15:02
- - rezident   Метценгерштейн, любая работа должна приносить како...   Jan 23 2011, 20:39
|- - Метценгерштейн   rezident Спасибо, дошло до меня. Я же при вызове ...   Jan 24 2011, 08:50
- - sigmaN   покидание функции main - последняя операция, котор...   Jan 24 2011, 09:51
- - Метценгерштейн   хорошо, но программа же выходит из main, для того,...   Jan 24 2011, 10:29
- - sigmaN   Выход из функции и вызов другой функции - разные...   Jan 24 2011, 11:00
- - Метценгерштейн   т.е. вызываемая ф-я getchar(); не может передать ...   Jan 24 2011, 11:21
- - Метценгерштейн   Извиняюсь, похоже, торможу я хорошо Я, безусло...   Jan 24 2011, 13:44
|- - demiurg_spb   to Метценгерштейн: Вы кстати в курсе что в IAR-AVR...   Jan 24 2011, 16:49
- - sigmaN   Цитатабыло бы все нормально? Не было у меня все но...   Jan 24 2011, 14:17
- - Метценгерштейн   Да, спасибо Вам, и всем кто откликнулся за помощь....   Jan 24 2011, 14:19
- - sigmaN   Да да, главное не сдаваться.   Jan 24 2011, 14:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th September 2025 - 18:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01726 секунд с 7
ELECTRONIX ©2004-2016