lexa12 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба P.S. Оптимизацию включать пробовали? Если обработчик написан на асме, зачем включать оптимизацию и что она даст? Или Вы считаете, что команды привязки адресов служат только для формирования таблицы прерываний? Вы используете странные понятия. Что в Вашем понимании "команды привязки адресов" ? Звучит как абракадабра. Если это какие то директивы или настройки компилятора, так и пишите. ну почему же либо? стэк(если писюк то это та же озу), регистры, озу(конкретный адресс), внешняя переферия. Мне вот это очень понравилось, для Вас переферия МК и "регистры" разные понятия :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба Если обработчик написан на асме, зачем включать оптимизацию и что она даст?Если на асме - ничего не даст. Попробуйте на Си написать с включённой оптимизацией. Может и не понадобится асм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexa12 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба Если на асме - ничего не даст. Попробуйте на Си написать с включённой оптимизацией. Может и не понадобится асм. Обработчик простейший - пара команд. Если убрать сохранение в стек при вызове, получится то что надо. Писать на Си с оптимизацией наверно будет тоже самое. Я думаю может как-нибудь проинициализировать переменную в основной программе как "regvar", но настораживает, что нельзя залочить регистр в компиляторе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба Я думаю может как-нибудь проинициализировать переменную в основной программе как "regvar", но настораживает, что нельзя залочить регистр в компиляторе. __regvar __no_init unsigned short IntCounter @ 14; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexa12 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба __regvar __no_init unsigned short IntCounter @ 14; Как написано в руководстве по компилятору есть т.н. "Scratch registers" и "Preserved registers". А требуется как раз доступ к "Scratch register" недоступный __regvar. В этом то сейчас и вопрос как его залочить :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 8 февраля, 2014 Опубликовано 8 февраля, 2014 · Жалоба В этом то сейчас и вопрос как его залочить :)Компилятор предоставляет вам возможность золочить регистры R4-R15. Про другие регистры ничего не говорится. А требуется как раз доступ к "Scratch register" Самые лучшие регистры он оставил себе. есть т.н. "Scratch registers" и "Preserved registers". Это относится к соглашениям о вызовах функций. Резервирование регистров - вопрос отдельный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 203 9 февраля, 2014 Опубликовано 9 февраля, 2014 · Жалоба Компилятор предоставляет вам возможность золочить регистры R4-R15. Про другие регистры ничего не говорится. Надо-ж!... И Вы прям вот так вот запросто золочиваете R15??... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 9 февраля, 2014 Опубликовано 9 февраля, 2014 · Жалоба Надо-ж!...Отож :) И Вы прям вот так вот запросто золочиваете R15??... Хоть R14...запросто.... А что - что-то не так? Ну так напишите - что толку намёками говорить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 9 февраля, 2014 Опубликовано 9 февраля, 2014 · Жалоба ...Что в Вашем понимании... ...для Вас переферия МК и "регистры" разные понятия :) Вы не ответили на поставленный вопрос. И пытаетесь уйти от проблем возникших у Вас. странно как то.. переферия это совокупность не только регистров но и некой обвязки выполняющей определённый функционал. Например ПДП, Или скажем АЦП. Теоретически - Вам никто не мешает сохранить (зная поведение данного узла) определённого размера данные. Надеюсь Вам стали понятны отличия? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 203 10 февраля, 2014 Опубликовано 10 февраля, 2014 · Жалоба Хоть R14...запросто.... А что - что-то не так? Ну так напишите - что толку намёками говорить... А ничего что в R15 - программный счётчик? Ну если без R14 ещё как-то можно вообразить выполнение программы (без вызовов функций ;), то без PC.... затрудняюсь... Или у вас тут AVR, а не ARM? Тогда - ФИ..... :))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 10 февраля, 2014 Опубликовано 10 февраля, 2014 · Жалоба А ничего что в R15 - программный счётчик? Это - ничего...мелочи. Ну если без R14 ещё как-то можно вообразить выполнение программы (без вызовов функций ;), то без PC.... затрудняюсь...Быстро сдаётесь - а ведь могли бы сказать новое слово в науке и технике. Или у вас тут AVR, а не ARM? Тогда - ФИ..... :)))Ну да - мелко плаваем ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexa12 0 10 февраля, 2014 Опубликовано 10 февраля, 2014 · Жалоба Вы не ответили на поставленный вопрос. И пытаетесь уйти от проблем возникших у Вас. странно как то.. переферия это совокупность не только регистров но и некой обвязки выполняющей определённый функционал. Например ПДП, Или скажем АЦП. Теоретически - Вам никто не мешает сохранить (зная поведение данного узла) определённого размера данные. Надеюсь Вам стали понятны отличия? Вы не поняли вопрос. Специально для Вас повторяю развернуто "как правильно написать обработчик прерывания на ассемблере с передачей параметров (переменной) в основную программу в IAR? " И на этот вопрос уже есть ответ (не Ваш, боюсь не поймете - используя директиву EXTERN). А Вы начинаете разводить какую то теорию. Если не знаете ответа, зачем отвечать? Насчет переферии, очевидно тот же АЦП для программиста это тот же самый регистр(или регистры), тем более в контексте обсуждаемой темы. Зачем Вы разделяете эти понятия известно только Вам :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться