Потому что хочу научиться.
Мелкие вопросы по МК и ПЛИС.
Щас почитаю, спасибо! Надеюсь, что тактирование от внешнего резонатора в Tiny аналогично Mega 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Реклама
А вот и фиг там, у тинек выводов слишком мало чтобы отводить два под кварц - у них только тактовый вход есть, кварцевого генератора нет.
Навесной монтаж.Мikа писал(а):с беспаячного (или как правильно?) варианта
Docendo discimus
Это не так. У многих ATtiny есть возможность подключения кварцевого резонатора. Для каждой ATtiny нужно смотреть на этот счет datasheet.Alexeyslav писал(а):у тинек выводов слишком мало чтобы отводить два под кварц - у них только тактовый вход есть
Читал эту книгу, читал программы, которые там приложены. На схемах внешний резонатор есть. Но в программе никаких записей в соответствующие регистры не делается...ibiza11 писал(а):посмотрите вот эту книжку "Белов А.В. Микроконтроллеры AVR в радиолюбительской практике" может там понятнее написано?Спойлер
Прошу помидорками не закидыватьзнаю, что даташиты и аппноуты производителя - наше все, но тем, кто не очень дружит с английским (на лету не может переводить), эта книга может показаться весьма полезной. Я по этой книжке сам когда-то занимался.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Реклама
Читал и не сложилось конкретного понимая. То, что источник определяется фьюзами, но разьве они не в программе выставляются? Хотя, все должно заработать до того, как начнет выполняться программа. Хм. Пошел в тему фьюзов 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Программе без разницы с какой скоростью она будет выполняться, единственное когда используются временные задержки, то может использоваться константа частоты используемого кварца/генератора для правильного расчета интервалов задержки.Если неправильно указать данную константу, тоже будет работать, только быстрее или медленнее.
Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.
Вот именно поэтому я и туплю не предпринял никаких активных действий в плане их программирования. Я, кажется, понял, о чем идет речь. В ATMEL Studio 6: Tools - Device Programming - Fuses. Но сначала надо точно понять, где ставить галочки нужно, а где нет.SmarTrunk писал(а):Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Че там думать то? то что стоит, то запрограммировано, частота меняется понятно, внешний или внутренний все расписано. низкочастные кварцы это до 1 МГц, средние до 8, высокочастотные после 8. Больше 8 нужно еще ставить фьюз CKOPT.
И еще вопрос
Скольким тактам равен один цикл? Нужно чтобы рассчитать время задержки в программе на ассемблере.
Поискав в интернете нашел это:
Получается 1 цикл = 2 тактам. Правильно?
Поискав в интернете нашел это:
Спойлер
ИсточникТакт - он и в Африке такт. Есть еще понятие "Командный цикл". Он у AVR - 2 такта, PIC12-PIC16 - 8 тактов. Но, с учетом работы конвейера, принято считать, что большинство команд (не связанными с переходами и перезагрузкой конвейера), выполняются соответственно за 1 и 4 такта, за счет совмещения исполнения текущей команды с выборкой и декодированием следующей.
У 8051 - команды выполнялись за разное время, максимум - до 12 тактов.
У 8080 - от 3 до 17 тактов, разбитых на от 1 до 5 машинных циклов, от 3 до 5 тактов в каждом...
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
нет - скачайте datasheet на любой AVR и посмотрите раздел Instruction Set SummaryМikа писал(а):Получается 1 цикл = 2 тактам. Правильно?
ЗЫ. как сделать задержку писал здесь http://radiokot.ru/forum/viewtopic.php? ... start=3680
В линейном коде - один цикл - один такт. Вместе с выборкой следующей команды выполняется текущая. Переходы условные и безусловные все портят - конвеер вынужден после перехода наполнятся снова, поэтому первая команда после передачи управления(переход, вызов подпрограммы, прерывание, выход из подпрограммы) сначала выполняется фиктивный NOP одновременно с выборкой команды на которую перешло управление, и только на второй такт после перехода исполняется команда.
Обычно эта особенность уже учтена в командах перехода, в даташите посмотри что условные команды перехода в зависимости от условий выполняются 1/2/3 такта.
Обычно эта особенность уже учтена в командах перехода, в даташите посмотри что условные команды перехода в зависимости от условий выполняются 1/2/3 такта.
То, что находится в этом разделе я читаю в Справка по Ассемблеру для Atmel AVR. Там даташитный #Clocks переведено как цикл. Но сколько тактов длится один цикл не понятно 
Прошел по ссылке - сначала пойду разберусь, что такое макрос
UPD Alexeyslav, спасибо, буду разбираться!
И ещё UPD: там в макросах используется .if, но такой комманды в описании ассемблера для AVR в графе Мнемоника нет. Зато есть в графе Операция. Например if(Rr(b)==0) PC = PC + 2 or 3, можете объяснить?
Сколько ж можно UPD
Добрался до фьюзов и тактирования МК. Выставил CKOPT и поставил SUT_CKSEL EXTHIFXTALRES_16KCK_64MS.
Устройство заработало намного быстрее. ВИдимо, результата добился. Но опять-таки вопрос.

Что значит строчка, выделанная синим? Вернее в чем разница между ей и той, которую я выбрал? HIF и MED мне ничего, к сожалению, не говорят
Прошел по ссылке - сначала пойду разберусь, что такое макрос
UPD Alexeyslav, спасибо, буду разбираться!
И ещё UPD: там в макросах используется .if, но такой комманды в описании ассемблера для AVR в графе Мнемоника нет. Зато есть в графе Операция. Например if(Rr(b)==0) PC = PC + 2 or 3, можете объяснить?
Сколько ж можно UPD
Устройство заработало намного быстрее. ВИдимо, результата добился. Но опять-таки вопрос.

Что значит строчка, выделанная синим? Вернее в чем разница между ей и той, которую я выбрал? HIF и MED мне ничего, к сожалению, не говорят
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
.. .if относится к директивам препроцессора, а не к командам ассемблера.Мikа писал(а):там в макросах используется .if, но такой комманды в описании ассемблера для AVR
Чтобы понять как это работает включите в начале программы строку
Код: Выделить всё
.listmacPS. примеры работы с макросами есть в хелпе к AVR Studio
Спасибо, щас сделаю!ChipKiller писал(а):.if относится к директивам препроцессора, а не к командам ассемблера.
Чтобы понять как это работает включите в начале программы строкуи после компиляции загляните в файл листинга *.lst - думаю многое прояснитсяКод: Выделить всё
.listmac
Порывшись в интернете структуру макроса я вроде бы понял. Поправьте, если не прав.ChipKiller писал(а):PS. примеры работы с макросами есть в хелпе к AVR Studio
Кратко:
Код: Выделить всё
.macro avr ;начало макроса с именем avr
inc, @0 ;инкременировать переменную @0
ldi R16, @0; записать @0 в R16
out @1, R16 вывести R16 в @1
.endm
;обращение в программе:
avr 0b00000000, PortB ;вызвать макрос avr, при @0=0b00000000 и @1=PortB
Все правильно?
Еще вот интересно, ведь можно записать макрос в отдельный файл и обращаться к нему через .include?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Макрос - это подстановка (для С-шный аналог #define) - позволяет сократить текстовую запись ( но не размер кода !)
.. даведь можно записать макрос в отдельный файл и обращаться к нему через .include?
Я извиняюсь, но где искать файл *.lst? В каталогах проекта такого нет. При поиске по всему диску у меня нашлось 3 файла с таким расширением. 2 из них принадлежат WinRar и еще один лежит в недрах каталога ATMEL Studio.
Как я понял, после компиляции на место метки вызова макроса вставляется весь его код.ChipKiller писал(а):Макрос - это подстановка (для С-шный аналог #define) - позволяет сократить текстовую запись ( но не размер кода !)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... для начала разрешите генерацию листинга в настройках project_а и в тексте добавьтеЯ извиняюсь, но где искать файл *.lst?
Код: Выделить всё
.list


