Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC , vol. # 2

1 15 17

LIKBIK: Особенно в области инициализации пика, какие флаги нужны какие нет, правильно ли настроены порты

Начнём танцевать от печки... PIC какой, конкретно? Неужто однократно программируемый?
И электрическую схемку устройства не мешало бы приложить, чтоб видеть наглядно - к каким ногам PIC что прицеплено и как именно.
А ещё неплохо бы описать вкратце на словах, что именно этому устройству (и его программе соответственно) надлежит делать. Что-то вроде техзадания.

 

picmaniac: аппаратный вызов специально предусмотренной подпрограммы (обработчика прерываний), расположенной в памяти программ по определенному адресу. Для PIC16 это адрес 4, т.е. пятая по счёту ячейка от начала памяти программ.

По адресу 4 расположен не обработчик прерывания ! Там расположен "вектор прерывания" - это и есть информация о том где находится обработчик прерывания.

picmaniac: Затем АППАРАТНО сбросит бит GIE и перейдет по адресу 04, где и располагается заботливо подготовленная нами подпрограмма - обработчик прерываний.

Нет.

LIKBIK: Я написал небольшую программу для PIC, клавиатуру 21*5 линий, и хачу услышать комментарии и советы.

Если есть ошибки в области логики самой программы

Советую вам скачать и использовать для отладки программу PROTEUS
http://pro-radio.ru/controllers/3849-5/

 

Ridiko: Там расположен "вектор прерывания" - это и есть информация о том где находится обработчик...
Смело! Да, это называется вектор прерывания, но это не информация о том, где находится обработчик, а все-таки сам обработчик. Чтобы не быть голословным - предположим, что по адресу 0x0004 находится команда RETFIE. Вот такой вот частный случай обработки прерываний Либо другой вариант - начиная с адреса 0x0004 находится обработчик прерываний, а за ним - основная программа, на которую мы попадаем по goto с вектора 0x0000. Согласен, что так обычно не делают, но сделать так нам никто и ничто не мешает.

 

chav1961: Вот такой вот частный случай обработки прерываний

Именно ЧАСТНЫЙ случай.

 

Подскажите пожалуйста алгоритм или фрагмент кода(PIC) для быстрого цифрового фильтра.
Задача такая: меряю ток, напряжение, температуру считаю мощность и вывожу эти данные на ЖКИ. В процессе измерения АЦП формирует мгновенный отсчет который бывает содержит помеху => имеем на индикаторе скачки показаний. Хотелось бы избавиться от этих проблем.

 

Советую сделать правильно - т.е. использовать фильтр НЧ перед входом АЦП. простейший - резистор и конденсатор. Еще правильней активный на операционнике. Вот пример расчета фильтра http://telesys.ru/wwwboards/mcontrol/1563/messages/89587.shtml

Если только цифровой устраивает - то можно сделать устреднение нескольких результатов АЦП.

 

У microchip.com есть апноут - счетчик электроэнергии и расходов газа и воды.

 

<Ridiko</b>:
RC цепочка 1кОм и 0,1мк имеется, добавил первым делом колебания уменьшились но еще есть
с операционником завяжусь в крайнем случае но уже подумываю.

Ridiko: то можно сделать устреднение нескольких результатов АЦП. проблема в том что измерение и индикация происходит только 2 раза в секунду (MCPU занят еще и регулированием) следовательно накопить даннные хотя бы 8 измерений (лучше 16) это 4(8) секунды медленно

 

Ridiko: Нет.
Доказательства своих утверждений - в студию.
Я говорю - ДА, сбрасывается и восстанавливается GIE аппаратно, и подтверждением тому раздел 8 даташита PIC16 manual.
По адресу 4 (да, это вектор прерываний) располагается именно обработчик прерываний, даже если он начинается с команды
goto туда, где диспетчер прерываний расположен

Так ща не нада тут умничать...

 

AlexAlcoa: проблема в том что измерение и индикация происходит только 2 раза в секунду (MCPU занят еще и регулированием) следовательно накопить даннные хотя бы 8 измерений (лучше 16) это 4(8) секунды медленно

Вы не поняли. Вам нужно делать не 1 АЦП а например 8 (или больше) подряд и усреднять.

picmaniac: Я говорю - ДА, сбрасывается и восстанавливается GIE аппаратно

Я с этим не спорю. Я только про вектор прерываний написал. Вы в двух местах о нем писали - вот я и не согласился два раза.