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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Принудительное размещение локальной переменной в стеке, Компилятор IAR EW3.30A (MSP430F449)
Petrooo
сообщение Feb 13 2007, 18:13
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 21-10-05
Пользователь №: 9 922



Цитата(Dog Pawlowa @ Feb 13 2007, 16:34) *
Ну, теперь понятно smile.gif

1. Использую измерение напряжения до стабилизатора, чтобы вовремя отключить все энергопотребляющие узлы, чтобы контроллер насладился сохранением статистики в ЕЕПРОМ.
2. Чтобы статистика не попортилась, делаю это только только в критических местах.
3. Реализую алгоритм прибора в виде массива функций, а текущим индексом массива является глобальная переменная "статус".
4. Не использую стек для таких функций, но, чтобы памяти хватило, использую одни и те же глобальные переменные в каждой функции, переопределяя их каждый раз в целях соответствия имени физическому смыслу (комментарии не пишу, компенсируя это именами).

Собственно, все... После сброса контроллер инициализируется и сразу выходит на ту функцию, где он был.

Были мысли про стек, но больше риск влететь куда-то не туда, и возникает зависимость от платформы, а я это не люблю - контроллеры приходят и уходят, а люди остаются smile.gif

Извините, но ничего нового не узнал. Это все общеизвестная теория.
Кстати, если тоже немного потеоритизировать и рассмотреть случай когда контроллер не сидит на отдельной элементе питания, то записывая свертку в ЕЕПРОМ не пару байт, а поболе можно нарваться на недозапись; через год-два на уже несвежих кондерах. Свертку желательно сохранять в более быструю память. Проверено жизнью.

Меня интересует конкретика: девайс на MSP430F449; сворачиваться требуется в не одном, а в 10-ке мест (функциях); внутренний структура обрабатываемых данных во всех функциях совершенно различна.
Цитата
После сброса контроллер инициализируется и сразу выходит на ту функцию, где он был.

А откуда возмется "все то, что было нажито непосильным трудом" в каждой конткретной функции до выключения питания??? В каждом случае сохраняетесь "вручную" (пишите отдельный код в прерывании под каждый случай)?
Цитата
... и возникает зависимость от платформы, а я это не люблю - контроллеры приходят и уходят, а люди остаются

ИМХО, переделок при смене платформы и сложном функционале девайса, в любом случае не избежать.

P.S. Коллеги, благодарю всех за отклики и ответы.

Цитата(_Bill @ Feb 13 2007, 17:08) *
Попробуйте объявить ее как auto.

Проверено. Не помогает.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 13 2007, 20:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Petrooo @ Feb 13 2007, 19:13) *
Извините, но ничего нового не узнал. Это все общеизвестная теория.

Ну, для меня это не теория, а практика любого проекта.
Цитата(Petrooo @ Feb 13 2007, 19:13) *
Меня интересует конкретика: девайс на MSP430F449; сворачиваться требуется в не одном, а в 10-ке мест (функциях); внутренний структура обрабатываемых данных во всех функциях совершенно различна.

Меня тоже интересует конкретика, потому что не догоняю проблемы. Может, далек от специфики устройства.
Если нужно сохранять данные, то они должны быть в соответвующей структуре. Глобальной.
В чем проблема то свести данные в одно место, даже свертку подготовить, если мало времени на выключение ?
В чем смысл использования стека, если он не "шарится" между функциями, а функции складываются одна в одну, и параметры нужно сохранять? Глубина стека выросла - проще отдать это глобальным переменным, а для передачи параметров использовать переменные.
Цитата(Petrooo @ Feb 13 2007, 19:13) *
Цитата(Dog Pawlowa @ Feb 13 2007, 16:34) *

После сброса контроллер инициализируется и сразу выходит на ту функцию, где он был.

А откуда возмется "все то, что было нажито непосильным трудом" в каждой конткретной функции до выключения питания??? В каждом случае сохраняетесь "вручную" (пишите отдельный код в прерывании под каждый случай)?

Я же писал - то, что нужно после сброса для продолжения работы - в глобальных переменных. Если данные нужны и для сохранения после долгого выключения - то в буфере для сохранения в EEPROM.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

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

 


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


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