Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
1

Вопрос по MPLAB X и по 10F322

11.10.2016, 15:48. Просмотров 5208. Ответов 8
Метки нет (Все метки)

Доброго времени суток!
Скачал поставил MPLAB X, докачал отдельно компилятор XC8.
Писать решил на С.
В целом все понятно, но вот не большая заковыка возникла в результате просмотра чужого кода:
По умолчанию согласно ДШ у 10F322 выбран внешний источник тактирования CONFIG.FOCS = 1.
В примере который скачал нету сброса этого бита, но и в схеме нету источника тактирования.
Ссылка на пример, который скачал
Получается MPLAB его сбрасывает по умолчанию гдето в своих недрах, или я что-то не так понял?
Вообще настройка CONFIG происходит через #pragma, об этом узнал только из примера, где лежит код который собственно
настраивает регистр CONFIG?
И можно ли сделать чтобы в дереве проекта отображались все заголовочные файлы (.h), а не только те что я засунул в папку проекта?

-----------------------------------------------------
Нашел в менюшках где конфиг настраивается (Wymdows-> Pic Memories View -> Confikurotions bits),
но все же хотелось бы найти куда все это уйдет?
Или я неправильно понимаю как работает #pragma? Нечто на подобие дефайна, в итоге где то написанное мной после #pragma участвует
в формировании строки кода.
-----------------------------------------------------
А есть ли уже готовые инструменты(на С) для работы с отдельными битами или надо самому позаботится ( например #define SetByt(adr, bit) asm "BSF adr, bit")?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2016, 15:48
Ответы с готовыми решениями:

MPLAB
Ребята кто нибудь работает в программе MPLAB на базе микроконтроллера PIC 16F84????

MPLAB X ws PICkit3
Доброго всем дня! Если вкратце, использую MPLAB X с компилятором XC8 от микрочипа, вобщем-то всё...

MPLAB PIC16F877
Здравствуйте Я тут новичок, взялся за голову, начал учиться Мне нужна ваша помощь, надеюсь, что...

Деление в PIC MPLAB
Доброго всем здоровья Друзья, столкнулся с проблемой при освоении ПИКовских контроллеров. Есть...

8
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 126
12.10.2016, 17:46 2
Конфиг запишется однократно при программировании. АВР-щики называют это "фьюзы".
В коде добавили к примеру #pragma config FOSC = INTOSCIO - и МПЛАБ сам положит биты по нужному адресу в НЕХе.
Больше вы на него в нормальном режиме не должны обращать внимания.
Если этот камень позволяет программирование флеш - то теоретически возможно перезаписать конфиг прямо из прошивки, но что-то я себе слабо представляю зачем это может пригодится.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
16.10.2016, 16:49 3
Раньше не доводилось работать со столь маленькими МК и я что-то не пойму, у него что всего ОДИН вектор прерывания?ОО
Это то есть в теле прерывания надо еще заниматься разбором флагов ???Оо
0
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 137
16.10.2016, 17:55 4
Вы просто мало работали с Пиками вообще. У всех 10,12 и 16 один вектор прерываний (про самые последние, с 4 значной цифровой маркировкой не в курсе, может что и поменяли). Даже у 16F877A, у которого 8 кБ флеша и набор периферии на уровне 8 меги, всего 1 вектор прерывания))) Вот такие они, Пики.
По сути вопроса. Именно так, анализируете флаги. Но будьте внимательны, одних флагов прерывания (IF) не всегда достаточно. Иногда, в зависимости от завязок алгоритмов, нужно анализировать флаги разрешения прерываний (IE). А иногда достаточно просто анализировать их в правильной последовательности.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
16.10.2016, 19:15 5
Цитата Сообщение от Kmusmos
Вы просто мало работали с Пиками вообще. У всех 10,12 и 16 один вектор прерываний (про самые последние, с 4 значной цифровой маркировкой не в курсе, может что и поменяли). Даже у 16F877A, у которого 8 кБ флеша и набор периферии на уровне 8 меги, всего 1 вектор прерывания))) Вот такие они, Пики.
По сути вопроса. Именно так, анализируете флаги. Но будьте внимательны, одних флагов прерывания (IF) не всегда достаточно. Иногда, в зависимости от завязок алгоритмов, нужно анализировать флаги разрешения прерываний (IE). А иногда достаточно просто анализировать их в правильной последовательности.
Да я вообще первый раз пишу под PIC. Часа полтора искал вектор таймера )))))))
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
16.10.2016, 20:43 6
Подскажите, а как узнать сколько тактов приходится на 1 элементарную инструкцию?
----------
Вопрос снят нашел 1/4))))
----------
Возник другой: в каких единицах измерения пронумерована шкала в MPLAB X у логического анализатора?
И как отключить стартовую страницу в данной IDE, если вообще можно?
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
20.10.2016, 23:11 7
Подскажите пожалуйста!
Не могу заставить уйти МК в сон. Точнее могу, во всех частях программы где есть сон все ок!
Но вот в одном месте хоть убей не засыпает, как будто игнорирует строки со сном.
Хотя в симуляторе все норм.
Отслеживаю эту ситуацию осциллографом.
Ниже приведен кусок кода который не корректно отрабатывается, данный кусок кода вызывается через "GOTO",
"SLEEP" не выполняет а все остальное отрабатывает. В другой части кода есть также слипы собранные из разных
интервалов времени и все прекрасно работает. ДШ читал, никаких оговор не увидел(
В дизассемблере все норм, строки не выкинуты)
"КОД"
Код
asm_MARK(sleep_89ms);
LATA1 = 0;              //__Отключение ИК приемника.
T2CONbits.TMR2ON = 0;

WDTCON = 0x0D;  //__Сон на 64мс.
asm("SLEEP");   //
asm("nop");     //__Последняя инструкция до сна.

WDTCON = 0x09;  //__Сон на 16мс.
asm("SLEEP");   //
asm("nop");     //__Последняя инструкция до сна.

WDTCON = 0x07;  //__Сон на 8мс.
asm("SLEEP");   //
asm("nop");     //__Последняя инструкция до сна.

OPTION_REG = 0b01000111;        //__Настройка таймера (делитель = 256),
TMR0 = 225;                     //__960мкс.
INTCONbits.TMR0IF = 0;
asm_MARK(rec_6);                        //__Ожидание флага переполнения таймера.
asm_BTFSS(rec_6, INTCON, d_TMR0IF);     //
asm("GOTO rec_0");   //__Возврат в начало подпрограммы приемника.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
29.11.2016, 12:48 8
C предыдущей проблемой разобрался. Точнее я так и не понял что это было, я просто отключил все прерывания и сделал программу "линейной".

Возник новый баг))))))
Формирую нечто на подобие ШИМ, 3 пачки по 10 импульсов, затем сон и все по кругу.
Дык вот каждый 3 импульс короче чем заданно на 0,75мкс. И это никак не коррелирует с программой,
тоесть каждый 3 импульс формируется точно также как и предыдущие и последующие. Понятно было бы куда копать
если бы это был первый или последний импульс, но каждый 3 хз почему.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
29.11.2016, 16:22 9
Вопрос снят) Опять моя невнимательность отыграла)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2016, 16:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

MPLAB. Передача информации на UART
Задали задание: "Получить по com-порту байт информации восемь разрядов и в ответ отправить...

PIC16F73 (MPLAB). Управление двигателем
Нужно написать программу для pic16f73 на MPLAB IDE .asm Задача звучит, как: "Есть вентельный...

Компилятор для PIC17 MPLab
Добрый день. Опишу суть проблемы. Имеется демо программа для 1886ВЕ4У. Без труда компилируется...

Проверка питания в MPLAB X + PICKit3
Здравствуйте. У меня есть проблема. Прошиваю контроллеры с ноутбука через MPLAB X и PICKit3 с...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.