Отговори на тема  [ 11 мнения ] 
setup_ccp1 (CCP_PWM) Въпрос! 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Сря Дек 06, 2006 9:05 pm
Мнения: 92
Местоположение: София
Мнение setup_ccp1 (CCP_PWM) Въпрос!
Здравейте! Опитвам се да увелича резолюцията PWM модула или казано по точно, да я накарам да работи в по тесен диапазон от 100% запълване. 10бита са 1024 стъпки за 100% не са достатъчни, но 1024стъпки в 25% е екстра. Пробвам следното, но не става:
Честотата трябва да е 250 Хзц.
Пускам 4 пъти по висока честота(1000Хзц) и използвам само 1 пулс от общо четирите, но или аз бъркам нещо, или хардуера не позволяава. Някакви идеи :?
Код:
int count;
int16 temp

#INT_RTCC
void clock_isr(){

count=count+1;
if (count==4){
set_pwm1_duty (temp);
count=0;
set_pwm1_duty(0);

}

}


Съб Юни 30, 2007 1:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение Re: setup_ccp1 (CCP_PWM) Въпрос!
million написа:
set_pwm1_duty (temp);
count=0;
set_pwm1_duty(0);

и как точно това нещо ще ти ползва "само един от четирите" импулса? мисля че set_pwm1_duty(0); трябва да бъде сложено в else участъка на ифа, а не в този


Съб Юни 30, 2007 2:47 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Сря Дек 06, 2006 9:05 pm
Мнения: 92
Местоположение: София
Мнение 
Код:
#INT_RTCC
void clock_isr()
{
count=count+1;
   if (count==4)
   {
   set_pwm1_duty (temp);
   count=0;
   }
   else (set_pwm1_duty(0));

}


Да си призная, слагах го къде ли не. Все се получава едно мигане на осцилоскопа с основната честота. Пробвах да пускам и спирам целия ССР модул, но там е още по зле резултата. Засега все още симулирам с ПРОТЕУС с 16Ф877, мисля че за толкова просто нещо може да му се вярва.


Съб Юни 30, 2007 4:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Каква ти е идеята с тоя брояч с Timer 0 ? Мигане има щото на всеки 4 прекъсвания на Timer0 пишеш 0 в PWM и съответно увеличаваш докрай/намаляш докрай PWM (зависи как си вързал изхода). Не мога да схана идеята ти :?


Съб Юни 30, 2007 5:40 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Сря Дек 06, 2006 9:05 pm
Мнения: 92
Местоположение: София
Мнение 
Таймер0 го използвам за две неща за момента:
1. увеличава с +1 през зададения му период променливата "TEMP", което ми е широчината на ШИМа
2. да килва 4 цикъла на PWM за да получа 1024 стъпки на по малка част от цялата широчина, но да си останат 250 херца. Тъй като там ми е необходима. Сигурно има и друг начин, но с моите знания..... надали ще се получи нещо. Затова моля за помощ.

ПС. добавих и кода за повече яснота :)


Прикачени файлове:
05_CCP.c [910 Байта]
237 пъти
pic.jpg
pic.jpg [ 65.17 KiB | Прегледано 2198 пъти ]
Съб Юни 30, 2007 6:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
е, не моа ти помогна. а напрежение ли искаш да направиш от това? щото малко ми е мъгла крайната цел...


Съб Юни 30, 2007 7:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Ако ще го ползваш за управление на двигател си направи софуеерен ШИМ,макар че многото щракания на ШИМ-а не се харесват на двигателя.От страна хардуеерен модул в ПИК-а си леко ограничен.


Съб Юни 30, 2007 10:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Идеята ти е правилна, но за Ц-то не мо'а ти помогна. Трябва да ползваш прекъсването на ПВМ-а (таймер2) за брояча за да има пълен синхрон. Може да се доразвие да управляваш целия обхват, не само 25% - тогава "празните" периоди трябва да са както 0В така и 5В,по алгоритъм. Ще получиш ПВМ с разредност 12бит. Разбира се всичко е за сметка на честотата.


Нед Юли 01, 2007 12:22 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
ji4ka написа:
Трябва да ползваш прекъсването на ПВМ-а (таймер2) за брояча за да има пълен синхрон. Може да се доразвие да управляваш целия обхват, не само 25% - тогава "празните" периоди трябва да са както 0В така и 5В,по алгоритъм. Ще получиш ПВМ с разредност 12бит. Разбира се всичко е за сметка на честотата.

че той не ползва ли прекъсването бе? според мене го ползва, иначе кога ше се вика тая функция дето я е писал. очевидно брои импулсите и всеки четвърти го пуска, останалите ги нулира. обаче, все още не мога да си представя смисленна употреба на това нещо. едно е сигурно - вероятно му трябват самите импулси като време, а не усредненото напрежение. ако му трябва усредненото напрежение все пак, това е голяма глупост което прави....


Нед Юли 01, 2007 8:22 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Явно искаш да регулираш изхода 0-25% с 10 бита разряд...само че що ползваш #INT_RTCC - това не е ли Timer0 ? Трябва ти Timer2 в тоя PIC и ще стане:

Код:
#INT_TIMER2
void pwm_isr()
{
if (++count<4)
{
  set_pwm_duty(0);
}
else
{
  set_pwm_duty(current_pwm_level);
  count=0;
}


Нед Юли 01, 2007 12:05 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Сря Дек 06, 2006 9:05 pm
Мнения: 92
Местоположение: София
Мнение 
Ейййй, вярно че ползвам грешния таймер. Сега работи! Благодаря на всички за отзивчивоста и само да вметна, че благодарение на вас, не се отказах от микроконтролерите още в началото. Много ми е интересно да се занимавам, а когато съм в задънена улица и някои от пишещите тук ми помогне, както в случая си е направо повод за радост :drinkers: :partyman: :partyman: :supz: :partyman:


Пон Юли 02, 2007 12:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

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


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

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