Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/79: Рейтинг темы: голосов - 79, средняя оценка - 4.59
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2013, 10:13
Ответы с готовыми решениями:

Вопрос по инициализации SPI
Доброго времени! Уже пару дней пытаюсь заставить работать SPI на STM32F030 и как то все безрезультатьно. Конечная цель - подцепить...

Вопрос по инициализации Graph.tpu
Добрый вечер, мне вот надо делать лабораторную работу по Паскалю с графическими объектами, и тут система дает такой выкидон: при попытки...

Вопрос про список инициализации
class A { public: A() {i=1;} private: int i; }; class B { public:

24
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
Цитата Сообщение от siriko55
Вот и здесь хотелось бы увидеть конкретно где функция _FOSC прописывает значения в регистры. Где адреса регистров ?
Где команды ?
Адрес - фиксированный, за пределами памяти команд. Он будет указан в HEX файле прошивки после компиляции программы.
Команды также для этого не нужны, потому что байты конфигурации пишет не контроллер, а программатор при прошивке. Он сам прошьет нужные байты по указанным в 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
Цитата Сообщение от siriko55
А эта запись не понятна. Здесь как то задается секция кода sec,code, т.е. конкретный адрес ? Т.е. компилятор его берет из файла описания МК ? Может ссылочку подскажете где это можно подробно почитать ?
Я в последние годы МикроПаскаль использую, там конфигурация просто в свойствах проекта создается. Просто указываешь тактовую частоту, тип контроллера.
При прошивке фузы в программаторе ставлю какие нужно.

Да и вообще фузы PIC - проще, чем у AVR. Меньше их, и на процесс программирования они не влияют. Так что нет смысла особо заморачиваться. Кристалл не "залочишь", как в AVR.
И тактирование на программирование не влияет (у PIC встроен независимый от основного тактовый генератор для схемы программирования).

Единственно - надо осторожно использовать переназначение ноги RESIT, хоть вроде и это - для нормального программатора не смертельно. При подаче 12v на нее он все равно переходит в режим программирования. Но я пока RESIT не переназначал, ни к чему было.
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
22.04.2013, 12:44
Цитата Сообщение от siriko55
Не согласен ! Книжку можно прочитать и без приветов семье и коллегам, а вот если из кода выкинуть одну лишь строку он работать не будет. Я не хочу тупо писать на СИ, не понимая механизмов внутри. Так я изучал АВР - сначала ассемблер. Я понял что в данном случае это не программа, а компилятор. Но тем не менее хотелось бы узнать суть дела.
А что за стандартный мелкочиповский компилятор.... можете уточнить ? )))
Желаете механизмов?...для начала научитесь работать с портами и периферией.

А что за МК? Для каждого семейства свой компилятор.
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
http://ww1.microchip.com/downtoods/en/D ... 51317e.pdf
0
SWK
22.04.2013, 13:32
Цитата Сообщение от siriko55
Представление работы с портами и периферией имею по AVR-кам. Разница думаю не огромная )). По сути только биты и регистры по другому называются.
Лично для меня - разница AVR и PIC - в пользу PIC.
Все порты и регистры - равноправные, не надо запоминать, с какими регистрами какие команды работают, а с какими - нет.
Также по этой причине нет вечной нехватки выделенных "регистров общего назначения", не надо их вечно пихать в стек и извлекать оттуда.

Документация у МикроЧипа - тоже намного удобнее. Все сгруппировано по темам, не надо при описании одного узла метаться по разным разделам. читаешь например по таймеру или 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
Документация у МикроЧипа - тоже намного удобнее. Все сгруппировано по темам, не надо при описании одного узла метаться по разным разделам. читаешь например по таймеру или USORT - тут же сразу их описание, назначение флажков, используемые регистры и прерывания, основные режимы и их настройки.
да ладно? они с какого-то перепугу раскидали даташит с одного толстого на кучу тонких, по модулям и там начались взаимные отсылки без, собственно, самой информации. "информацию по регистрам прерываний для UART смотрите в доке "Прерывания" - "информацию по регистрам прерываний для конкретного модуля смотрите в доке по конкретному модулю"
Ахуеть удобно. Сливи богу можно было старые пухлые даташиты по 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
Цитата Сообщение от Bottyk
http://ww1.microchip.com/downtoods/en/DeviceDoc/Asm30_Link_Util_51317e.pdf
Ах ...ть .
Человеку нужен мануал на C30, что уже находится в c:\Prokram Files (x86)\Microchip\mplabc30\v3.30c\docs\
Если сам компиль установлен.
А вы ему пихаете мануал на асм .
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.04.2013, 22:35
Цитата Сообщение от SWK
Что касается деления памяти в PIC на банки - так к этому быстро привыкаешь, а с языками высокого уровня (С или PASCAL) - так и вовсе почти не вспоминаешь, - компилятор делает размещение данных и переключение банков при обращении сам. Разве что понадобится засунуть массив размером больше банка, но этого лучше избегать. Да и редко это надо.
Уважаемый, то что вы терзаете и что начал изучать ТС имеют общее ,разве только буковки PIC в наименовании ...
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
22.04.2013, 22:49
Цитата Сообщение от dosykus_2
Цитата Сообщение от Bottyk
http://ww1.microchip.com/downtoods/en/DeviceDoc/Asm30_Link_Util_51317e.pdf
Ах ...ть .
Человеку нужен мануал на C30, что уже находится в c:\Prokram Files (x86)\Microchip\mplabc30\v3.30c\docs\
Если сам компиль установлен.
А вы ему пихаете мануал на асм .
Дык он хотел тру-асм...ибо круто
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.04.2013, 22:49
Помогаю со студенческими работами здесь

разжевать код делфи
есть готовый код помогите его разжевать, какая строчка за что отвечает? unit uGl; interface uses Windows, Messages,...

Прошу разжевать коннект
Друзья. Если есть у кого минутка, другая - прошу помочь разобраться с коннектом к базе. Есть у меня форум и простенький сайт. Недавно решил...

Разжевать сложный запрос
Помогите разжевать запрос по полочкам $id = 100 // TABLE_1.id = 100 select w1.* , w2.* from TABLE_1 w1 join ...

Кто может разжевать регулярку?
\b(.+)\1\b

Двумерный динамический массив. Разжевать
Для начала. int *array = new int; Инициализируется указатель array - которому присвается адрес переменных типа int, размерностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru