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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите усыпить в прерывании..., камень Mega169
lepert
сообщение Mar 4 2009, 08:54
Сообщение #16


Частый гость
**

Группа: Validating
Сообщений: 94
Регистрация: 18-01-09
Из: Красноармейск
Пользователь №: 43 560



Цитата(DenisIV @ Mar 4 2009, 07:27) *
Именно TMR2, т.к. проц выключает свой тактовый генератор. Проблема в другом: именно в прерывании если просто выполнить sleep, проц от TMR2 не проснётся-прерывания-то выключены при входе в обработчик TMR1. А если их включить, то возможен бесконечный цикл/переполнение стека с TMR1. Вот я и думаю, что что-то здесь не так... Может остановить TMR1 и включить прерывания?
А в sleep нужно уходить максимально быстро...


Если попробовать использовать фиктивное прерывание. Берем какой нибудь вывод порта, надежно его заземляем, и настраиваем прерывания на перепад напряжения на этом выводе.
В TMR1 взводим флаг прерывания от того вывода и выходим из прерывания TMR1 срочным образом. И тут же попадаем в фиктивное прерывание, сбрасываем флаг, разрешаем глобальные прерыывания и уходим в sleep, тут не должно быть переполнения стека, потому что пока мы сами не сгенерируем прерывания от порта, они не появятся.
Go to the top of the page
 
+Quote Post
DenisIV
сообщение Mar 4 2009, 14:52
Сообщение #17


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 11-12-08
Из: Республика Беларусь, г.Минск
Пользователь №: 42 380



Зачем всякие фиктивные прерывания? Всё красиво работает. Перед sleep я принудительно останавливаю TMR1.
Вопросов с рекурсией не возникает. Прога по TMR2 считает только секунды и больше ничем не занята.
Время выполнения как я не крутил-120мкс и всё тут. (это 4 периода 32768 Hz) не могу понять только, почему 4...

Правда, сейчас не могу разобраться с оптимизацией - на максимуме и на минимуме есть глюки, макс. без code motion и cross calls<5 работает.
И закралась на этапе вылизывания интересная вещь: при обновлении ЖКИ на нём иногда включаются совсем не те сегменты,
которые должны были... хотя ОЗУ не модифицировалось (просто обновление)
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 4 2009, 17:28
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(DenisIV @ Mar 4 2009, 17:52) *
...
Время выполнения как я не крутил-120мкс и всё тут. (это 4 периода 32768 Hz) не могу понять только, почему 4...
...

Кстати у меня тоже 4 почему-то получалось. Но в том случае меньше и не надо было. Да вспомнил. Тактовый генератор (основной кварц) крайне медленно запускается. Те-же фузы, что при выходе из слипа, что при запуске.
Я в своё время решил проблемму потребления при этом (ионистор) понижая тактовую частоту в 16 раз. Это оказалось даже выгоднее (по энергозатратам), чем засыпать и через 5 милисек просыпаться. Тогда я решил, что во время запуска основной тактовый генератор кушает больше, чем во время работы. Только с поделённой более чем в 2 раза тактовой ни в коем случае не засыпайте. Просыпаться будет во столько-же раз медленнее.
Go to the top of the page
 
+Quote Post

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

 


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


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