Страница 432 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 17:16:34
Мikа
ibiza11 писал(а):посмотрите вот эту книжку "Белов А.В. Микроконтроллеры AVR в радиолюбительской практике" может там понятнее написано?
Спойлер
Прошу помидорками не закидывать
знаю, что даташиты и аппноуты производителя - наше все, но тем, кто не очень дружит с английским (на лету не может переводить), эта книга может показаться весьма полезной. Я по этой книжке сам когда-то занимался.
Читал эту книгу, читал программы, которые там приложены. На схемах внешний резонатор есть. Но в программе никаких записей в соответствующие регистры не делается...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 17:22:35
vitalik_1984

Вы вообще даташит читали? Нельзя программно выбрать источник тактирования - только фьюзами.Для них есть отдельная тема, если что.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 17:40:31
Мikа
Читал и не сложилось конкретного понимая. То, что источник определяется фьюзами, но разьве они не в программе выставляются? Хотя, все должно заработать до того, как начнет выполняться программа. Хм. Пошел в тему фьюзов

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 17:56:36
vitalik_1984
Программе без разницы с какой скоростью она будет выполняться, единственное когда используются временные задержки, то может использоваться константа частоты используемого кварца/генератора для правильного расчета интервалов задержки.Если неправильно указать данную константу, тоже будет работать, только быстрее или медленнее.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 17:58:27
SmarTrunk
Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 18:18:18
Мikа
SmarTrunk писал(а):Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.
Вот именно поэтому я и туплю не предпринял никаких активных действий в плане их программирования. Я, кажется, понял, о чем идет речь. В ATMEL Studio 6: Tools - Device Programming - Fuses. Но сначала надо точно понять, где ставить галочки нужно, а где нет.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 01, 2013 21:13:27
vitalik_1984
Че там думать то? то что стоит, то запрограммировано, частота меняется понятно, внешний или внутренний все расписано. низкочастные кварцы это до 1 МГц, средние до 8, высокочастотные после 8. Больше 8 нужно еще ставить фьюз CKOPT.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 14:21:11
Мikа
И еще вопрос

Скольким тактам равен один цикл? Нужно чтобы рассчитать время задержки в программе на ассемблере.
Поискав в интернете нашел это:
Спойлер
Такт - он и в Африке такт. Есть еще понятие "Командный цикл". Он у AVR - 2 такта, PIC12-PIC16 - 8 тактов. Но, с учетом работы конвейера, принято считать, что большинство команд (не связанными с переходами и перезагрузкой конвейера), выполняются соответственно за 1 и 4 такта, за счет совмещения исполнения текущей команды с выборкой и декодированием следующей.
У 8051 - команды выполнялись за разное время, максимум - до 12 тактов.
У 8080 - от 3 до 17 тактов, разбитых на от 1 до 5 машинных циклов, от 3 до 5 тактов в каждом...
Источник
Получается 1 цикл = 2 тактам. Правильно?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 14:33:37
ChipKiller
Мikа писал(а):Получается 1 цикл = 2 тактам. Правильно?
нет - скачайте datasheet на любой AVR и посмотрите раздел
Instruction Set Summary
ЗЫ. как сделать задержку писал здесь
http://radiokot.ru/forum/viewtopic.php? ... start=3680
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 14:42:12
Alexeyslav
В линейном коде - один цикл - один такт. Вместе с выборкой следующей команды выполняется текущая. Переходы условные и безусловные все портят - конвеер вынужден после перехода наполнятся снова, поэтому первая команда после передачи управления(переход, вызов подпрограммы, прерывание, выход из подпрограммы) сначала выполняется фиктивный NOP одновременно с выборкой команды на которую перешло управление, и только на второй такт после перехода исполняется команда.
Обычно эта особенность уже учтена в командах перехода, в даташите посмотри что условные команды перехода в зависимости от условий выполняются 1/2/3 такта.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 14:46:50
Мikа
То, что находится в этом разделе я читаю в
Справка по Ассемблеру для 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 мне ничего, к сожалению, не говорят

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 16:33:15
ChipKiller
Мikа писал(а):там в макросах используется .if, но такой комманды в описании ассемблера для AVR
..
.if относится к директивам препроцессора, а не к командам ассемблера.
Чтобы понять как это работает включите в начале программы строку
и после компиляции загляните в файл листинга
*.lst - думаю многое прояснится
PS. примеры работы с макросами есть в хелпе к AVR Studio
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 17:11:14
Мikа
ChipKiller писал(а):.if относится к директивам препроцессора, а не к командам ассемблера.
Чтобы понять как это работает включите в начале программы строку
и после компиляции загляните в файл листинга
*.lst - думаю многое прояснится
Спасибо, щас сделаю!
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
Макрос увеличит 0b00000000 на 1, запишет его в R16 и выведет в PortB
Все правильно?
Еще вот интересно, ведь можно записать макрос в отдельный файл и обращаться к нему через .include?

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 17:19:14
ChipKiller
Макрос - это подстановка (для С-шный аналог
#define) - позволяет сократить текстовую запись ( но не размер кода !)
ведь можно записать макрос в отдельный файл и обращаться к нему через .include?
.. да
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 17:20:36
Мikа
Я извиняюсь, но где искать файл *.lst? В каталогах проекта такого нет. При поиске по всему диску у меня нашлось 3 файла с таким расширением. 2 из них принадлежат WinRar и еще один лежит в недрах каталога ATMEL Studio.
ChipKiller писал(а):Макрос - это подстановка (для С-шный аналог #define) - позволяет сократить текстовую запись ( но не размер кода !)
Как я понял, после компиляции на место метки вызова макроса вставляется весь его код.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 17:27:14
ChipKiller
Я извиняюсь, но где искать файл *.lst?
... для начала разрешите генерацию листинга в настройках project_а и в тексте добавьте
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 17:55:26
vitalik_1984
Мikа писал(а):
Что значит строчка, выделанная синим? Вернее в чем разница между ей и той, которую я выбрал? HIF и MED мне ничего, к сожалению, не говорят

Ваша выделенная синим строчка означает внешний резистор средняя частота (MEDium frequency)
Та что пониже это высокая частота (HI Frequency) О них я
писал здесь. Ну остальные думаю понятно, задержка перед запуском - количество микросекунд и количество тактов.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 18:03:35
Мikа
vitalik_1984, да, остальное понятно, спасибо огромное!
UPD: хотя нет, не все понятно

В обеих строчках написано 16 KCK, то есть оба больше 8 МГц и оба высокочастотные?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 18:26:45
vitalik_1984
В предыдущем сообщении я выделил специально где высоко где средне, так понятно? есть еще низкочастные (LOW frequency)
16kck это 16 тысяч циклов перед началом считывания,расшифровки и выполнения команд, соответственно 64 MS это микросекунды перед началом отсчета тактов.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт май 03, 2013 19:13:26
Мikа
Сообщение про низкую, среднюю и высокую частоту предельно ясно. Но в КСК 16 есть и 64, 4 и 0 мс.