30.12.2009, 15:14
|
#11
|
Прохожий
Регистрация: 28.12.2009
Сообщений: 5
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus & PIC PWM
Да у меня тож завелса спасибо за помощь
|
|
|
|
30.12.2009, 21:52
|
#12
|
Прописка
Регистрация: 14.08.2006
Сообщений: 106
Сказал спасибо: 19
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Proteus & PIC PWM
Сообщение от udar
|
А случайно для PIC16F684 нет примерчика ШИМ?
|
Ну типа , так:
Код:
|
void main()
{
unsigned char pwm ;
TRISC = 0 ;
PORTC = 0 ;
PR2 = 0b01111100 ;
CCP1CON = 0b00001100 ;
// CCP2CON = 0b00111100 ;
for(;;)
{
for(pwm = 0 ; pwm ‹ 128 ; pwm++)
{
CCPR1L = pwm ;
// CCPR2L = 128 - pwm ;
T2CON = 0b00000101 ;
Delay_ms(10) ;
}
for(pwm = 127 ; pwm › 0 ; pwm--)
{
CCPR1L = pwm ;
// CCPR2L = 128 - pwm ;
T2CON = 0b00000101 ;
Delay_ms(10) ;
}
}
} |
|
|
|
|
30.12.2009, 22:03
|
#13
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Proteus & PIC PWM
Кстати, да, вы правы. Если не использовать штатные библиотеки компилятора, а сразу писать напрямую в регистр, шим работает прекрасно. Был точно такой же глюк, когда использовал библиотеку UART1.Read(). Протеус свисал, забрасывая ошибками. Использовал ассинхронную передачу, поэтому чтение висело на прерывании. Просто заменил эту команду прямым чтением из регистра и сбросом флага. И все заработало.
|
|
|
|
30.12.2009, 22:14
|
#14
|
Прописка
Регистрация: 14.08.2006
Сообщений: 106
Сказал спасибо: 19
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Proteus & PIC PWM
udar, кстати проверил этот проект
http://mcs.uwsuper.edu/sb/Electronics/PWM/
Тоже работает в протеусе если добавить несколько строк:
|
|
|
|
31.12.2009, 10:16
|
#15
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Proteus & PIC PWM
В общем, разобрался я окончательно с PWM модулем
Чтобы он работал, нужно сделать следующие вещи:
Включить таймер2 (регистр t2con)
Включить ШИМ (регистр ccp1con)
Указать период таймера2. От него зависит разрешение длительности шим в байтах (регистр pr2)
Указать длительность (регистр ccpr1l нижние 8 бит)
Все, ШИМ работает.
С 870ым камнем была проблема. После смены CCPR1L (длительность) ОБЯЗАТЕЛЬНО надо установить T2CON.2=1, иначе шим встает. Как в железе, не знаю.
Последний раз редактировалось Easyrider83; 05.01.2010 в 05:09.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
12.01.2010, 12:00
|
#16
|
Частый гость
Регистрация: 14.06.2006
Сообщений: 40
Сказал спасибо: 20
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
|
Re: Proteus & PIC PWM
Я тоже бился с ССР модулем в ломаном протеусе 7,6,0. Не работало. А потом вдруг попробовал тот-же пример на другом компе и там все заработало. Тогда я скопировал всю папку протеуса с работающего компа на свой и теперь все гуд. В чем причина - досконально не разбирался. Но копирование только папки с бинарниками не помогало. Значит скорее всего были плохо пропатчены пиковские библиотеки.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:12.
|
|