реклама на сайте
подробности

 
 
> PIC18F4431. Регулирование бесколлекторного эл. двигателя (BLDC), Motion Feedback, Input Capture, CAPxBUF
d_dr
сообщение Jul 5 2012, 18:44
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 2-07-12
Пользователь №: 72 599



Доброго всем времени суток!

Пытаюсь сделать регулирование частоты вращения бесколлекторного эл. двигателя (BLDC) на "PIC18F4431". Двигатель имеет датчики положения (Холла) для коммутации. В принципе, все как описано в "AN899", тот же "source code" (с минимальными изменениями).
Текущая задача заключается в измерении времени таймером "Timer5" между событиями (изменениями состояний датчиков) в диапазоне до 16-и бит, для последующего вычисления частоты вращения с соответствующим 16-битным разрешением, используя аппаратные возможности uC - "Input Capture" (on state change) модуля "Motion Feedback".
Конкретно моя проблема состоит в том, что по приходу события, из таймера в буфер записывается только нижний байт - "CAPxBUFL", верхний же байт таймера ("Timer5_H") и буфера ("CAPxBUFH") остаются равны нулю. Т.е. при переполнении нижнего байта таймера НЕ происходит переноса в верхний байт. Таким образом значительно сокращается снизу диапазон измерения частоты вращения...
Желаемые 16 бит дает переодическое зачитывание значения верхнего байта таймера в "ручном режиме" по примеру:
Код
        movf    TMR5H, w
        movwf   Timer5_H
        movf    TMR5L, w
        movwf   Timer5_L

но необходимость вводить это зачитывание в процедуру обработки прерываний доставляет неудобства, как "эстетического" так и функционального характера. Да и разобраться охота - модуль "Motion Feedback" ведь для того и нужен, чтобы считать до 16-и бит автоматически!!?
Или я чего-то недопонял???

С уважением!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
volodya
сообщение Jul 6 2012, 08:20
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



TMR5H заполняется после чтения TMR5L на аппаратном уровне. В вашем случае возможно не корректное считывание значения TMR5 регистра. Вернее будет изменить порядок
Код
        movf    TMR5L, w
        movwf   Timer5_L
        movf    TMR5H, w
        movwf   Timer5_H


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 12:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016