Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 06.02.2012, 19:35   #1
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

У меня довольно громоздкая функция вывода и анимации надписей на светодиодный экран, вызывающая множество других функций(формирования надписи, буквы, точки и тд)..выполняется достаточно длительное время..
Если пользователь на что-то нажал и перешёл в другой режим-происходит прерывание, выводятся другие надписи и меняется режим но по возвращении из прерывания продолжает выполняться старая функция ..и естественно возникают артефакты ..
Можно конечно в прерывании установить некий флаг, и в самой функции его постоянно проверять в куче разных мест но это как-то коряво ..другого способа нет?
maagalex вне форума   Ответить с цитированием
Старый 06.02.2012, 19:46   #2
Machine slave
Senior Member
 
Аватар для Machine slave
 
Регистрация: 18.01.2008
Возраст: 37
Сообщений: 4,264
Вес репутации: 2731/114
Machine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond repute
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

А зачем в прерывании обрабатывать пользовательские нажатия? Фиксировать я еще понимаю. Но отрабатывать то в основном цикле.
Machine slave вне форума   Ответить с цитированием
Старый 06.02.2012, 22:36   #3
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от Machine slave Посмотреть сообщение
А зачем в прерывании обрабатывать пользовательские нажатия? Фиксировать я еще понимаю. Но отрабатывать то в основном цикле.
Это если основной цикл повторяется десятки раз в течение одной секунды, а если реже?..
maagalex вне форума   Ответить с цитированием
Старый 07.02.2012, 12:04   #4
canis
Senior Member
 
Аватар для canis
 
Регистрация: 04.08.2010
Адрес: Москва
Сообщений: 105
Вес репутации: 174/38
canis has a spectacular aura aboutcanis has a spectacular aura about
Отправить сообщение для canis с помощью ICQ Отправить сообщение для canis с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Какой контроллер? Разные контроллеры по-разному работают с переполнением стека. Вообще нехорошо это, не возвращаться из прерывания. Лучше флаг установить и его проверять. Проверить флаг и уйти/не уйти - это же быстрая операция, чего там, 2 программных такта.
canis вне форума   Ответить с цитированием
Старый 07.02.2012, 14:47   #5
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от canis Посмотреть сообщение
Какой контроллер? Разные контроллеры по-разному работают с переполнением стека. Вообще нехорошо это, не возвращаться из прерывания. Лучше флаг установить и его проверять. Проверить флаг и уйти/не уйти - это же быстрая операция, чего там, 2 программных такта.
Зачем-же переполнять стек-я ищу правильный красивый метод ,платформо-независимый естественно..Флаг проверить не проблема-но придётся проверять его в каждом циле каждой функции которая вызывается головной функцией?..Коряво это..
maagalex вне форума   Ответить с цитированием
Старый 07.02.2012, 15:22   #6
canis
Senior Member
 
Аватар для canis
 
Регистрация: 04.08.2010
Адрес: Москва
Сообщений: 105
Вес репутации: 174/38
canis has a spectacular aura aboutcanis has a spectacular aura about
Отправить сообщение для canis с помощью ICQ Отправить сообщение для canis с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Ну рано или поздно переполнится.

Да не коряво это, ставить флаг и проверять.
#define Check_uzer_tichet_znachit_valim() (проверка)

А в каждом цикле (или не в цикле, а после циклов.. или перед циклами, не мгновенно же надо все бросить) это Check_uzer_tichet_znachit_valim() поставить.

Еще можно ребутать контроллер. И при старте смотреть, зачем его ребутнули. Но это и пляски со стеком имхо куда корявее. Хотя тоже с радостью ознакомлюсь с некорявым платформа независимым вариантом, интересно.

Последний раз редактировалось canis; 07.02.2012 в 15:30.
canis вне форума   Ответить с цитированием
Старый 07.02.2012, 21:32   #7
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/92
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Почему каждой? Только той, которая тормозит. Насколько помню, речь шла про вывод на экран. Так там по любому цикл перебора либо строкового, либо графического буфера... Вот в нем и проверяешь флаг...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 08.02.2012, 00:12   #8
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Почему каждой? Только той, которая тормозит. Насколько помню, речь шла про вывод на экран. Так там по любому цикл перебора либо строкового, либо графического буфера... Вот в нем и проверяешь флаг...
Допустим в некоей глубоко вложенной функции которая тормозит (ожидает переполнения таймера для вывода столбцов например) я проверяю флаг и оппа-он сработал, return! А дальше возвращаемся в функцию из которой эту нижнюю вызывали и..опять проверять этот флаг и опять return вверх?..А если вызов мог быть из пяти мест-в пяти местах проверять этот флаг? А выше ещё в пяти местах? ..
maagalex вне форума   Ответить с цитированием
Старый 08.02.2012, 00:17   #9
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/92
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Прости, но чето у тебя х...ня какая-то получается. Пересмотри хорошенько алгоритм программы на свежую голову...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 08.02.2012, 00:29   #10
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Прости, но чето у тебя х...ня какая-то получается. Пересмотри хорошенько алгоритм программы на свежую голову...
Ну почему-же.. функция формирует точку на экране, другая её вызывает многократно чтобы сформировать букву, третья вызывает вторую многократно чтобы написать слово, четвёртая вызывает третью чтобы это слово сдвигать..Это упрощённо, есть ещё куча всего для коррекции ширины букв, моргающие символы, стабилизация скорости сдвига строки и тд..

По-другому это не реализовывается, и корректно выйти из любой точки наружу вообщем-то непонятно как..
maagalex вне форума   Ответить с цитированием
Старый 08.02.2012, 01:16   #11
FlashBack
Senior Member
 
Аватар для FlashBack
 
Регистрация: 16.02.2010
Адрес: Грузия, Тбилиси
Возраст: 35
Сообщений: 2,232
Вес репутации: 2337/82
FlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond repute
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
Ну почему-же.. функция формирует точку на экране, другая её вызывает многократно чтобы сформировать букву, третья вызывает вторую многократно чтобы написать слово, четвёртая вызывает третью чтобы это слово сдвигать..Это упрощённо, есть ещё куча всего для коррекции ширины букв, моргающие символы, стабилизация скорости сдвига строки и тд..

По-другому это не реализовывается, и корректно выйти из любой точки наружу вообщем-то непонятно как..
А почему так всё плохо то? Сейчас как раз строку делаю, точку точно выводить не надо.. Весь вывод буквы (Yx8 где Y произвольная ширина до 8) занимает 100 us при 10MHz x 4 PLL... Т.е. как бы не так долго, и даже если дать букве дорисоваться ничего страшного не произойдёт... Даже если строку дорисовать...
Проверил - 72 видимые буквы (с расчётом обрезки лишних ещё 90-ка примерно), с копированим буффера и.т.д. 11 милисекунд. Как то вроде тоже не проблема, если отработка реакции на нажатие запаздает на такое время, дав дорисовать всё...

Так что тут не могу не согласиться с MajorPAE, что правда фигня выходит... Я бы конкретизировал, что имеет возможно имеет место неправильная организация буффера картинки, знакогенератора, либо неправильное распределение нагрузки...
FlashBack вне форума   Ответить с цитированием
Старый 08.02.2012, 13:42   #12
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от FlashBack Посмотреть сообщение
Так что тут не могу не согласиться с MajorPAE, что правда фигня выходит... Я бы конкретизировал, что имеет возможно имеет место неправильная организация буффера картинки, знакогенератора, либо неправильное распределение нагрузки...
В моём конкретном примере как я писал выше есть ещё скорость сдвига,которая организована внутри функции вывода..например если мне нужно чтобы некая надпись вьехала на экран со скоростью х -я просто вызываю функцию с адресом первого символа этой надписи, дальше она всё делает внутри..
Конечно я сейчас всё переработаю, проблему решу так или иначе, просто думал что есть какие-то более правильные методы
maagalex вне форума   Ответить с цитированием
Старый 08.02.2012, 13:59   #13
titron
Junior Member
 
Регистрация: 29.06.2011
Адрес: Нижний Новгород
Возраст: 30
Сообщений: 8
Вес репутации: 118/0
titron will become famous soon enoughtitron will become famous soon enough
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
..другого способа нет?
как вариант, на низком уровне разбираться со стеком возврата - в прерывании при необходимости чистить вершину стека до нужного уровня.
titron вне форума   Ответить с цитированием
Старый 08.02.2012, 14:07   #14
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от titron Посмотреть сообщение
как вариант, на низком уровне разбираться со стеком возврата - в прерывании при необходимости чистить вершину стека до нужного уровня.
это не то..совсем не то..может быть для таких случаев и существуют все эти ОС и они эмулируют стек на более высоком уровне ?..Завтра пойду на семинар по этой теме..
maagalex вне форума   Ответить с цитированием
Старый 08.02.2012, 14:15   #15
titron
Junior Member
 
Регистрация: 29.06.2011
Адрес: Нижний Новгород
Возраст: 30
Сообщений: 8
Вес репутации: 118/0
titron will become famous soon enoughtitron will become famous soon enough
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
это не то..совсем не то..может быть для таких случаев и существуют все эти ОС и они эмулируют стек на более высоком уровне ?..Завтра пойду на семинар по этой теме..
почему же не то?
в прерывании, если должен полностью смениться режим, очищать стек до уровня основного цикла и выходить. При этом основной цикл сделать в виде простого вызова подфункции, в которой уже ситуацию разруливать.

имхо, довольно простой и безопасный способ решить проблему... хотя, может я не всё понял )
titron вне форума   Ответить с цитированием
Старый 08.02.2012, 15:22   #16
Petya
Senior Member
 
Регистрация: 30.11.2008
Адрес: SPb
Сообщений: 150
Вес репутации: 238/45
Petya has a spectacular aura aboutPetya has a spectacular aura aboutPetya has a spectacular aura about
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
В моём конкретном примере как я писал выше есть ещё скорость сдвига,которая организована внутри функции вывода..например если мне нужно чтобы некая надпись вьехала на экран со скоростью х -я просто вызываю функцию с адресом первого символа этой надписи, дальше она всё делает внутри..
Конечно я сейчас всё переработаю, проблему решу так или иначе, просто думал что есть какие-то более правильные методы
Так надо просто функцию анимации сделать нормально: не блокировать всю программу на это время, а ввести глобальный счётчик кадров, в зависимости от которого и выводить строку с разным сдвигом. При запуске анимации сбрасывать его, а после каждой отрисовки или по таймеру увеличивать.
(например)
Petya вне форума   Ответить с цитированием
Старый 08.02.2012, 16:35   #17
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
Можно конечно в прерывании установить некий флаг, и в самой функции его постоянно проверять в куче разных мест но это как-то коряво ..другого способа нет?
Вытесняющая RTOS, вошел в прерывание и если надо убил задачу, всё управление она более не получит.
DL36 вне форума   Ответить с цитированием
Старый 09.02.2012, 08:44   #18
VXDRV
Senior Member
 
Аватар для VXDRV
 
Регистрация: 25.02.2007
Адрес: Karagandy
Возраст: 37
Сообщений: 375
Вес репутации: 230/53
VXDRV has a spectacular aura aboutVXDRV has a spectacular aura aboutVXDRV has a spectacular aura about
Отправить сообщение для VXDRV с помощью ICQ
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Функции вывода и эффектов нужно разделить. На каждый эффект сделать своеобразную стейт-машину с кучей флагов и "счётчиком проходов". Вызывать вывод эффектов периодически по таймеру. Контроллировать завершение эффектов по каким либо флагам. В любой момент можно флаги сбросить и обнулить счётчик проходов.
VXDRV вне форума   Ответить с цитированием
Старый 09.02.2012, 08:54   #19
Bill
Senior Member
 
Аватар для Bill
 
Регистрация: 26.02.2007
Адрес: Челябинск
Возраст: 70
Сообщений: 2,215
Вес репутации: 1898/88
Bill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant future
По умолчанию На мой взгляд, это самое разумное решение.

Цитата:
Сообщение от VXDRV Посмотреть сообщение
Функции вывода и эффектов нужно разделить. На каждый эффект сделать своеобразную стейт-машину с кучей флагов и "счётчиком проходов". Вызывать вывод эффектов периодически по таймеру. Контроллировать завершение эффектов по каким либо флагам. В любой момент можно флаги сбросить и обнулить счётчик проходов.
Разве что постараться "кучу" флагов сократить до минимума. В вообще, для подобных целей созданы различные RTOS. Можно взять хотя бы ту же OSA. Или нет?
Bill вне форума   Ответить с цитированием
Старый 09.02.2012, 23:32   #20
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от titron Посмотреть сообщение
почему же не то?
в прерывании, если должен полностью смениться режим, очищать стек до уровня основного цикла и выходить. При этом основной цикл сделать в виде простого вызова подфункции, в которой уже ситуацию разруливать.

имхо, довольно простой и безопасный способ решить проблему... хотя, может я не всё понял )
Спасибо-и действительно!..Я порылся на сайте производителя, нашёл там пример для своего контролера, встроил его в С-шную функцию , подцепил дебаггер..и..после занесения в этот регистр значения 6 (которое было там корневом цикле) и выхода из любой функции-програма возвращается в корневой цикл а не в предыдущую функцию! Алилуя ..
..А по поводу семинара рассказывали про рил тайм..что практически все встроенные аппликации это и есть этот самый рил тайм, который бывает жёстким где все временные рамки регламентированы и мягким ..где можно и подождать если очень нужно..предложили очень много всяких курсов от 1000$ за несколько часовых встреч..и..до бесконечности)...
maagalex вне форума   Ответить с цитированием
Старый 10.02.2012, 10:39   #21
canis
Senior Member
 
Аватар для canis
 
Регистрация: 04.08.2010
Адрес: Москва
Сообщений: 105
Вес репутации: 174/38
canis has a spectacular aura aboutcanis has a spectacular aura about
Отправить сообщение для canis с помощью ICQ Отправить сообщение для canis с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Спасибо-и действительно!..Я порылся на сайте производителя, нашёл там пример для своего контролера, встроил его в С-шную функцию , подцепил дебаггер..и..после занесения в этот регистр значения 6 (которое было там корневом цикле) и выхода из любой функции-програма возвращается в корневой цикл а не в предыдущую функцию! Алилуя ..
Это будет платформа независимым?
canis вне форума   Ответить с цитированием
Старый 10.02.2012, 10:47   #22
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,132
Вес репутации: 4577/130
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
Спасибо-и действительно!..Я порылся на сайте производителя, нашёл там пример для своего контролера, встроил его в С-шную функцию , подцепил дебаггер..и..после занесения в этот регистр значения 6 (которое было там корневом цикле) и выхода из любой функции-програма возвращается в корневой цикл а не в предыдущую функцию! Алилуя ..
..А по поводу семинара рассказывали про рил тайм..что практически все встроенные аппликации это и есть этот самый рил тайм, который бывает жёстким где все временные рамки регламентированы и мягким ..где можно и подождать если очень нужно..предложили очень много всяких курсов от 1000$ за несколько часовых встреч..и..до бесконечности)...
на пике24 на tn kernel делал строку бегущую. вообще никаких проблем нет. вывод 2-3 й приоритет. высший - задача короткая, но особо важная, а остальное еще менее приоритетное. а вывод в строку - через DMA.
3-й год на улице бегают строки.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 10.02.2012, 16:06   #23
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,531
Вес репутации: 2476/117
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от canis Посмотреть сообщение
Это будет платформа независимым?
если нет гербовой пишут на простой..придётся при переходе на другую платформу рихтовать ..

Цитата:
Сообщение от Vanizma Посмотреть сообщение
на пике24 на tn kernel делал строку бегущую. вообще никаких проблем нет. вывод 2-3 й приоритет. высший - задача короткая, но особо важная, а остальное еще менее приоритетное. а вывод в строку - через DMA.
3-й год на улице бегают строки.
А если бежать будут одновременно две строки и в это-же время нужно заниматься чем-то ещё?..
maagalex вне форума   Ответить с цитированием
Старый 10.02.2012, 16:32   #24
FlashBack
Senior Member
 
Аватар для FlashBack
 
Регистрация: 16.02.2010
Адрес: Грузия, Тбилиси
Возраст: 35
Сообщений: 2,232
Вес репутации: 2337/82
FlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond reputeFlashBack has a reputation beyond repute
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение

А если бежать будут одновременно две строки и в это-же время нужно заниматься чем-то ещё?..
Ну у меня например сделанно так, что сам выброс на экран в прерывании высокого уровня, в прерывании с низким приоритетом по таймеру вызываются функции обработки сценария действий, и прорисовка строк. В промежутках есть ещё мелкие задачки в основном цикле. А прорисовывать успевает делать до 2000 символов в секунду в любой комбинации. Так что прервать и переключить на рисование другого текста вовсе не проблема. Плюс ещё два буффера, так что при рисовании никаких артефактов, даже если проц не успеет чего либо сжелать
FlashBack вне форума   Ответить с цитированием
Старый 12.02.2012, 21:36   #25
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,132
Вес репутации: 4577/130
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Можно-ли выйти из С-шной функции по прерыванию и не возвращаться в неё?

Цитата:
Сообщение от maagalex Посмотреть сообщение
если нет гербовой пишут на простой..придётся при переходе на другую платформу рихтовать ..


А если бежать будут одновременно две строки и в это-же время нужно заниматься чем-то ещё?..
на 2 spi данные с разных областей памяти через DMA (я реально 16 пикселей в высоту делал 2-мя spi по 8.)

и хоть 5 задач. вариантов много. можно с одинаковым приоритетом, а в задачах, где допустимо можно передавать управление планировщику, чтобы другие выполнились.
__________________

Vanizma вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
OS для PIC24H? timday Инструментарий 217 31.03.2010 12:18
FAQ по АРМам ESD Микроконтроллеры других производителей 39 14.11.2008 12:42


Часовой пояс GMT +3, время: 00:08.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot