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

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

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

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

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

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


 
Опции темы
Непрочитано 11.05.2018, 16:46  
-vitalik-
Прописка
 
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 273
Сказал спасибо: 731
Сказали Спасибо 52 раз(а) в 25 сообщении(ях)
-vitalik- на пути к лучшему
По умолчанию Просветите, пожалуйста, по ШИМу

Добрый день,
задачка очень простая: через АЦП считываем значение с потенциометра и передаем его в ШИМ.
Сделал так:
Код:
        while(1)
                {
                if (ADCON0.GO == 0) { Voltage = ADRESH; ADCON0.GO = 1;}
                CCPR1L = Voltage;
        }
но значение ШИМа постоянно "колбасит" в раене нуля.
Добавил в цикл delay_ms(100), заработало более-менее стабильно. но осцилограмка периодически дергалась.
Как надо - заработало только в таком виде:
Код:
        while(1)
                {
                if (ADCON0.GO == 0) { Voltage = ADRESH; ADCON0.GO = 1;}

                PWMvalue = Voltage;
                
                if (PWMvalue != PWMold) {CCPR1L = PWMvalue; PWMold = PWMvalue;}
                }
        }
Вопрос: в регистр CCPR1L нельзя часто писАть? Или это глюк кмпилятора/симулятора?

Использован PIC12F683, компилятор MicroC, симулятор с осциллографом - Proteus.
Инициализация проца:
Код:
        OPTION_REG = 0b10000000; //PullUP disabled, Scaller to TMR0 (1:2)
        INTCON = 0b10100000; //Interrupt, TMR0
        OSCCON = 0b01100001; //4MHz, Internal
        TRISIO = 0b00111000;
        ADCON0 = 0b00001111; //Data in ADRESH, Ref Vdd, AN3, ADC run and enabled
        ANSEL = 0b01011000; //Fosc/16, AN3
        CMCON0 = 0b00000111; //Disable comparator
        CCP1CON = 0b00001110; //PWM, active LOW
        PR2 = 255;
        T2CON = 0b01111101; //for PWM, postscaller 16, prescaller 4
Реклама:
-vitalik- вне форума  
Непрочитано 11.05.2018, 19:26  
pasha_zv
Прописка
 
Аватар для pasha_zv
 
Регистрация: 14.12.2006
Адрес: Ставрополь - Донское
Сообщений: 172
Сказал спасибо: 59
Сказали Спасибо 101 раз(а) в 47 сообщении(ях)
pasha_zv на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

а не перезапускается ли ШИМ при записи?
покури датащит
pasha_zv вне форума  
Непрочитано 11.05.2018, 19:37  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 7,159
Сказал спасибо: 100
Сказали Спасибо 2,023 раз(а) в 1,222 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

Вот поэтому в стм32 теневой регистр есть. Оно там записывается только в нулевой момент
__________________
ОГМ/ПОГМ
индюк вне форума  
Непрочитано 11.05.2018, 22:05  
STM32F0
Почётный гражданин KAZUS.RU
 
Аватар для STM32F0
 
Регистрация: 22.04.2014
Сообщений: 3,317
Сказал спасибо: 34
Сказали Спасибо 486 раз(а) в 373 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

Вечно тебя то в тень, то в темноту тянет.
Там дело в прелоад, включён он или выключен. Эта фишка есть во многих МК, не только в СТМ, в новых ПИКах и Мегах тоже есть. В старых нет и в документации это отражено - при быстрой смене значений будут глитчи.
__________________
Если вас раздражает чей-то чрезмерный ум, задумайтесь о своей чрезмерной глупости. (С)
STM32F0 вне форума  
Непрочитано 11.05.2018, 22:49  
DmitriyVDN
Прописка
 
Регистрация: 10.06.2010
Сообщений: 177
Сказал спасибо: 47
Сказали Спасибо 33 раз(а) в 25 сообщении(ях)
DmitriyVDN на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

я дико извиняюсь, но
1. скважность ШИМ заносится из регистра CCPR1Н данные в него попадают в начале цикла ШИМ из регистра CCPR1L так шо претензии к модулю ССР мимо кассы.
2. шо там у ТС за потенциометр одному богу известно, и даже если оный в рамках дозволенных ДШ 10кОм , задержку перед преобразованием на перезаряд емкости отсутствующую у ТС никто не отменял, в ДШ есть формула расчета.
3. + шумы на входе АЦП , а никакого ЦФ в коде ТСа не наблюдаетцо
DmitriyVDN вне форума  
Непрочитано 12.05.2018, 00:33  
STM32F0
Почётный гражданин KAZUS.RU
 
Аватар для STM32F0
 
Регистрация: 22.04.2014
Сообщений: 3,317
Сказал спасибо: 34
Сказали Спасибо 486 раз(а) в 373 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

Это все легко определяется записью и анализом значений АЦП и выводом тестовой таблицы через ШИМ.
__________________
Если вас раздражает чей-то чрезмерный ум, задумайтесь о своей чрезмерной глупости. (С)
STM32F0 вне форума  
Сказали "Спасибо" STM32F0
mike-y-k (12.05.2018)
Непрочитано 12.05.2018, 03:58  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 4,865
Сказал спасибо: 4,142
Сказали Спасибо 1,313 раз(а) в 1,038 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

А именно потенциометр в этой схеме столь категорично обязателен?
При его замене на энкодер обработка сильно упростится.
DAC нужен там, где нет ему альтернативы.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов.
mike-y-k вне форума  
Непрочитано 12.05.2018, 20:43  
-vitalik-
Прописка
 
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 273
Сказал спасибо: 731
Сказали Спасибо 52 раз(а) в 25 сообщении(ях)
-vitalik- на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

Всем спасибо за советы. Даташит читал, говорят, что в CCPR1L можно писать в любой момент. Про АЦП и шумы - тож не в счет, ибо просто строка CCPR1L := 50; прямо в цикле while уже даёт каку.
До этого делал таким же макаром с PIC16F876 (всмысле, многократная запись в CCPR), работает без проблем.
Так что куплю проц и попробую, как будет в реале
-vitalik- вне форума  
Непрочитано 12.05.2018, 21:05  
andron007
Прописка
 
Регистрация: 19.02.2008
Адрес: г. Иркутск
Сообщений: 190
Сказал спасибо: 59
Сказали Спасибо 81 раз(а) в 48 сообщении(ях)
andron007 на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

У Pic12f683 c модулем CCP регулярно непонятки происходят.
andron007 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста определить транзистор tarabukinivan Электроника - это просто 62 06.04.2017 17:27
Экранирование проектора. Проясните пожалуйста Lis63 Отвлекитесь, эмбеддеры! 15 16.07.2014 20:03
Помогите, пожалуйста, с PICом и дисплеем VaL_KX Proteus 4 15.11.2010 22:33
Поможите пожалуйста с литературой на тему сбор данных. ArtUrl1986 Микроконтроллеры, АЦП, память и т.д 0 05.05.2009 02:27
Помогите, пожалуйста создать Счётчик Гейгера ArtUrl1986 Измерительное оборудование 15 05.04.2007 11:28


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


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