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

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

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

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

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

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


 
Опции темы
Непрочитано 11.05.2018, 16:46  
-vitalik-
Вид на жительство
 
Аватар для -vitalik-
 
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,397
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
-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
Адрес: Ставрополь - Донское
Сообщений: 252
Сказал спасибо: 111
Сказали Спасибо 186 раз(а) в 76 сообщении(ях)
pasha_zv на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

а не перезапускается ли ШИМ при записи?
покури датащит
pasha_zv вне форума  
Непрочитано 11.05.2018, 19:37  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,375
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

Вот поэтому в стм32 теневой регистр есть. Оно там записывается только в нулевой момент
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 11.05.2018, 22:05  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

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

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

Это все легко определяется записью и анализом значений АЦП и выводом тестовой таблицы через ШИМ.
STM32F0 вне форума  
Сказали "Спасибо" STM32F0
mike-y-k (12.05.2018)
Непрочитано 12.05.2018, 03:58  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Просветите, пожалуйста, по ШИМу

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

Всем спасибо за советы. Даташит читал, говорят, что в CCPR1L можно писать в любой момент. Про АЦП и шумы - тож не в счет, ибо просто строка CCPR1L := 50; прямо в цикле while уже даёт каку.
До этого делал таким же макаром с PIC16F876 (всмысле, многократная запись в CCPR), работает без проблем.
Так что куплю проц и попробую, как будет в реале
-vitalik- вне форума  
Непрочитано 12.05.2018, 21:05  
andron007
Прописка
 
Регистрация: 19.02.2008
Адрес: г. Иркутск
Сообщений: 275
Сказал спасибо: 213
Сказали Спасибо 166 раз(а) в 78 сообщении(ях)
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, время: 10:07.


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