Зарегистрирован: Сб сен 09, 2006 19:00:18 Сообщений: 257 Откуда: СССР
Рейтинг сообщения:0
Ошибка вылазит в обработке прерывания таймера, на команде reti: Program counter outside the valid space
Че может быть? может стэк маленький? Как вообще правильно указывать стэк?
Зарегистрирован: Сб сен 09, 2006 19:00:18 Сообщений: 257 Откуда: СССР
Рейтинг сообщения:0
Цитата:
Наверно у вас вектора прерываний не прописаны в проге.
да не, всё прописано. Дело в том что в обработке прерывания вызывается ещё несколько "подфункций", штук 3. Т.е. в прерывании вызывается функция, а в этой функции вызывается ещё функция. И на каком то N-ном возврате вылазит эта ошибка. А в памяти смотрел - то похоже вылазит за пределы указателя (если я правельно понял).
Как можно увеличить стэк? Возможно ли на каждую функцию зделать свой собственный стэк?
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Зарегистрирован: Сб сен 09, 2006 19:00:18 Сообщений: 257 Откуда: СССР
Рейтинг сообщения:0
Спасибо! Уже разобрался, POP не там заPOPил , то есть сначала шло - rcall потом, push, потом reti , 2 дня потерял А вообще возможно несколько стэков делать?
Последний раз редактировалось Tohey Вт апр 24, 2007 19:04:49, всего редактировалось 1 раз.
У МК семейства AVR указатель стека уменьшается при занасении в стек данных, т.е. движется "от конца" к "началу".
Следует различать стек программы и стек данных.
Аппаратный стек есть только у AT90S1200, если мне память не изменяет, а во всех моделях с ОЗУ стек программный, т.е. управляется из программы - что в SPL\SPH занесешь - там стек и будет.
Пример с ассемблерным листингом программы на си - имхо, худшее, что можно привести для понимания принципа работы стека. Интересно, что вы скажете про стек данных?
Едкая ирония совершенно неуместна: приведен пример кода, в котором ясно видно, что организовано 2 стека - и никаких объяснений по этому поводу не дано. Давайть куски кода без пояснений на форуме для начинающих - дурной тон, имхо. Понимать, что происходит - необходимо каждому программисту, если конечно не наплевательски относиться к своему делу, поэтому "использовать и не париться" - так же нехороший совет. Использовать надо, понимая что к чему (раз уж дело зашло о стеке, не смотря на Си).
Стеков может быть сколько угодно - но это обман зрения, программный трюк, вынужденная мера (ядро процессора все равно имеет только один указатель стека).
Стек данных используется компилятром Си (или другого языка высокого уровня) для организации передачи параметров функций и т.п. через отдельную область памяти, которая может быть и не на кристалле - это жертва универсальности языка.
Для примера: в Windows каждой задаче выделяется собственный стек, есть еще несколько стеков системных...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Мне на асме понятней и удобней писать. На си буду писать только тогда, когда математику применять придется.
Уважаю!
Для математики на асме есть готовые подпрограммы всех арифметических действий - умножение, деление, сложение и т.п. как целых чисел (поставляются в комплекте с AVRStudio), так и с плавающей точкой (есть много в интернете), так что всегда можно обойтись только асмом.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Зарегистрирован: Сб сен 09, 2006 19:00:18 Сообщений: 257 Откуда: СССР
Рейтинг сообщения:0
ARV писал(а):
на асме есть готовые подпрограммы всех арифметических действий - умножение, деление, сложение и т.п. как целых чисел (поставляются в комплекте с AVRStudio)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения