Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

wixa писал(а): - он будет выглядеть вот так?

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

.macro CJQE
    CPI   @0,@1  
   BREQ   @2
   .endm
Наверно все-таки CJEQ, а не CJQE, хотя назвать можно хоть COMPJMPIFEQU, главное потом при вызове не опечататься...
wixa писал(а): А циклы будут такого вида:
или так:
-?
Ну очевидно что RJMP нужен, так? Значит либо вносим его в макрос, либо пишем каждый раз отдельно, после вызова макроса. Макрос, это ведь просто подстановка внутримакросного кода в месте его вызова.
Реклама
Аватара пользователя
wixa
Открыл глаза
Сообщения: 52
Зарегистрирован: Вс ноя 27, 2011 17:44:34

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение wixa »

:) Как раз понял пока ждал ответа что правильный второй вариант :)

Как я понял из инета, BRNE работает, только там, где между BRNE и вызываемой функцией, не больше 127 машинных тактов.... если больше нужно уже идти через RJMP.... Правильно ?

Правда я пока не понимаю как работают циклы, и не могу посчитать сколько они занимают этих тактов :)
Кот заболел Ринотрахиитом :( (тот что на фото)
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

wixa писал(а):Как я понял из инета, BRNE работает, только там, где между BRNE и вызываемой функцией, не больше 127 машинных тактов....
Только не тактов, а адресов программной памяти.
wixa писал(а):если больше нужно уже идти через RJMP.... Правильно ?
А если и RJMP не хватает (+- 2К), то тогда JMP. Но это в контроллерах с более чем 8К памяти.
wixa писал(а): Правда я пока не понимаю как работают циклы, и не могу посчитать сколько они занимают этих тактов :)
Ищите за сколько тактов выполняется каждая команда и умножайте на количество выполнений :) Большинство команд выполняются за 1 такт, это RISC архитектура.
Аватара пользователя
wixa
Открыл глаза
Сообщения: 52
Зарегистрирован: Вс ноя 27, 2011 17:44:34

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение wixa »

А как же тогда считается эта программная память? или сначала пишешь, потом выдаёт ошибку, потом исправляешь ?
Кот заболел Ринотрахиитом :( (тот что на фото)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

Считается так же как и такты - по количеству команд. В справке на каждую команду написано, за сколько тактов она выполняется и сколько памяти занимает. Большинство команд занимают одно слово (2 байта). Счетчик команд работает со словами, а адресация в командах BRxx - 7 разрядная (по опкоду с той-же справке видно), вот и получается что больше чем на 63 шага (слова) назад и больше чем на 64 вперед она перепрыгнуть не может.
Обычно так и получается, пишется программа, отлаживается, что-то добавляется и в какой-то момент может возникнуть ситуация когда приходится BRNE заменять на противоположную команду+RJMP, или наоборот.
Адреса можно посмотреть, если включить в настройках project-assembler oprions -create list file. В файле lst в первой колонке будет адрес. Если например у метки RES будет адрес 0x2C, то достать до нее можно максимум из строки с адресом 0x2C+0x3F=0x6B. А если поставить BRNE на нее позднее и вылезет та самая ошибка.
Последний раз редактировалось Engineer_Keen Пт апр 27, 2012 10:43:44, всего редактировалось 1 раз.
Реклама
Аватара пользователя
wixa
Открыл глаза
Сообщения: 52
Зарегистрирован: Вс ноя 27, 2011 17:44:34

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение wixa »

Engineer_Keen писал(а): В справке на каждую команду написано
- а где эту справку взять ?:)

Когда последовательно написаны команды, вроде понятно, а вот как считать внутри цикла, считаются все проходки по циклу, или только одна?
Кот заболел Ринотрахиитом :( (тот что на фото)
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

wixa писал(а):а где эту справку взять ?:)
Да хоть в самой студии курсор на команду поставить и F1 нажать :))
wixa писал(а): Когда последовательно написаны команды, вроде понятно, а вот как считать внутри цикла, считаются все проходки по циклу, или только одна?
Если считаем занятую память, то один проход, а если задержку в тактах, тогда конечно все проходы, причем нужно учитывать, что например BRNE в случае невыполнения условия выполняется за 1 такт (просто переход на следующую команду), а в случае выполнения условия - за 2 такта (прыжок на назначенный адрес), это в справке есть.
Аватара пользователя
wixa
Открыл глаза
Сообщения: 52
Зарегистрирован: Вс ноя 27, 2011 17:44:34

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение wixa »

Engineer_Keen писал(а): Да хоть в самой студии курсор на команду поставить и F1 нажать :))
Видимо у меня как то она плохо настроена :))) Может какую то онлайн посоветуете? или справочник какой то скачать ?
Engineer_Keen писал(а): Когда последовательно написаны команды, вроде понятно, а вот как считать внутри цикла, считаются все проходки по циклу, или только одна?
Если считаем занятую память, то один проход, а если задержку в тактах, тогда конечно все проходы, причем нужно учитывать, что например BRNE в случае невыполнения условия выполняется за 1 такт (просто переход на следующую команду), а в случае выполнения условия - за 2 такта (прыжок на назначенный адрес), это в справке есть.
С каждым разом становится всё интереснее и интереснее :)) Да в Си как то скучнее.... :))
Кот заболел Ринотрахиитом :( (тот что на фото)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

wixa писал(а): Видимо у меня как то она плохо настроена :))) Может какую то онлайн посоветуете? или справочник какой то скачать ?
А просто help-assembler help не работает?
Я уже тут дал ссылку.
Аватара пользователя
wixa
Открыл глаза
Сообщения: 52
Зарегистрирован: Вс ноя 27, 2011 17:44:34

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение wixa »

Engineer_Keen писал(а):
wixa писал(а): Видимо у меня как то она плохо настроена :))) Может какую то онлайн посоветуете? или справочник какой то скачать ?
А просто help-assembler help не работает?
Че-то как то нет :)

Вот нашел, помойму неплохая справка http://dfe3300.karelia.ru/koi/posob/avr ... sm-rus.htm
Кот заболел Ринотрахиитом :( (тот что на фото)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Engineer_Keen »

Сойдет. Конечно не такая подробная как по F1, но основные параметры команд написаны.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Attiny13 : 3х канальный ШИМ по внешниму прерыванию

Сообщение Alexeyslav »

Самая полная информация по командам можно найти в даташите на контроллер, там есть сводная таблица и краткое описание каждой команды.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»