Добавлено: Сб июл 05, 2008 13:48:38
Установленая галка - запрограммированный (уст.0) бит. В хелпе к нему написано.
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Я так понял, что под "в окошке слева" вы имели ввиду окно в отладчике AVR Studio I/O View, да я смогу посмотреть где находятся переменные, но мне надо знать вот что, во время выполнения основной программы, я начинаю выполнять код написанный на ассемблере, который использует 10 регистров (R13-R22), во время его исполнения произошло прерывание, в теле прерывания происходят вычисления на С (умноженя,деления ...) и возникает вопрос , а не будут ли эти вычисления задействовать мои регистры (R13-R22) ? Смотреть ход выполнения всех функцый, задача не реальная. Меня интересует какие из регистров компилятор использует в своих вычислениях, а какие не трогает, и можно ли как нибуть повлиять на это.Aheir писал(а):Насчет регистров: слева в окошке с деревом проекта можно посмотреть, какие переменные в каких регистрах или иных ячейках памяти "лежат" и исходить из этого.
дело в том что , я использовал CVAVR 1.25.8 а там распредаления переменных по регистрам не видно, сейчас поставил V2.03.3 и стало видно. По листингу в отладчике видно, что при вызове прерываний сохраняются регистры R0,R1,R15.R22-R27,R30,R31Aheir писал(а):Нет, я про CVAVR говорил. А если заранее объявить необходимое количество переменных как static так, чтобы они легли в определенные регисты? Тогда вроде как их значения (т.е. регистры) меняться не будут, и Вы сможете творить с ними на АСМе, что требуется.
Действительно - только в тех случаях, когда процессору и без клавиатуры есть чем заняться, а в учебных задачах это редкость.ARV писал(а):... использование прерываний для обработки клавиатуры действительно необходимо очень-очень редко...
Старый анекдот писал(а):Обещали - когда научимся нырять, нам в бассейн воду нальют...
скажу даже больше: когда процессор должен что-то делать "непрерывно", например, динамическую индикацию, АЦП - вот тут прерывания актуальны. Гораздо логичнее прервать функцию сканирования клавиатуры (которой в принципе все равно - 10 мс будет задержка или 11, или даже 20) обработкой АЦП, чем наоборотYellow Tiger писал(а):Действительно - только в тех случаях, когда процессору и без клавиатуры есть чем заняться, а в учебных задачах это редкость.
А что это у Вас список альтернатив так короток?!ARV писал(а):что более "от лукавого": прерывать на обработку клавиатуры (напомню - подавление дребезга - это равносильно 10 мс задержке) процедуру динамической индикации, или наоборот.

. Процедуры обработки прерываний д.б. как можно короче и должны заниматься только обработкой вызвавшего их события (так-что, никаких лишних задержек - ни на 10мс, ни на 50, ни на одну!), а антидребезг - это уже агрегирующая функция.
)Читайте, пожалуйста, внимательнее, а-то, в вашем изложении, всё получается строго наоборот: я сказал, что асинхронные события следует и обрабатывать асинхронно, а вы утверждаете, будто я за то, чтобы оба асинхронных события обрабатывать синхронно - разве же можно так путать?!ARV писал(а):то есть по-вашему выходит, что надо и динамическую индикацию делать без прерываний, и опрос клавы,
Если бы вы были чуточку внимательнее, вы заметили бы, что именно вызвало у меня возражения. Вы помните, как вы описали работу процедуры прерывания от клавиатуры? Цитирую:Yellow Tiger писал(а):Процедуры обработки прерываний д.б. как можно короче и должны заниматься только обработкой вызвавшего их события
То есть, вы почему-то считаете, что эта "10мс задержка" обязательно д.б. внутри процедуры обработки прерывания!ARV писал(а):...прерывать на обработку клавиатуры (напомню - подавление дребезга - это равносильно 10 мс задержке)...
Так-что, асинхронные ввод и вывод я рекомендую делать на прерываниях (когда это возможно), но только ввод и вывод(!), а не процедуры обработки введенных данных и подготовки данных для вывода! Скажем, готовить битовую маску для засвечивания правильных сегментов нужно не в процедуре вывода, а до неё, процедура же вывода должна только взять уже готовые данные и вывести - и больше ничего! Потому я и обращал внимание на необходимость выделять из процедур ввода/вывода ту часть кода, которая лишь обрабатывает/подготавливает данные, что это позволяет сделать процедуры обработки прерываний возможно более короткими.Yellow Tiger писал(а):и должны заниматься только обработкой вызвавшего их события (так-что, никаких лишних задержек - ни на 10мс, ни на 50, ни на одну!)
Если из нескольких вариантов выбрасывать правильные и оставлять к рассмотрению пару неправильных, то не только не станет проще выяснять истину - её вообще нельзя будет найти. Задачу об Ахиллесе и черепахе помните?ARV писал(а):список альтернатив так короток потому, чтобы проще было выявить истину
я был правARV писал(а):чувствую, мне пора самоустраниться и из этой темы...
Я прошу вас вернуться немного вверх и проверить - на какую именно вашу фразу я отозвался. И если вы это сделаете, то обнаружите, что речь идет вовсе не о том, как вы рекомендовали поступать в некоем конкретном случае, а о том, что вы человеку, который примет ваши слова за чистую монету, сказали буквально следующее:ARV писал(а):человек, не умеющий обработать кнопку никак вообще,
Вы даже акцент сделали на словах "действительно необходимо". И вот, чтобы он не "всосал" это утверждение вместе с тем, что выполняет для него сейчас роль молока матери, я и привел точку зрения, которую считаю верной.ARV писал(а):вообще, использование прерываний для обработки клавиатуры действительно необходимо очень-очень редко...
Я объяснил:ARV писал(а):объясните другим так, чтобы они смогли последовать вашему совету...
Дополнено:Yellow Tiger писал(а):ввод и вывод я рекомендую делать на прерываниях (когда это возможно), но только ввод и вывод(!), а не процедуры обработки введенных данных и подготовки данных для вывода ... Скажем, готовить битовую маску для засвечивания правильных сегментов нужно не в процедуре вывода, а до неё, процедура же вывода должна только взять уже готовые данные и вывести...
Попробуйте вот это.Pippeytz писал(а):У меня вот нефига не получаеться написать даже елементарщину, ...
Если ЖДАГ не помешает. Подробней на стр. 2 курса "устройство AVR"Pippeytz писал(а):Cпачибо, уже разобарался но ваше пример тоже посмотрел. Вот еще небольшой вопрос : при настройке портов запись
DDRC= 0b1111111
Значит , что все билты в проту С будут выходами?