Отговори на тема  [ 5 мнения ] 
PIC18F452 PWM 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение PIC18F452 PWM
Нещо ми куца PWM-то. По конкретно промяната на duty cycle. Пиша си аз на определените за това места - младшите 2 бита в CCP2CON <5:4>, старшите 6 бита в CCP2L. Почти работи, само дето от време на време PWM-то гасне или пък е в другата крайност - 100% .
В даташита пише че тези стойности отиват в CCP2H и вътрешни 2 бита при match/нулиране на таймера. Никъде не пише че трябва да правя още нещо когато променям стойността. Всъност ако променям само CCP2L от 0х00 до 0х3F си работи много добре. Обаче почна ли да пипам двата бита в CCP2CON става боза.
Къде бъркам?


Код:
; инициализация
   movlw   0x3F
   movwf   PR2

; промяна на duty cycle
   btfsc   encoderValue, 0
   bsf      CCP2CON, 4
   btfsc   encoderValue, 1
   bsf      CCP2CON, 5
   
   rrncf   encoderValue, w
   movwf   tempi
   rrncf   tempi, w
   movwf   CCPR2L

_________________
PIC SPBRG values calculator


Пет Окт 01, 2010 8:58 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
открих си грешка че битовете 5:4 не се нулират преди да се сетнат в 1, но това не обяснява странното държане на CCP модула:
Код:
; промяна на duty cycle
   movlw   0xCF
   andwf   CCP2CON
   btfsc   encoderValue, 0
   bsf      CCP2CON, 4
   btfsc   encoderValue, 1
   bsf      CCP2CON, 5

_________________
PIC SPBRG values calculator


Пет Окт 01, 2010 9:07 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
Няма кой да гледа ситния шрифт под таблиците. На страница 123 от даташита има таблица на която в 4 и 5 бит от CCP2CON са отбелязани със сиво и под нея пише "Shaded cells are not used by PWM and Timer2". Т.е. PWM 2 е 8 битово, а не 10.
Поправка:
Въпреки всичко по-нагоре има друга таблица която пък казва че не само могат да се ползват в PWM, но и важат само в PWM режим.

идеи?

_________________
PIC SPBRG values calculator


Пет Окт 01, 2010 9:22 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
:) ок де. намерих си проблема. инструкцията RRNCF като върти надясно вместо да запълва с "0" както си мислех че прави сетва бит 7 със стойността на излезлия отдясно бит. това:
Код:
   andlw   0x3F

преди
Код:
   movwf   CCPR1L

решава проблема.


Обикновено сам си решавам повечето проблеми, но ако не пиша във форума се блъскам с часове. Като пиша и докато обяснявам ми идва нещо на ум. Това ми напомня как едни програмисти решавали проблемите си. Разказвали ги на колеги. После решили да спестят времето на колегите си и си купили по едно гумено пате. Когато имат проблем обясняват подробно на патето и докато обясняват - намират решението...

_________________
PIC SPBRG values calculator


Пет Окт 01, 2010 9:53 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
npelov написа:
После решили да спестят времето на колегите си и си купили по едно гумено пате. Когато имат проблем обясняват подробно на патето и докато обясняват - намират решението...

ще ти купим гумено пате! щом това ще ти реши проблемите с микроконтролерите - цяло ято ще ти купим :D


Пет Окт 01, 2010 10:55 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни