Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 22.09.2017, 05:19   #1
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Коррекция HFINTOSC по Vdd и температуре

Здравствуйте.
У меня PIC16F1829 управляет пиксельными светодиодами WS2812B. В предыдущей версии изделия был кварц, а потом пришлось увеличить количество каналов и отказаться от кварца (из-за нехватки выводов).
Теперь на граничных значениях Vdd и T возникают глюки. Нужно хотя бы немного корректировать HFINTOSC.
Как измерить Vdd, температуру, корректировать HFINTOSC понятно. Непонятно как получить значение для записи в регистр коррекции.
Для решения этой задачи нужно иметь следующие исходные данные:
1. График зависимости HFINTOSC от Vdd (мне нужно 2,8...4,0).
2. График зависимости HFINTOSC от температуры (мне нужно 0...+40).
3. График зависимости HFINTOSC от значения в регистре коррекции (OSCTUNE).
Частотомера с достаточной точностью у меня нет - придётся что-то мастерить.
Может кто-то уже такое делал? Или попадалась инфа в нете?
Заранее благодарен, Алексей.
alex_zas вне форума   Ответить с цитированием
Старый 22.09.2017, 06:54   #2
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 725
Вес репутации: 1200/47
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

это на сколько ж должна уплыть частота, чтобы не вписаться в тайминги????
DmitrijVDN вне форума   Ответить с цитированием
Старый 22.09.2017, 06:56   #3
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,093
Вес репутации: 2636/84
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

+100500
150 ns на фоне 900 ns. Это почти 17%...
Марк вне форума   Ответить с цитированием
Старый 22.09.2017, 07:03   #4
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 725
Вес репутации: 1200/47
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

ну не совсем так,
привязка идет к длительности импульса
для лог1 : 580-1600нс
для лог0 : 220-380нс
уход частоты +/-10% на работу не влияет
DmitrijVDN вне форума   Ответить с цитированием
Старый 22.09.2017, 07:38   #5
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,093
Вес репутации: 2636/84
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Нажмите на изображение для увеличения
Название: Снимок1.PNG
Просмотров: 32
Размер:	81.3 Кб
ID:	10966
Марк вне форума   Ответить с цитированием
Старый 22.09.2017, 17:16   #6
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 725
Вес репутации: 1200/47
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

это устаревший ДШ.
буквально на днях изучал этот вопрос
DmitrijVDN вне форума   Ответить с цитированием
Старый 22.09.2017, 17:59   #7
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,093
Вес репутации: 2636/84
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

спасибо за инфу, сильно давно применял.
Марк вне форума   Ответить с цитированием
Старый 22.09.2017, 21:36   #8
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

В предыдущей версии изделия у меня стоял кварц 20МГц - не было никаких проблем.
В новой версии захотелось поднять тактовую частоту и увеличить количество каналов (пиксельных лент). Из-за особенностей программной реализации врем. интервалов при 32МГц у меня исходно тайминги уже немного не по даташиту. Кроме этого питание лент и MCU не +5 а +3,6.
Всё работает, но на граничных значениях Vdd и t возникают глюки.
Но суть вопроса не в таймингах WS2812B а в реализации коррекции HFINTOSC по Vdd и температуре.
Есть другие задачи где это тоже актуально.
Вообщем сделать то это достаточно просто. Нужно только иметь три графика. Я их могу получить и сам. Просто я думал - может кто-то уже это делал, чтобы мне не "изобретать велосипед"...
alex_zas вне форума   Ответить с цитированием
Старый 23.09.2017, 06:49   #9
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,093
Вес репутации: 2636/84
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

1. Такие графики (снятые самостоятельно) не будут повторяться от экземпляра к экземпляру и от партии к партии.
2. В применении к описанной задаче совершенно непонятна затея. Единственным "пограничным" параметром является ЧАСТОТА. Температура и напряжение далеки от "пограничных". Минимальное напряжение этого МК - 2,5 вольта. Диапазон температур -40...+85 для Индастриал. Никаких "глюков" в районе 32 МГц быть не может - обычно такие МК разгоняются минимум на 10%, а то и более. Но даже если есть желание чего то там регулировать, возникает противоречие:
- если МК на "границе" не работает на искомой частоте, то почему лента должна работать на пониженной,
- что мешает завысить частоту при всех режимах и температурах, если частота осциллятора уплывает ниже допустимых выходных таймингов.
3. Есть смутное подозрение, что проблема лежит совершенно в другом месте. Полагаю, что дело не в том, что напряжение плавно упало с переходом на 32 МГц, а увеличились пульсации по питанию, которые не видит обычный мультиметр, но он интегрирует пульсации в среднее значение напряжения. Однако пульсации имеют нижним пиковым значением нерабочее напряжение МК, что либо вызывает периодический ресет (включен БОР), либо несанкционированное исполнение кода с зацикливанием.
4. По выше изложенным резонам я даже не могу представить себе в каких задачах может потребоваться такая (та, что Вы предлагаете) регулировка "вперед" (это не обратная связь)... Ради чего?
ЗЫ.
Но однако интересно, почему Вы не привели алгоритм, который не позволил работать на штатных таймингах. Заодно и выяснилось бы в чем причина...
Марк вне форума   Ответить с цитированием
Старый 23.09.2017, 08:48   #10
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 725
Вес репутации: 1200/47
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Цитата:
Сообщение от alex_zas Посмотреть сообщение
1. График зависимости HFINTOSC от Vdd (мне нужно 2,8...4,0).
2. График зависимости HFINTOSC от температуры (мне нужно 0...+40).
чем не устраивает график 30-3 ДШ?
DmitrijVDN вне форума   Ответить с цитированием
Старый 23.09.2017, 11:15   #11
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

(1) Да, возможно Вы правы, но у меня небольшая (10) партия изделий.
(2) Я при постановке задачи немного не корректно выразился. Из-за особенностей программной реализации тайминги у меня исходно значительно отличаются от идеальных. Поэтому нужно без кварца обеспечить поддержание частоты HFINTOSC в узких границах. Исходно при постановке задачи заказчик ставил немного другие требования. Оборудование изготовлено и эксплуатируется. Но теперь требования изменились и чтобы не переделывать платы приходится извращаться.
(3) Проблема выражается в частичном периодическом искажении изображения на пиксельной ленте при Vdd=4в и Vdd=3в (в моей задаче - граничные значения). Причём при Vdd=4в при определённом значении в OSCTUNE всё ОК, также и при Vdd=3в при определённом значении в OSCTUNE тоже всё ОК. Аналогичная ситуация, но менее выраженная, с температурой. Просто нужно теперь это периодически (скажем 1раз/мин) подстраивать.
(4)Цель - экономия кварца и свободных выводов. Предполагается что механизм работает постоянно и регулирует на лету частоту.

Для работы с WS2812B нужно считывать данные с памяти и формировать импульсы длительностью 400нс/800нс. На PIC16 это сделать проблематично. В своё время эту задачу мне пришлось решать очень быстро, поэтому был применён "извращённый метод" формирования импульсов. В статической SPI памяти формируется последовательность битов (узкие и широкие) так как нужно для WS2812B. Память тактируется от MCU необходимой частотой. Между выходом данных и входом ленты стоит вентиль "И" управляемый MCU. Когда нужно сделать вывод в ленту даётся команда чтения памяти, открывается вентиль, MCU выдерживает необходимую задержку для вывода всего массива и закрывает вентиль. Нужно только в начале и конце массива сформировать некоторое количество нулей на переключение вентиля.
Частота работы памяти переключается - при работе с MCU она максимальная, а при выводе в ленту - соответствует таймингам.
При кварце 20МГц все тайминги - идеально по даташиту. А вот при 32МГц пришлось при выводе с памяти в ленту формировать тактирование памяти программно. После открытия вентиля MCU переводится в бесконечный цикл, из которого MCU выходит по таймерному прерыванию, прерывание абортируется (изменяется указатель стека), закрывается вентиль.
Это конечно извращение, но так уже сделано. Нужно чуть-чуть подрегулировать и получить деньги.
alex_zas вне форума   Ответить с цитированием
Старый 23.09.2017, 11:23   #12
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Цитата:
чем не устраивает график 30-3 ДШ?
Тем, что на нём указана величина отклонения, а направление - нет.
alex_zas вне форума   Ответить с цитированием
Старый 23.09.2017, 11:34   #13
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 725
Вес репутации: 1200/47
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Цитата:
Сообщение от alex_zas Посмотреть сообщение
Тем, что на нём указана величина отклонения, а направление - нет.
мил человек , а вы когда нибудь собирали обычный генератор на трехточке? соберите, исследуйте, нет там направления , есть девиация частоты при постоянных температуре и питании
DmitrijVDN вне форума   Ответить с цитированием
Старый 25.09.2017, 13:32   #14
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Что такое "трёхточка"?Попрвьте меня, пожалуйста, если я что-то понимаю не так:1. При изменении Vdd изменяется частота HFINTOSC.2. При изменении температуры изменяется частота HFINTOSC.
alex_zas вне форума   Ответить с цитированием
Старый 28.09.2017, 14:12   #15
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 14
Вес репутации: 139/21
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Цитата:
Сообщение от alex_zas Посмотреть сообщение
Для работы с WS2812B нужно считывать данные с памяти и формировать импульсы длительностью 400нс/800нс. На PIC16 это сделать проблематично.
Если делать дёрганием пина с отключенными прерываниями, то просто -

вот часть кода моей программы
Код:
send_bit    macro    nbit
	       bsf	PORT_LED, PIN_LED ; 1   ( 125ns )
	       nop	                  ; 1 
	       btfss	WREG, nbit	  ; 1   ( T0H = 3*125ns = 375ns )
	       bcf	PORT_LED, PIN_LED ; bit    ( T1H = 6*125ns = 750ns ) 
	       nop			  ; bit
	       nop			  ; bit
	       bcf      PORT_LED, PIN_LED ; 0      ( T = 10*125ns = 1250ns )
	       nop			  ; 0
	       nop			  ; 0
               nop                        ; 0  
	    endm

send_bit0   macro    
	       bsf	PORT_LED, PIN_LED ; 1
	       nop			  ; 1
	       btfss	WREG, 0		  ; 1
	       bcf	PORT_LED, PIN_LED ; bit
	       moviw	FSR0++		  ; bit		
	       nop			  ; bit
	       bcf      PORT_LED, PIN_LED ; 0
	    endm

      ; Send 
Send_bytes_fsr
      movlw	NUM_LEDS*3
      movwf	cnt0
      moviw	FSR0++	
      banksel	PORT_LED
sb_loop      
      send_bit	7
      send_bit	6
      send_bit	5
      send_bit	4
      send_bit	3
      send_bit	2
      send_bit	1
      send_bit0	
      decfsz	cnt0		        ; 0  
      bra	sb_loop		; 0  2t
      
      return
а какие конкретно у вас получаются тайминги и как посылаете биты - через SPI?
Zikon вне форума   Ответить с цитированием
Старый 28.09.2017, 14:23   #16
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 14
Вес репутации: 139/21
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

и в дополнение посмотрите статью
https://cpldcpu.com/2014/01/14/light...ng-the-ws2812/

там хорошо расписано по таймингам
Zikon вне форума   Ответить с цитированием
Старый 28.09.2017, 18:31   #17
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

Спасибо за исходники. Просто у меня всё начиналось с PIC16F876A на тактовой 20МГц я не смог найти способа программно формировать вывод в ленту. Получилось только аппаратно с использованием статической SPI памяти. Если при чтении память тактировать 2,5МГц то на выводе данных будет непрерывная битовая последовательность с таймингами идеально по ДШ. Нужно только в памяти сформировать нули и единицы и поставить логический вентиль между выходом памяти и входом ленты.
Просто в новой версии PIC16F1829 на 32МГц и получить 2,5МГц проблематично, пришлось извращаться.
В принципе касательно этого проекта я проблему уже решил. Удалось подобрать значение в OSCTUNE при котором небольшие глюки есть только при питании ниже 3,3в. Заказчик не возражает.
Всем спасибо за участие.
P.S. Кстати, какой временнОй интервал у Вас между 8-м и 0-м битами? Я где-то встречал информацию что не все версии чипа WS1812B допускают такие "вольности".
alex_zas вне форума   Ответить с цитированием
Старый 28.09.2017, 21:00   #18
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 14
Вес репутации: 139/21
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

мне попались WS2812B наверно как из статьи Тома
только я тестировал пока 16 светодиодов в цепочке
период на один БИТ может изменяться довольно широко
в приведённом выше примере - исправлено немного
реально работало даже при

T0H = 375ns; T1H = 750ns; T = 1125ns (биты 7-1)
T0H = 375ns; T1H = 750ns; T = 1250ns (бит 0)

если убрать последний NOP в макро send_bit

а также работало при
1) T0H = 375ns; T1H = 750ns; T = 1125ns (биты 7-0)
2) T0H = 375ns; T1H = 750ns; T = 1500ns (биты 7-0)
3) T0H = 400ns; T1H = 800ns; T = 1600ns (биты 7-0)
и т. д.
Zikon вне форума   Ответить с цитированием
Старый 28.09.2017, 21:24   #19
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 14
Вес репутации: 139/21
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

при программной реализации на F887 и F628A
работало

T0H = 400ns; T1H = 800ns; T = 1200ns (биты 7-1)
T0H = 400ns; T1H = 800ns; T = 1400ns (бит 0)
Zikon вне форума   Ответить с цитированием
Старый 28.09.2017, 22:26   #20
alex_zas
Junior Member
 
Регистрация: 17.03.2017
Возраст: 52
Сообщений: 9
Вес репутации: 100/0
alex_zas will become famous soon enoughalex_zas will become famous soon enough
По умолчанию Re: Коррекция HFINTOSC по Vdd и температуре

У меня в первой версии изделия было 240 пикселей, а в текущей версии 480. При таких количествах нужно в паузе успевать считывать байт из внешней памяти, инкрементировать адрес, и т.д.
Проблематично, вернее ненадёжно. Слишком велико смещение таймингов от ДШ.
Проще аппаратно реализовывать, тем более что внешняя память всё равно нужна. Единственное кварц должен быть с частотой, кратной 2,5МГц.
alex_zas вне форума   Ответить с цитированием
Ответ

Метки
hfintosc, osctune, pic16f1829, ws2812b


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39
gprs тарификация (конкретнее- по sim300) MaxB Общетехнические вопросы 4 21.08.2008 20:16


Часовой пояс GMT +3, время: 17:12.


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