|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
Помогите разжевать - вопрос по инициализации22.04.2013, 10:13. Показов 15232. Ответов 24
Метки нет (Все метки)
Мужики помогите понять код. Хотелось бы разобраться до точки. После АВР-кого ассемблера я что то не въеду.
Прога на СИ в MPLAB IDE v.8.00. Есть такая строка _FOSC( CSW_FSCM_OFF & XT_PLL16 ). Ясно что это выключение модуля FSCM и настройка осцилятора. Во включаемом файле есть такое: #define _FOSC(x) __attribute__((section("__FOSC.sec,code" ))) int _FOSC = (x); #define CSW_FSCM_OFF 0xFFFF #define CSW_ON_FSCM_OFF 0x7FFF #define CSW_FSCM_ON 0x3FFF #define LP 0xF8FF #define FRC 0xF9FF #define LPRS 0xFAFF #define EXT 0xFBFF #define ECIO_PLL4 0xFFED #define ECIO_PLL8 0xFFEE #define ECIO_PLL16 0xFFEF #define FRC_PLL4 0xFFE1 #define FRC_PLL8 0xFFEA #define FRC_PLL16 0xFFE3 #define XT_PLL4 0xFFE5 #define XT_PLL8 0xFFE6 #define XT_PLL16 0xFFE7 #define HS2_PLL4 0xFFF1 #define HS2_PLL8 0xFFF2 #define HS2_PLL16 0xFFF3 #define HS3_PLL4 0xFFF5 #define HS3_PLL8 0xFFF6 #define HS3_PLL16 0xFFF7 #define ECIO 0xFBEC #define XT 0xFBE4 #define HS 0xFBE2 #define EC 0xFBEB #define ERC 0xFBE9 #define ERCIO 0xFBE8 #define XTL 0xFBE0 Значит вместо _FOSC компилятор подставляет __attribute__((section("__FOSC.sec,code" ))) int _FOSC = (x) а вместо CSW_FSCM_OFF & XT_PLL16 указанные дефайнами шестнадцатиричные числа. Вопрос: где же здесь команда ? я так понимаю это ассемблер, но как то в голове не укладывается до конца эта конструкция. Разжуйте пожалуйста. DI мож знаешь что тут к чему ? Заранее благодарен )
0
|
|
| 22.04.2013, 10:13 | |
|
Ответы с готовыми решениями:
24
Вопрос по инициализации SPI
Вопрос про список инициализации |
|
0 / 0 / 0
Регистрация: 02.07.2011
Сообщений: 96
|
|
| 22.04.2013, 10:15 | |
|
это инициализация контроллера, тут команды не нужны, это просто значения, которые записываются в определенные регистры контроллера на этапе прошивки.
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 10:32 | |
|
Вот я и не вижу где происходит запись в регистры. На ассемблере АВР мы пишем, например:
ldi r16, 0b00001111 out DDRD,r16 Вот и здесь хотелось бы увидеть конкретно где функция _FOSC прописывает значения в регистры. Где адреса регистров ? Где команды ?
0
|
|
|
SWK
|
||
| 22.04.2013, 11:30 | ||
Команды также для этого не нужны, потому что байты конфигурации пишет не контроллер, а программатор при прошивке. Он сам прошьет нужные байты по указанным в HEX файле адресам. Если сильно интересует, можно посмотреть адрес ячеек конфигурации в даташите микроконтроллера, но особого смысла в этом нет. Программатор сам эти адреса знает для всех поддерживаемых им контроллеров. И считывая конфигурацию, показывает ее уже в виде установленных или нет опций (тип генератора, и прочее). |
||
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 12:11 | |
|
Спасибо, SWK. А можно подробнее про эту запись,
#define _FOSC(x) __attribute__((section("__FOSC.sec,code" ))) int _FOSC = (x); просто она какая-то "не наглядная". Например If...then...else... тут конструкция вопросов не вызывает. А эта запись не понятна. Здесь как то задается секция кода sec,code, т.е. конкретный адрес ? Т.е. компилятор его берет из файла описания МК ? Может ссылочку подскажете где это можно подробно почитать ?
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 22.04.2013, 12:18 | |
|
Это не программа, а инструкции компилятору.
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 12:21 | |
|
ага, значит мне нужно где-то на конкретный компилятор инфу искать ))
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 22.04.2013, 12:28 | |
|
Есть стандартный мелкочиповский компилятор....
Повторю вопрос заданный другими...а зачем это искать? Вы сейчас подобны человеку который взял книжку по физике и старательно пытается вчитаться в информацию об издательстве и приветы которые автор передает своей семье и коллегам....и отказывается двигаться дальше пока не поймет почему же книга была напечатана именно в 10000 экземплярах....
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 12:38 | |
|
Не согласен ! Книжку можно прочитать и без приветов семье и коллегам, а вот если из кода выкинуть одну лишь строку он работать не будет. Я не хочу тупо писать на СИ, не понимая механизмов внутри. Так я изучал АВР - сначала ассемблер. Я понял что в данном случае это не программа, а компилятор. Но тем не менее хотелось бы узнать суть дела.
А что за стандартный мелкочиповский компилятор.... можете уточнить ? )))
0
|
|
|
SWK
|
||
| 22.04.2013, 12:40 | ||
При прошивке фузы в программаторе ставлю какие нужно. Да и вообще фузы PIC - проще, чем у AVR. Меньше их, и на процесс программирования они не влияют. Так что нет смысла особо заморачиваться. Кристалл не "залочишь", как в AVR. И тактирование на программирование не влияет (у PIC встроен независимый от основного тактовый генератор для схемы программирования). Единственно - надо осторожно использовать переназначение ноги RESIT, хоть вроде и это - для нормального программатора не смертельно. При подаче 12v на нее он все равно переходит в режим программирования. Но я пока RESIT не переназначал, ни к чему было. |
||
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
||
| 22.04.2013, 12:44 | ||
А что за МК? Для каждого семейства свой компилятор.
0
|
||
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 12:55 | |
|
Представление работы с портами и периферией имею по AVR-кам. Разница думаю не огромная )). По сути только биты и регистры по другому называются. Например: AVR - DDR, PORT, PIN; PIC - TRIS, PORT, LATA.
А МК в данный момент приходится юзать p30f3011 ))) С Уважением )
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 22.04.2013, 13:27 | |
|
0
|
|
|
SWK
|
||
| 22.04.2013, 13:32 | ||
Все порты и регистры - равноправные, не надо запоминать, с какими регистрами какие команды работают, а с какими - нет. Также по этой причине нет вечной нехватки выделенных "регистров общего назначения", не надо их вечно пихать в стек и извлекать оттуда. Документация у МикроЧипа - тоже намного удобнее. Все сгруппировано по темам, не надо при описании одного узла метаться по разным разделам. читаешь например по таймеру или USORT - тут же сразу их описание, назначение флажков, используемые регистры и прерывания, основные режимы и их настройки. А у Атмел - часто многие вещи упоминаются вскользь, или с отсылкой в другие разделы. А то - и вовсе пропущены, как таймер Т2 в доке на Мегу 128 (приходится читать про него в доке на Мегу 64). Что касается деления памяти в PIC на банки - так к этому быстро привыкаешь, а с языками высокого уровня (С или PASCAL) - так и вовсе почти не вспоминаешь, - компилятор делает размещение данных и переключение банков при обращении сам. Разве что понадобится засунуть массив размером больше банка, но этого лучше избегать. Да и редко это надо. |
||
|
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 37
|
|
| 22.04.2013, 14:36 | |
|
Спасибо за ответы и ссылку, буду курить .... )
0
|
|
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
|
||
| 22.04.2013, 17:27 | ||
Ахуеть удобно. Сливи богу можно было старые пухлые даташиты по 600 страниц найти и скачать
0
|
||
|
SWK
|
|
| 22.04.2013, 21:50 | |
|
да ладно? они с какого-то перепугу раскидали даташит с одного толстого на кучу тонких, по модулям и там начались взаимные отсылки без, собственно, самой информации. "информацию по регистрам прерываний для UART смотрите в доке "Прерывания" - "информацию по регистрам прерываний для конкретного модуля смотрите в доке по конкретному модулю"
Ахуеть удобно. Сливи богу можно было старые пухлые даташиты по 600 страниц найти и скачать Про все - не знаю. Говорю про те, которыми пользовался, что по PIC16, что по AVR. |
|
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
||
| 22.04.2013, 22:28 | ||
Человеку нужен мануал на C30, что уже находится в c:\Prokram Files (x86)\Microchip\mplabc30\v3.30c\docs\ Если сам компиль установлен. А вы ему пихаете мануал на асм .
0
|
||
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
||
| 22.04.2013, 22:35 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
||
| 22.04.2013, 22:49 | ||
Человеку нужен мануал на C30, что уже находится в c:\Prokram Files (x86)\Microchip\mplabc30\v3.30c\docs\ Если сам компиль установлен. А вы ему пихаете мануал на асм . Дык он хотел тру-асм...ибо круто
0
|
||
| 22.04.2013, 22:49 | |
|
Помогаю со студенческими работами здесь
20
разжевать код делфи
Разжевать сложный запрос Кто может разжевать регулярку?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|