| 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 12.01.2009
 
 
 Статус: 
 Offline
 
 | Похоже, что PROTON не очень корректно работает с HPWM и 12Fx. Хотя может проблема и в Протеусе, нужно пробовать в железе. Без команды HPWM работает как надо.
 
 Сообщение отредактировал 
 
 ivan_fd - Сб, 21.05.2011, 13:48
 
  |  
 |  |  |  | 
| 
 
 
 
 | terrarus | Дата: Сб, 21.05.2011, 15:07  |                                                                                                                Сообщение # 5 |  
 | ![terrarus]()  
 
 
 
 
  Группа:
  Пользователи
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 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, спасибо, всё получилось!! |  
 |  |  |  |