Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

ibiza11 писал(а):посмотрите вот эту книжку "Белов А.В. Микроконтроллеры AVR в радиолюбительской практике" может там понятнее написано?
СпойлерПрошу помидорками не закидывать :) знаю, что даташиты и аппноуты производителя - наше все, но тем, кто не очень дружит с английским (на лету не может переводить), эта книга может показаться весьма полезной. Я по этой книжке сам когда-то занимался.


Читал эту книгу, читал программы, которые там приложены. На схемах внешний резонатор есть. Но в программе никаких записей в соответствующие регистры не делается...
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

:facepalm: Вы вообще даташит читали? Нельзя программно выбрать источник тактирования - только фьюзами.Для них есть отдельная тема, если что.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

Читал и не сложилось конкретного понимая. То, что источник определяется фьюзами, но разьве они не в программе выставляются? Хотя, все должно заработать до того, как начнет выполняться программа. Хм. Пошел в тему фьюзов :dont_know:
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

Программе без разницы с какой скоростью она будет выполняться, единственное когда используются временные задержки, то может использоваться константа частоты используемого кварца/генератора для правильного расчета интервалов задержки.Если неправильно указать данную константу, тоже будет работать, только быстрее или медленнее.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение SmarTrunk »

Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

SmarTrunk писал(а):Фьюзы в AVR программируются программатором, к программе не имеют никакого отношения. Их можно считать, посмотреть, изменить, записать. Делать это не безопасно, можно ввести МК в такой режим, что понадобится внешний кварц или тактовый генератор (в лучшем случае), или параллельный программатор.

Вот именно поэтому я и туплю не предпринял никаких активных действий в плане их программирования. Я, кажется, понял, о чем идет речь. В ATMEL Studio 6: Tools - Device Programming - Fuses. Но сначала надо точно понять, где ставить галочки нужно, а где нет.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

Че там думать то? то что стоит, то запрограммировано, частота меняется понятно, внешний или внутренний все расписано. низкочастные кварцы это до 1 МГц, средние до 8, высокочастотные после 8. Больше 8 нужно еще ставить фьюз CKOPT.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

И еще вопрос :) Скольким тактам равен один цикл? Нужно чтобы рассчитать время задержки в программе на ассемблере.

Поискав в интернете нашел это:

Спойлер
Такт - он и в Африке такт. Есть еще понятие "Командный цикл". Он у AVR - 2 такта, PIC12-PIC16 - 8 тактов. Но, с учетом работы конвейера, принято считать, что большинство команд (не связанными с переходами и перезагрузкой конвейера), выполняются соответственно за 1 и 4 такта, за счет совмещения исполнения текущей команды с выборкой и декодированием следующей.
У 8051 - команды выполнялись за разное время, максимум - до 12 тактов.
У 8080 - от 3 до 17 тактов, разбитых на от 1 до 5 машинных циклов, от 3 до 5 тактов в каждом...

Источник


Получается 1 цикл = 2 тактам. Правильно?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ChipKiller »

Мikа писал(а):Получается 1 цикл = 2 тактам. Правильно?
нет - скачайте datasheet на любой AVR и посмотрите раздел Instruction Set Summary

ЗЫ. как сделать задержку писал здесь viewtopic.php?f=20&t=5931&start=3680
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Alexeyslav »

В линейном коде - один цикл - один такт. Вместе с выборкой следующей команды выполняется текущая. Переходы условные и безусловные все портят - конвеер вынужден после перехода наполнятся снова, поэтому первая команда после передачи управления(переход, вызов подпрограммы, прерывание, выход из подпрограммы) сначала выполняется фиктивный NOP одновременно с выборкой команды на которую перешло управление, и только на второй такт после перехода исполняется команда.
Обычно эта особенность уже учтена в командах перехода, в даташите посмотри что условные команды перехода в зависимости от условий выполняются 1/2/3 такта.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

То, что находится в этом разделе я читаю в Справка по Ассемблеру для Atmel AVR. Там даташитный #Clocks переведено как цикл. Но сколько тактов длится один цикл не понятно :(
Прошел по ссылке - сначала пойду разберусь, что такое макрос :)

UPD Alexeyslav, спасибо, буду разбираться!

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

Сколько ж можно UPD :D Добрался до фьюзов и тактирования МК. Выставил CKOPT и поставил SUT_CKSEL EXTHIFXTALRES_16KCK_64MS.
Устройство заработало намного быстрее. ВИдимо, результата добился. Но опять-таки вопрос.

Изображение

Что значит строчка, выделанная синим? Вернее в чем разница между ей и той, которую я выбрал? HIF и MED мне ничего, к сожалению, не говорят :(
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ChipKiller »

Мikа писал(а):там в макросах используется .if, но такой комманды в описании ассемблера для AVR
.. .if относится к директивам препроцессора, а не к командам ассемблера.
Чтобы понять как это работает включите в начале программы строку

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

.listmac
и после компиляции загляните в файл листинга *.lst - думаю многое прояснится

PS. примеры работы с макросами есть в хелпе к AVR Studio
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

ChipKiller писал(а):.if относится к директивам препроцессора, а не к командам ассемблера.
Чтобы понять как это работает включите в начале программы строку

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

.listmac
и после компиляции загляните в файл листинга *.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? :)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ChipKiller »

Макрос - это подстановка (для С-шный аналог #define) - позволяет сократить текстовую запись ( но не размер кода !)
ведь можно записать макрос в отдельный файл и обращаться к нему через .include?
.. да
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

Я извиняюсь, но где искать файл *.lst? В каталогах проекта такого нет. При поиске по всему диску у меня нашлось 3 файла с таким расширением. 2 из них принадлежат WinRar и еще один лежит в недрах каталога ATMEL Studio.

ChipKiller писал(а):Макрос - это подстановка (для С-шный аналог #define) - позволяет сократить текстовую запись ( но не размер кода !)

Как я понял, после компиляции на место метки вызова макроса вставляется весь его код.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ChipKiller »

Я извиняюсь, но где искать файл *.lst?
... для начала разрешите генерацию листинга в настройках project_а и в тексте добавьте
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

Мikа писал(а):Что значит строчка, выделанная синим? Вернее в чем разница между ей и той, которую я выбрал? HIF и MED мне ничего, к сожалению, не говорят :(

Ваша выделенная синим строчка означает внешний резистор средняя частота (MEDium frequency)
Та что пониже это высокая частота (HI Frequency) О них я писал здесь. Ну остальные думаю понятно, задержка перед запуском - количество микросекунд и количество тактов.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

vitalik_1984, да, остальное понятно, спасибо огромное!

UPD: хотя нет, не все понятно :) В обеих строчках написано 16 KCK, то есть оба больше 8 МГц и оба высокочастотные?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

В предыдущем сообщении я выделил специально где высоко где средне, так понятно? есть еще низкочастные (LOW frequency)

16kck это 16 тысяч циклов перед началом считывания,расшифровки и выполнения команд, соответственно 64 MS это микросекунды перед началом отсчета тактов.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Мikа »

Сообщение про низкую, среднюю и высокую частоту предельно ясно. Но в КСК 16 есть и 64, 4 и 0 мс.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Ответить

Вернуться в «Разные вопросы по МК»