Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.11.2007, 13:14
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от tempora
|
Да ты читай, читай... Не спорь.
|
Я в чем то не прав?
Тогда скажи в чем?
|
|
|
|
27.11.2007, 13:56
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от dimonbest
|
Сообщение от tempora
|
Подкрепиил?! От, оно каак!... "Ты просто не умеешь их готовить". Причем, ни одним из приведенных способов.
Почитай на досуге про Non-local Jump Functions и про прагму savereg. Кстати, как правило, рассказы про прагму savereg иллюстрируют примерами именно подмены своим кодом стандартного кода обработчика прерывания. Эту моду, похоже, ещё Борланд ввёл...
|
Про Non-local Jump Functions почитаю, еще не разбирался.
А по поводу второго способа:
даже если я запрещу сохранение регистров директивой savereg, то тогда программа будет работать некорректно. Если основная программа использует определенные регистры, и эти же саммые регистры будут использованы в прерывании, то после выхода из прерывания значения будут иными...
К тому же без директивы сохраняются не только регисты общего назначения, но и SREG.
|
Да нормально все будет работать.
В обработчике прерывания пиши на ассемблере. Сам сохраняй используемые регистры, сам восстанавливай.
Из асма к глобальным переменным получить доступ очень несложно. Приду домой, скину рабочий пример.
|
|
|
|
27.11.2007, 14:12
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от delamoure
|
Да нормально все будет работать.
В обработчике прерывания пиши на ассемблере. Сам сохраняй используемые регистры, сам восстанавливай.
Из асма к глобальным переменным получить доступ очень несложно. Приду домой, скину рабочий пример.
|
В том то и дело, что писать в обработчике прерывания буду не на асме а на Си.
|
|
|
|
27.11.2007, 15:37
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от dimonbest
|
Сообщение от delamoure
|
Да нормально все будет работать.
В обработчике прерывания пиши на ассемблере. Сам сохраняй используемые регистры, сам восстанавливай.
Из асма к глобальным переменным получить доступ очень несложно. Приду домой, скину рабочий пример.
|
В том то и дело, что писать в обработчике прерывания буду не на асме а на Си.
|
А можно задачку обрисовать вкратце? Какая цель преследуется?
Просто обычно, если возникают всякие нетрадиционные танцы с бубнами, они к добру не приводят, нечего над ними думать.
Давайте найдем нормальное решение.
|
|
|
|
27.11.2007, 15:44
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от delamoure
|
А можно задачку обрисовать вкратце? Какая цель преследуется?
Просто обычно, если возникают всякие нетрадиционные танцы с бубнами, они к добру не приводят, нечего над ними думать.
Давайте найдем нормальное решение.
|
А началось все с безобидного вопроса
Задачи конкретной пока нет...
Когда писал на асме, с прерывания можно было выйти командами ret и reti. Тобишь с разрешенныи и запрещенными прерываниями. А в компилятор всегда выходит с разрешенными прерываниями. Вопрос и был, можно ли выйти с запрещенными прерываниями. Получается "легально" нет. А если будет конкретная задача - тогда можно будет уже думать...
|
|
|
|
27.11.2007, 16:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от dimonbest
|
Я в чем то не прав? Тогда скажи в чем?
|
Легко - ты ошибаешься, предполагая, что всё понял в том, что тебе посоветовали. Тебе говорят "используй прагму savereg", ты не понимая того, как именно её нужно использовать, пытаешься представить себе какой-нибудь вариант, находишь пример, который действительно не работает, и на этом основании делаешь вывод о предложенном способе. Именно в такой последовательности мартышка построила вывод об отсутствии практической ценности у очков. ![Подмигивание](images/smilies/icon_wink.gif)
Вот я и говорю - сначала изучи вопрос, потом будет время подумать, попробовать так и сяк, а там, глядишь, и возможность делать выводы появится. Но даже и тогда - не факт, что выводы будут правильные. Посмотрим.
|
|
|
|
27.11.2007, 16:10
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от tempora
|
Легко - ты ошибаешься, предполагая, что всё понял в том, что тебе посоветовали. Тебе говорят "используй прагму savereg", ты не понимая того, как именно её нужно использовать, пытаешься представить себе какой-нибудь вариант, находишь пример, который действительно не работает, и на этом основании делаешь вывод о предложенном способе. Именно в такой последовательности мартышка построила вывод об отсутствии практической ценности у очков. ![Подмигивание](images/smilies/icon_wink.gif)
Вот я и говорю - сначала изучи вопрос, потом будет время подумать, попробовать так и сяк, а там, глядишь, и возможность делать выводы появится. Но даже и тогда - не факт, что выводы будут правильные. Посмотрим.
|
Я не знаю как еще можно использовать директиву savereg, если знаешь то подскажи! Это форум, чтоб помогать другим, а не для того чтоб играть в Что? Где? Когда?
|
|
|
|
27.11.2007, 17:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от dimonbest
|
Я не знаю как еще можно использовать директиву savereg, если знаешь то подскажи! Это форум, чтоб помогать другим, ...
|
Я уже подсказал, и ты, если б не тратил время на споры, уже давно знал бы что это такое и с чем его едят. Читать вместо тебя документацию на используемые инструменты (или даташиты на используемые мелкоконтроллеры) я не буду по двум причинам - во-первых, я уже это сделал, а во-вторых, приведение кратких выписок из документации скорее принесет вред, чем пользу - документацию на используемый компилятор нужно читать, изучать, вникать в неё - самостоятельно, а не в чьём-то кратком изложении. Кроме того (это я уже о твоей позиции), тебе полезно иметь ввиду, что у людей, помимо оказания помощи лично тебе, могут быть и другие объекты помощи, другие занятия, так что, прежде чем требовать, чтобы тебе всё разжевали и в рот положили, потрудись хотя бы пальцем пошевелить самостоятельно; скажем, нажми F1, набери "savereg", открой хелп на этом месте, прочитай (с удивлением наткнись, млин, на пример того, как можно управлять сохранением/восстановлением регистров в коде входа/выхода), попробуй сделать так, как там написано, поменяй то да сё, чтобы прочувствовать, как оно работает. Глядишь, и придёт мысль, как применить полученные знания в твоём случае...
Кстати, хорошо усваиваются и запоминаются только знания, полученные своим трудом.
|
|
|
|
27.11.2007, 23:24
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от tempora
|
...так что, прежде чем требовать, чтобы тебе всё разжевали и в рот положили,...
|
Ну во первых я от тебя ничего не требовал.
А по теме: единственное решение, которое нашел, это в прерывании не сохранять значения регистров (директивой savereg-) а сделать это на асме. Тогда в основной программе значения регистров не будут меняться, и можно будет выйти из прерывания команой ret
|
|
|
|
27.11.2007, 23:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от dimonbest
|
...я от тебя ничего не требовал
|
Разумеется, "не требовал" - в студию:
Сообщение от dimonbest
|
Я не знаю как еще можно использовать директиву savereg, если знаешь то подскажи! Это форум, чтоб помогать другим,
|
Напоминаю, это было сказано в ответ на
Сообщение от tempora
|
Почитай на досуге про Non-local Jump Functions и про прагму savereg.
(тут твоя попытка поспорить с темой, не читая о ней)
Да ты читай, читай... Не спорь.
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
CVAVR while и таймер
|
kr11507 |
Микроконтроллеры, АЦП, память и т.д |
10 |
13.12.2008 21:29 |
Програмирование портов Infenon С167
|
vadimvarn |
Микроконтроллеры, АЦП, память и т.д |
1 |
01.11.2008 02:31 |
Програмирование по SPI
|
EKuzmich |
Микроконтроллеры, АЦП, память и т.д |
2 |
09.07.2008 21:35 |
програмирование АТmega32???
|
TimaON |
Микроконтроллеры, АЦП, память и т.д |
0 |
06.05.2008 14:41 |
Програмирование attiny2313
|
Gorgic |
Микроконтроллеры, АЦП, память и т.д |
1 |
15.12.2007 00:00 |
Часовой пояс GMT +4, время: 11:14.
|
|