HPWM и PIC12Fxxx
|
|
contra |
Дата: Пт, 20.05.2011, 19:33 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 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
Сообщение отредактировал
contra - Пт, 20.05.2011, 20:04
|
|
|
|
ivan_fd |
Дата: Пт, 20.05.2011, 22:51 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
В чем вы проверяете работоспособность? Прикрепите нормальный файл.
|
|
|
|
contra |
Дата: Сб, 21.05.2011, 07:10 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.06.2009
Статус:
Offline
|
программу проверял в Протоне вот файл: ЗЫ что - то не удаётся прикрепить файл. но код там такой-же как и в приведённом выше посте ivan_fd, посмотрите пожалуйста, что там не правильно спасибо!
Сообщение отредактировал
contra - Сб, 21.05.2011, 08:44
|
|
|
|
ivan_fd |
Дата: Сб, 21.05.2011, 13:47 | Сообщение # 4 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Похоже, что PROTON не очень корректно работает с HPWM и 12Fx. Хотя может проблема и в Протеусе, нужно пробовать в железе. Без команды HPWM работает как надо.
Сообщение отредактировал
ivan_fd - Сб, 21.05.2011, 13:48
|
|
|
|
terrarus |
Дата: Сб, 21.05.2011, 15:07 | Сообщение # 5 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 27.06.2009
Статус:
Offline
|
Насколько я понял из даташита в PIC12F683 модуль CCP есть, но я могу ошибаться вот выдержка из даташита:
|
|
|
|
ivan_fd |
Дата: Сб, 21.05.2011, 21:01 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 27.06.2009
Статус:
Offline
|
ivan_fd, спасибо, буду пробовать. Только, что попробовал ваш код, но у меня он тоже не работает, может правда косяк в Протеусе
|
|
|
|
ivan_fd |
Дата: Вс, 22.05.2011, 12:05 | Сообщение # 9 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
У меня тот код, что я Вам дал работает в Протеусе. У Вас какой протеус, у меня 7.7 SP2
|
|
|
|
contra |
Дата: Вс, 22.05.2011, 13:33 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.06.2009
Статус:
Offline
|
У меня Протеус 7.6 SP4
Сообщение отредактировал
contra - Вс, 22.05.2011, 13:34
|
|
|
|
ivan_fd |
Дата: Вс, 22.05.2011, 14:30 | Сообщение # 11 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
А MCLR на + кто будет цеплять?
Сообщение отредактировал
ivan_fd - Вс, 22.05.2011, 14:32
|
|
|
|
contra |
Дата: Вс, 22.05.2011, 15:20 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.06.2009
Статус:
Offline
|
ivan_fd, спасибо, всё получилось!!
|
|
|
|