Страница 206 из 400

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 11:57:54
FreshMan
pyzhman, ну вот зачем вы так меня поддергиваете........ я уже догадывался что сморозил ерунду. :oops:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 14:14:19
ploop
Только учитываем, что при сбросе вся память херится к чертовой матери. :))
Откуда такая информация? Только при отключении питания.
если в атмеге 8 я хочу повесить кнопку на вывод ресет то для этого мне уже не обязательно с помощью фьюзов данную ногу конфигурировать на ввод, а потом с помощью паралельного прогера все это исправлять......, теперь мне просто надо следить за 1 битом регистра MCUCSR и при его установке выполнять некие события в проге.
Нет. Просто делаете переменную в памяти, которая изменяет своё значение после сброса, её и анализируете.
Способ подходит для простых применений: мигалок всяких, гирлянд и т.д, т.к. при включении питания её состояние будет не определено (то есть может быть любым).

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 15:40:04
vitalik_1984
Во наговорили :)) . Насколько я знаю в некоторых Мк есть специальные биты в определенном регистре по которым можно узнать по какой причине произошел сброс. Далее нужно просто отделить мух от котлет и определить нужно ли инициализировать переменные(в случае первого включения), либо просто обработать нажатие на кнопку или собаку.

Единственное условие- всегда после считывания этих битов нужно сразу их сбросить так как они устанавливаются аппаратно и сохраняются вплоть до выключения Мк.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 18:11:47
pyzhman
2FreshMan: никаких поддергиваний, всё взаправду.
ploop писал(а):Только при отключении питания.
Согласен.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 20:42:06
FreshMan
ploop писал(а):Только при отключении питания.
а откуда такая информация ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 21:03:39
ploop
Мля, пару страниц назад разговаривали на эту тему. Ты или впитывай, или сам разбирайся.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 21:24:40
FreshMan
да тот разговор я помню....., просто хотелось узнать нет ли у атмела какого либо обще-официального документа, кроме даташита конечно, где описывается общий принцип работы их МК.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 22:47:24
ploop
Есть. На сайте. Всё по архитектуре расписано.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 14, 2013 23:16:55
FreshMan
если вас не затруднит, ткните носом на данный документ, пожалуйста

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 21, 2013 16:47:32
FreshMan
дорогие братья по разуму, а не скрыта ли сдесь ошибка ?
может там надо reti вместо ret ?
http://radiokot.ru/start/mcu_fpga/avr/15/
Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 21, 2013 16:55:38
pyzhman
Ошибкой как таковой не является. Просто заткнуться все прерывания. Если ВДРУГ программа скакнет туда.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 21, 2013 17:00:13
FreshMan
но ведь для выхода из прерывания юзается RETI
али я неправ ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб сен 21, 2013 17:04:27
pyzhman
Если не хочется открывать прерывания, то надо пользоваться ret. reti делается всё то же самое, что и ret, только еще разрешает глобальные прерывания, т.е. взводит флаг I.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 09:08:36
FreshMan
но ведь ret используется при выходе из подпрограммы( ф-ции), а мы говорим о прерываниях......, ничего не пойму...., каламбур какой-то :dont_know:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 10:20:14
ploop
Да никакого каламбура.
Если в подпрограмме понадобилось выключить прерывание, а по выходе включить, можно использовать такой код:

Код: Выделить всё

my_func:
cli() ; отключили прерывания
....
тут мой код
....
sei() ;включили
ret   ;выходим
А можно такой:

Код: Выделить всё

my_func:
cli() ; отключили прерывания
....
тут мой код
....
reti ; Включили и выходим
В последнем случае экономим одну команду.
Так же и внутри прерывания можно принудительно включить прерывания, и выходить из него через ret. Однако вложенные прерывания использовать не советую.

Так же из любого участка кода через ret или reti можно выйти совсем не туда, откуда пришли, а совсем в другое место, предварительно заменив на стеке адрес возврата :)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 11:12:04
FreshMan
ploop писал(а):В последнем случае экономим одну команду.
зачем тогда вообще придумывали ret ?
или может быть случай когда при выходе из подпрограммы нам не надо включать прерывания ?
хотя я такого не встречал....., обычно при входе в подпрограмму мы запрещаем прерывания

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 11:42:40
ploop
Случаи всякие бывают.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 19:08:20
Seriyvolk
Привет, парни. В МК пока дуб, поэтому вопрос: какой программе принадлежат эти файлы?
Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс сен 22, 2013 19:20:46
pyzhman
Протеус?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пн сен 23, 2013 08:00:00
Engineer_Keen
Смотря какие, от протеуса там DSN, PWI и DBK, от AVR-студии APS, AWS, avrbuild.bat, остальные - файлы с исходным кодом на асме.