Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
HPWM и PIC12Fxxx
contra Дата: Пт, 20.05.2011, 19:33  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Всем привет! Пытаюсь сделать ШИМ на PIC12F683 но, ничего не выходит.
вопрос такой - работает ли эта команда в младшем семействе PIC?
Если работает, то, что я сделал не так?
Спасибо!
вот мой код:
Device 12F683
Xtal 4
Declare CCP1_Pin GPIO.2
TRISIO = %00000011
Symbol SB1 = GPIO.0
Symbol sb2 = GPIO.1
Dim PWMout As Byte
Dim N As Byte
init:
PWMout = 0

main:
HPWM 1, PWMout, 2000
If SB1 = 0 Then DelayMS 100: N = N + 1
If N >= 254 Then N = 254
If sb2 = 0 Then DelayMS 100: N = N - 1: If N = 255 Then N = 0

PWMout = N ' положить в переменную PWMout значение N
GoTo main
End

Прикрепления: PWM_12F.prp (0.0 Kb)

Сообщение отредактировал contra - Пт, 20.05.2011, 20:04
ЯНДЕКС Дата: 20.05.2011
ivan_fd Дата: Пт, 20.05.2011, 22:51  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

В чем вы проверяете работоспособность?
Прикрепите нормальный файл.
contra Дата: Сб, 21.05.2011, 07:10  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

программу проверял в Протоне
вот файл:

ЗЫ что - то не удаётся прикрепить файл. но код там такой-же как и в приведённом выше посте

ivan_fd, посмотрите пожалуйста, что там не правильно
спасибо!

Прикрепления: PWM_12F.bas (1.0 Kb)

Сообщение отредактировал contra - Сб, 21.05.2011, 08:44
ivan_fd Дата: Сб, 21.05.2011, 13:47  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Похоже, что PROTON не очень корректно работает с HPWM и 12Fx. Хотя может проблема и в Протеусе, нужно пробовать в железе.
Без команды HPWM работает как надо.
Прикрепления: HPWM_12F.rar (34.5 Kb)

Сообщение отредактировал ivan_fd - Сб, 21.05.2011, 13:48
terrarus Дата: Сб, 21.05.2011, 15:07  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Команда HPWM предназначена для работы с аппаратными модулями CCP, которые входят в состав НЕКОТОРЫХ типов микроконтроллеров.
Модули ССР могут использоваться для генерации импульсной последовательности заданного периода с управляемой скважностью выходных импульсов, так называемой широтно-импульсной модуляции PWM (ШИМ).
В отличии от команды PWM, команда HPWM может выполняться резидентно (в фоновом режиме), непрерывно работая на заднем плане основной программы, не прерываясь, пока выполняются другие команды основной программы.
Некоторые PIC-микроконтроллеры имеют 1, 2 или 3 PWM (ШИМ) канала. В микроконтроллерах с 2 каналами, частота генерации последовательности импульсов должна быть одинаковой в обоих каналах. Необходимо отметить, что это не ограничение компилятора, а ограничение самого микроконтроллера.
В даташитах каждого конкретного микроконтроллера указаны номера выводов для каждого канала, которые могут использоваться с этой командой. Например, для PIC16F877, канал 1 (модуля CCP1) это вывод PORTC.2. Канал 2 (CCP2) это вывод PORTC.1.

В PIC12F508/509/16F505 и PIC12F629/675 модуля ССР нет( не знаю как в других 12Fx, я с 12Fx не работаю, но скорее всего в 12 серии ССР вообще нет) пожтому и команда HPWM и не должна работать, а вот PWM будет работать.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
contra Дата: Сб, 21.05.2011, 18:56  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Насколько я понял из даташита в PIC12F683 модуль CCP есть, но я могу ошибаться
вот выдержка из даташита:
Прикрепления: _PIC12F683.odt (76.3 Kb)
ivan_fd Дата: Сб, 21.05.2011, 21:01  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

terrarus, в PIC12F683 есть модуль ССP, иначе Proton бы ругался при компиляции.
В моем прикрепленном файле видно, как замечательно он (PWM) работает, но если использовать его без команды HPWM.

Добавлено (21.05.2011, 21.01.08)
---------------------------------------------
Вот счас почитал на форуме Protona, пишут, что и НPWM прекрасно работает.
Получается что проблема в протеусе, нужно пробовать в железе.

Цитата из их форума---->

Code
This is how I do it with a 12F683, works well.
You may need to adjust it to suit your needs

Declare Adin_Res 10 ' 10-bit result required
Declare Adin_Tad FRC ' RC OSC chosen
Declare Adin_Stime 50 ' Allow 50us sample time

Dim OnTime As Byte
Dim OffTime As Byte
Dim DutyVar As Word
DelayMS 25
CCP1_Pin = GPIO.2
DutyVar = ADIn 3
DutyVar = DutyVar/16
HPWM GPIO.2,DutyVar,38000

loop:
GoTo loop
clrwdt
'approx ON Time= 250*4uS = 1mS =approx 40 pulses @ 26uS(38Khz)
For OnTime = 1 To 250
TRISIO.2 = 0
DelayUS 4
clrwdt
Next
'approx OFF Time= 250*12uS = 3mS
For OffTime = 1 To 250
TRISIO.2 = 1
DelayUS 12 'was 12
clrwdt
Next
GoTo loop

Сообщение отредактировал ivan_fd - Сб, 21.05.2011, 21:02
contra Дата: Вс, 22.05.2011, 08:19  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

ivan_fd, спасибо, буду пробовать.

Только, что попробовал ваш код, но у меня он тоже не работает, может правда косяк в Протеусе

ivan_fd Дата: Вс, 22.05.2011, 12:05  |                                                                                                                Сообщение # 9
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

У меня тот код, что я Вам дал работает в Протеусе.

У Вас какой протеус, у меня 7.7 SP2

contra Дата: Вс, 22.05.2011, 13:33  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

У меня Протеус 7.6 SP4
Прикрепления: HPWM_12FXXX.dsn (66.2 Kb)

Сообщение отредактировал contra - Вс, 22.05.2011, 13:34
ivan_fd Дата: Вс, 22.05.2011, 14:30  |                                                                                                                Сообщение # 11
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А MCLR на + кто будет цеплять?

Сообщение отредактировал ivan_fd - Вс, 22.05.2011, 14:32
ЯНДЕКС Дата: 22.05.2011
contra Дата: Вс, 22.05.2011, 15:20  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

ivan_fd, спасибо, всё получилось!!
  • Страница 1 из 1
  • 1
Поиск: