Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 17.08.2009, 21:29  
finiki
Частый гость
 
Регистрация: 10.03.2007
Сообщений: 30
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
finiki на пути к лучшему
По умолчанию Proteus не хочет "дружить" с ШИМ PIC16F877. Почему

Задача простая - сформировать ШИМ сигнал частотой 22 кГц.
Программа пока тоже простая - запускаем ШИМ и больше ничего не делаем, только после каждого периода формируем на отдельном выводе формируем короткий импульс для синхронизации процесса.
Моделируем в Proteus - все хорошо (проект PWM_good.DSN).

Теперь чуть-чуть усложним программу - после каждого периода будем перезаписывать длительность импульса ШИМ (регистр CCPR1L), чтобы затем управлять скважностью.
И тут все рушится (проект PWM_bad.DSN) - формируется только один первый период сигнала ШИМ!

Кто-нибудь может объяснить в чем дело?
Подробности в прилагаемом архиве. Использую Proteus 7.4 SP3.
Заранее благодарен.

Прикрепленный файл: 8733328.rar
Реклама:
finiki вне форума  
Непрочитано 17.08.2009, 22:28  
arhimed486
Прописка
 
Регистрация: 01.08.2009
Сообщений: 142
Сказал спасибо: 6
Сказали Спасибо 38 раз(а) в 14 сообщении(ях)
arhimed486 на пути к лучшему
По умолчанию

Честно скажу: в пиках не разбираюсь , так как с AVR работаю, но это вроде помогло:

Wait
btfss PIR1,TMR2IF
goto Wait
;Сформировался один период.
bcf PIR1,TMR2IF ;Сбросить флаг прерывания.
bsf PORTC,0 ;Синхр.=1
bcf PORTC,0 ;Синхр.=0
movlw d'45' ;!!! Перезапишем ширину
movwf CCPR1L ;!!! импульса.
clrf TMR2 ; это помогло
goto Wait ;

Методом тыка
arhimed486 вне форума  
Непрочитано 17.08.2009, 23:47  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от finiki
И тут все рушится (проект PWM_bad.DSN) - формируется только один первый период сигнала ШИМ!
Сие науке не известно...
И охота вам глюки Протеуса иследовать? По моему проще (а главное быстрее найти причину) опробовать всё в железе. Может статся что в железе заработает. Во всяком случае у меня в 16F628,16F690,16F877A и в ATMega8 проблем с регулировкой ШИМ не возникало. Всё как в даташите сказано.
picavr вне форума  
Непрочитано 18.08.2009, 09:35  
finiki
Частый гость
 
Регистрация: 10.03.2007
Сообщений: 30
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
finiki на пути к лучшему
По умолчанию

Сообщение от picavr
По моему проще (а главное быстрее найти причину) опробовать всё в железе.
Проблема в том, что последнее время вопрос моделирования вышел на первое место, т.к. для меня процессы разработки и отладки в железе значительно разнесены не только во времени, но и в пространстве.

Что касается ШИМ, то модель даже когда работает - работает все равно неправильно, т.к. период сигнала ШИМ (положительный перепад)должен начинаться в момент обнуления TMR2, а тут связь сигнала с работой таймера плохо прослеживается. Короткие импульсы синхронизации на рисунке - моменты переполнения таймера.

-- Прилагается рисунок: --
finiki вне форума  
Непрочитано 18.08.2009, 12:08  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от finiki
процессы разработки и отладки в железе значительно разнесены не только во времени, но и в пространстве.
Мне сложно понять, как можно что то писать без отладки в железе. Отладка это - ЧАТЬ работы по написанию пограммы. Порой в зависимости от результатов отладки одного модуля, переписываешь другой програмный модуль.

Сообщение от finiki
период сигнала ШИМ (положительный перепад)должен начинаться в момент обнуления TMR2. Короткие импульсы синхронизации на рисунке - моменты переполнения таймера.
Вам не нравится что короткий импульс не совпадает с перепадом ШИМ?

Скорее всего, момент обнуления TMR2 это на рисунке момент перепада сигнала ШИМ. А импульсы синхронизации это уже то что вы формируете по прерыванию TMR2.
Я правильно понял?
Отследите в отладчике MPLAB сколько проходит времени между переполнением таймера и тем моментом когда фрмируется ваш короткий импульс.

-- Прилагается рисунок: --
picavr вне форума  
Непрочитано 18.08.2009, 12:19  
finiki
Частый гость
 
Регистрация: 10.03.2007
Сообщений: 30
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
finiki на пути к лучшему
По умолчанию

Сообщение от arhimed486
это вроде помогло:
......................................
movlw d'45' ;!!! Перезапишем ширину
movwf CCPR1L ;!!! импульса.
clrf TMR2 ; это помогло
goto Wait ;
Можно пойти еще дальше и перед обнулением таймера прочитать его содержимое, а после обнуления - восстановить счет, но это помогает, если мы пытаемся увеличить (или оставить неизменной) длительность импульса ШИМ. Если же пытаться уменьшать длительность импульса, то примочка с обнулением таймера не срабатывает! Еще эфект зависит от исходной скважности. Полный мрак!!!

Диагноз для модели ШИМ в PIC16F877 (по совокупности фактов): пациент скорее мертв, чем жив. Но, это - мое мнение. Хотелось бы послушать авторитетных людей.
finiki вне форума  
Непрочитано 18.08.2009, 12:32  
finiki
Частый гость
 
Регистрация: 10.03.2007
Сообщений: 30
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
finiki на пути к лучшему
По умолчанию

Сообщение от picavr
Вам не нравится что короткий импульс не совпадает с перепадом ШИМ?
Скорее всего, момент обнуления TMR2 это на рисунке момент перепада сигнала ШИМ. А импульсы синхронизации это уже то что вы формируете по прерыванию TMR2.
Я правильно понял?
Отследите в отладчике MPLAB сколько проходит времени между переполнением таймера и тем моментом когда фрмируется ваш короткий импульс.
Проходит несколько тактов, но дело не в этом. Мне не нравится не то, что импульс синхронизации не совпадает с перепадом сигнала, а то,с каким именно перепадом (в этот момент должен быть перепад из 0 в 1, а не наоборот).

-- Прилагается рисунок: --
finiki вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] RISC vis CISC, все "ЗА" и "ПРОТИВ". sanitar249 Отвлекитесь, эмбеддеры! 1 24.10.2007 09:56
Нет библиотеки Proteus "compim.dll" yel Proteus, KiCAD и другие ECAD 3 11.01.2007 10:20
datasheet на ШИМ "a1147lt" Dreikons Поиск схем. Делимся схемами 0 21.10.2006 08:55


Часовой пояс GMT +4, время: 04:55.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot