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

 
 
> перезапуск программы, непонятно почему.
simsim
сообщение Jan 16 2007, 21:13
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 45
Регистрация: 30-10-06
Пользователь №: 21 801



есть программа, состоит из 2-х подпрограмм А и Б, выполняемых бесконечно в while (1) {} и real-time clock по timer0.
1-я выводит массив led[32] в порт D, 2-я обновляет led[32]. Проблема - два раза цикл вывода и обновления led[32] проходит нормально, в начале 3-го происходит перезапуск контроллера, замечаю по обнулению времени и led. watchdog выключен, да и время до сброса не одно, зависит от времени выполнения циклов в А и Б, и 2 сек, и 15 сек и больше, а происходит в одной и той же точке выполнения А и Б. в чем может быть дело ? как уйти от этого сброса ?
p.s. попробую отследить в AVR Studio, поможет ? там вроде нет шагов назад.

Сообщение отредактировал simsim - Jan 16 2007, 21:17
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Jan 18 2007, 19:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



defunct был прав - массив, объявленный в функции, создается не в куче, а в стеке данных (я говрю про ИАР). Проверил листинг ассемблера - все так и есть. Единственное, в чем я был прав - массив, объявленный в функции - создается динамически!!! Так что, ребята, учитывайте это при создании приложений для АВР на ИАР angry.gif .


--------------------
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 18 2007, 20:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(prottoss @ Jan 18 2007, 18:40) *
Единственное, в чем я был прав - массив, объявленный в функции - создается динамически!!!

Нет, не "динамически" а "автоматически" - Сергей уже обьяснял!!!
Цитата
Так что, ребята, учитывайте это при создании приложений для АВР на ИАР angry.gif .

Ни AVR, ни IAR здесь ни причем. "С", просто "С" стандартное поведение.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 18 2007, 20:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(zltigo @ Jan 19 2007, 00:15) *
Цитата(prottoss @ Jan 18 2007, 18:40) *

Единственное, в чем я был прав - массив, объявленный в функции - создается динамически!!!

Нет, не "динамически" а "автоматически" - Сергей уже обьяснял!!!
Цитата
Так что, ребята, учитывайте это при создании приложений для АВР на ИАР angry.gif .

Ни AVR, ни IAR здесь ни причем. "С", просто "С" стандартное поведение.


А в чем разница между "динамически" и "автоматически"???

1. Если уж говорить по русски - я считаю что "динамически" - это на этапе исполнения кода, а Вы о чем глаголите???

2. Про стандартное поведение Си согласен, здесь все четко


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2007, 12:21
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Jan 18 2007, 19:39) *
А в чем разница между "динамически" и "автоматически"???

"динамически" == "в куче", "автоматически" == "в стеке/регистрах", "статически" == "в специально зарезервированном линкером участке памяти, не в стеке и не в куче".
Цитата(prottoss @ Jan 18 2007, 19:39) *
1. Если уж говорить по русски - я считаю что "динамически" - это на этапе исполнения кода, а Вы о чем глаголите???
Пытаемся обсуждать тематический вопрос с применением принятой в этой области терминологии. Чтобы избежать несуразностей, вызванных неправильной трактовкой "пимпочек", "загогулин" и "фИгни" biggrin.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 19 2007, 12:36
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ Jan 19 2007, 16:21) *
Цитата(prottoss @ Jan 18 2007, 19:39) *

А в чем разница между "динамически" и "автоматически"???

"динамически" == "в куче", "автоматически" == "в стеке/регистрах", "статически" == "в специально зарезервированном линкером участке памяти, не в стеке и не в куче".
Цитата(prottoss @ Jan 18 2007, 19:39) *
1. Если уж говорить по русски - я считаю что "динамически" - это на этапе исполнения кода, а Вы о чем глаголите???
Пытаемся обсуждать тематический вопрос с применением принятой в этой области терминологии. Чтобы избежать несуразностей, вызванных неправильной трактовкой "пимпочек", "загогулин" и "фИгни" biggrin.gif
Да, я стараюсь избегать создания массивов внутри функции... Тем паче, что, посмотрев код, на самом деле убедился в том, что ИАР выделил место под массив в стеке данных - он просто в начале функции взял, и увеличил значение регистра Y на размер моего объявленного массива! В принципе, в х86 компиляторах делается то же самое, но там размер памяти 4 Gb, здесь же иногда приходится крутится в 128 байтах да еще с практически всеми возможными задействованными прерываниями



НО, зачем тогда в опциях ИАРа стоит heap size для Си (без плюсиков) ? Оператор new использовать нет возможности, зачем же тогда куча?


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2007, 12:57
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Jan 19 2007, 11:36) *
НО, зачем тогда в опциях ИАРа стоит heap size для Си (без плюсиков) ? Оператор new использовать нет возможности, зачем же тогда куча?
Чтобы размещать в ней различные данные, используя функции malloc, calloc, free и т.д. из stdlib.h. Динамическое распределение памяти


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 19 2007, 13:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ Jan 19 2007, 16:57) *
Цитата(prottoss @ Jan 19 2007, 11:36) *

НО, зачем тогда в опциях ИАРа стоит heap size для Си (без плюсиков) ? Оператор new использовать нет возможности, зачем же тогда куча?
Чтобы размещать в ней различные данные, используя функции malloc, calloc, free и т.д. из stdlib.h. Динамическое распределение памяти
Вы сами то эти функции применяете в проектах? smile.gif


--------------------
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 19 2007, 15:55
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(prottoss @ Jan 19 2007, 12:29) *
Вы сами то эти функции применяете в проектах? smile.gif

Нет ни одного проекта без менеджера памяти и соотвественно без функций использования оной.
Кроме всего прочего позволяет для отладочных целей просмотреть списки блоков, их владельцев и содержимое без сокровенных знаний почерпнутых из мапфайла конкретной сборки. Соответственно задачи тоже под контекст используют динамическое выделение памяти и расшаривание способствует солидной экономии ресурса.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- simsim   перезапуск программы   Jan 16 2007, 21:13
- - bodja74   SREG и регистры сохраняются в прерывании ?   Jan 16 2007, 21:33
|- - simsim   Цитата(bodja74 @ Jan 16 2007, 21:33) SREG...   Jan 16 2007, 21:43
- - SasaVitebsk   Цитата(simsim @ Jan 16 2007, 22:13) p.s. ...   Jan 16 2007, 23:13
- - GDI   Индексы массивов не выходят ли за границы оных, ст...   Jan 17 2007, 12:42
|- - simsim   Цитата(GDI @ Jan 17 2007, 12:42) Индексы ...   Jan 17 2007, 17:46
|- - prottoss   Цитата(simsim @ Jan 17 2007, 21:46) Цитат...   Jan 17 2007, 18:02
||- - SasaVitebsk   Цитата(prottoss @ Jan 17 2007, 19:02) Доп...   Jan 17 2007, 19:10
||- - prottoss   Цитата(SasaVitebsk @ Jan 17 2007, 23:10) ...   Jan 17 2007, 19:25
||- - simsim   Для IAR даже если массив объявлен внутри ф-ции, то...   Jan 17 2007, 19:35
||- - defunct   Цитата(prottoss @ Jan 17 2007, 19:25) Цит...   Jan 17 2007, 20:27
|- - simsim   Цитата(simsim @ Jan 17 2007, 17:46) Цитат...   Jan 17 2007, 19:00
|- - SasaVitebsk   Цитата(simsim @ Jan 17 2007, 20:00) Цитат...   Jan 17 2007, 19:36
||- - Сергей Борщ   Чтобы все не спорили. Массивы, объявленные внутри ...   Jan 17 2007, 20:14
||- - AndryG   Не вчитывался в посты народа ... звыняйте .. в АСМ...   Jan 17 2007, 20:21
||- - Qwertty   Цитата(AndryG @ Jan 17 2007, 20:21) Не вч...   Jan 17 2007, 20:37
||- - simsim   Заменил ассемблерную функцию на СИ-шную unsigned ...   Jan 17 2007, 21:06
||- - simsim   Цитата(simsim @ Jan 17 2007, 21:06) Замен...   Jan 17 2007, 21:35
||- - Dan_Dima   Всем привет. Я можнт что-то не понимаю скажите а р...   Jan 18 2007, 03:43
||- - dimka76   Цитата(Dan_Dima @ Jan 18 2007, 03:43) Все...   Jan 18 2007, 08:27
|||- - Dan_Dima   Цитата(dimka76 @ Jan 18 2007, 08:27) Цита...   Jan 18 2007, 12:28
|||- - Dog Pawlowa   Цитата(Dan_Dima @ Jan 18 2007, 13:28) Нас...   Jan 18 2007, 13:00
||||- - Dan_Dima   Цитата(Dog Pawlowa @ Jan 18 2007, 13:00) ...   Jan 18 2007, 14:35
||||- - Dog Pawlowa   Цитата(Dan_Dima @ Jan 18 2007, 15:35) Пре...   Jan 18 2007, 18:08
|||- - satellite-plus   Насколько я помню подобные преобразования компилят...   Jan 18 2007, 13:25
||- - satellite-plus   Цитата(Dan_Dima @ Jan 18 2007, 02:43) Все...   Jan 18 2007, 09:19
|- - prottoss   Цитата(simsim @ Jan 17 2007, 23:00) В под...   Jan 17 2007, 19:38
- - _Bill   Цитата(simsim @ Jan 16 2007, 21:13) есть ...   Jan 17 2007, 13:04
- - prottoss   Цитата(simsim @ Jan 17 2007, 01:13) есть ...   Jan 17 2007, 13:41
- - vesago   Согласен с GDI 9:10 - криво проинициализировали ин...   Jan 17 2007, 17:05
- - GDI   Цитатаиндексы в порядке, потому что два раза прохо...   Jan 17 2007, 19:32
- - SasaVitebsk   Цитата(SasaVitebsk @ Jan 17 2007, 20:10) ...   Jan 18 2007, 00:49
|- - Сергей Борщ   Цитата(SasaVitebsk @ Jan 17 2007, 23:49) ...   Jan 18 2007, 18:56
|- - defunct   Цитата(Сергей Борщ @ Jan 18 2007, 18:56) ...   Jan 19 2007, 01:32
|- - SasaVitebsk   Цитата(Сергей Борщ @ Jan 18 2007, 19:56) ...   Jan 19 2007, 02:21
|- - Сергей Борщ   Цитата(SasaVitebsk @ Jan 19 2007, 01:21) ...   Jan 19 2007, 12:06
|- - xemul   Цитата(prottoss @ Jan 18 2007, 20:39) Цит...   Jan 18 2007, 21:44
||- - prottoss   Цитата(xemul @ Jan 19 2007, 01:44) Автома...   Jan 18 2007, 21:52
||- - IgorKossak   Цитата(prottoss @ Jan 19 2007, 12:29) Цит...   Jan 19 2007, 13:55
|||- - prottoss   Цитата(IgorKossak @ Jan 19 2007, 17:55) Ц...   Jan 19 2007, 14:12
|||- - IgorKossak   Цитата(prottoss @ Jan 19 2007, 13:12) Инт...   Jan 19 2007, 15:47
||- - Сергей Борщ   Цитата(prottoss @ Jan 19 2007, 12:29) Вы ...   Jan 19 2007, 13:57
|- - zltigo   Цитата(prottoss @ Jan 18 2007, 19:39) а В...   Jan 19 2007, 15:42
|- - prottoss   Цитата(zltigo @ Jan 19 2007, 19:42) Цитат...   Jan 19 2007, 15:55
- - xemul   Цитата(Dan_Dima @ Jan 18 2007, 14:35) Цит...   Jan 18 2007, 21:15
- - prottoss   Канешна, это все здорово очень, объясните тада, ум...   Jan 18 2007, 21:43
|- - xemul   Цитата(prottoss @ Jan 18 2007, 21:43) Кан...   Jan 18 2007, 21:59
|- - prottoss   Цитата(xemul @ Jan 19 2007, 01:59) Цитата...   Jan 18 2007, 22:04
|- - xemul   Цитата(prottoss @ Jan 18 2007, 22:04) Цит...   Jan 19 2007, 00:20
|- - prottoss   Цитата(xemul @ Jan 19 2007, 04:20) Цитата...   Jan 19 2007, 11:11
- - makc   Предложение ко всем участникам форума - квотить ме...   Jan 19 2007, 11:58
- - SasaVitebsk   Prottoss последний мой проект целиком построен на ...   Jan 20 2007, 04:48
- - SasaVitebsk   Цитата(Сергей Борщ @ Jan 19 2007, 13:06) ...   Jan 20 2007, 05:12


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:02
Рейтинг@Mail.ru


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