подстройка RC генератора по часовому кварцу

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: подстройка RC генератора по часовому кварцу

Сообщение Z_h_e »

Да тут то обратный случай, на гладкой бумаге не должно было работать, но по оврагам поехало :dont_know: .
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: подстройка RC генератора по часовому кварцу

Сообщение Pnjom-Penb »

Неа. Облегченные условия тестирования - это как раз и есть "бумага", а реальные условия - "овраги". Вот, как-то так... ;)
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: подстройка RC генератора по часовому кварцу

Сообщение Z_h_e »

На бумаге 0В - неопределенное состояние для ком порта. В реале (овраге) оказалось что комп отлично 0В воспринимает как лог.1.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: подстройка RC генератора по часовому кварцу

Сообщение Pnjom-Penb »

Это поверхностное наблюдение. Писишники довольно широко трактовали стандартные напруги для RS232. Не одновременно, разумеется, а по мере продвижения... Рынок, блин. :facepalm:

ЗЫ: В юности коллекционировал словари, было такое увлечение. Так вот, в одном философском словаре словарная статья "Зануда" давала такое определение: "Человек, которому легче дать, чем объяснить почему этого делать не следует."
Аватара пользователя
Gaff
Потрогал лапой паяльник
Сообщения: 382
Зарегистрирован: Ср янв 27, 2016 10:19:41
Контактная информация:

Re: подстройка RC генератора по часовому кварцу

Сообщение Gaff »

Z_h_e писал(а):Я еще как то умудрился подключить некое тестовое устройство к Ком-порту компа без преобразования уровня(лень было добавлять преобразователь), т.е. ТТЛ и все работало на нескольких компах. Комп был в роли приемника и нечего в ответ не передавал. Напряжение 0 для ком-порта по идее должно быть неопределенным состоянием, проверял на нескольких компах, все работало.
Вам просто повезло. Но это скорее исключение чем правило. А я когдато намучался с MAX232. Какието глюкавые они. Включаеш и неработает притом сам МАХ начинает жутко грется. Дёрнеш питание запускается работает и остаётся холодной. Когда как. Хотя схема была один в один по даташиту. Такое наблюдалось в разных устройствах и микросхемы были из разных партий.
Не стесняйтесь благодарить тех кто вам помогает.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: подстройка RC генератора по часовому кварцу

Сообщение Z_h_e »

Gaff писал(а):Но это скорее исключение чем правило.
Понимаете Gaff, я ни разу не утверждал что это правило и что так надо или разрешено подключать. Мне нужно было передать данные от некого тестового устройства в комп. Это было в те времена, когда PC уже были распространены, но в основном только в офисах, ибо для большинства населения это было еще роскошью. Соответственно об активном пользовании интернета не могло быть и речи. Если я и знал уже о существовании чипов типа MAX232, то все равно ее не было бы в нашем магазине. Т.е. мне надо было делать преобразователь уровня на транзисторах или оптопарах с доп. источником питания. Перед тем как это делать, я решил попробовать подключить напрямую - на удивление все заработало. Потом ради интереса я проверил еще на нескольких компах. С этим случаем из жизни я поделился с форумчанами и ничего более.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Re: подстройка RC генератора по часовому кварцу

Сообщение VAT »

Вот мега48,например, проверяет стартовый бит на 7,8,9 отсчете от начала стартового бита. частота в бодах *16 если. Есть удвоенная скорость где все жестче еще - не рассматривал.
но это не догма - в свое время я делал уарт на рассыпухе - там решалось как-то по другому, хотя тоже по центру стартового бита. (В это время плата графики 320х240 4 цвета (CGA) на отечественных компонентах тянула корпусов 200)) смешно?)

Никаких 10% - вы что? это скажем так - в надежде что на другом конце УАРТ разработанный недоразработчиками. парадокс)
Если на другом конце УАРТ из палаты мер и весов, а с этой - ваш собственный работающий на прием без проверки середины старт бита - то наверное можно говорить о несколько меньшей чем 10% погрешности.
Если с обеих сторон бог знает что - то нужно 2,5% и меньше.
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Re: подстройка RC генератора по часовому кварцу

Сообщение VAT »

Я вот думаю о псевдомонотонности - это ж надо было атмелу так мля оконфузится..
и еще о разбиении OSCCal на зоны -0-127 и 128 - 255 которые типа пересекаются и нужно выбрать лучшее значение.
они вообще о разработчиках думают? Я считаю этот "выбор" издевательством.


еще есть одна тревожная мысля. приведенный алгоритм подбирает OSCCal впритык к верхней "опытной" границе.. 100. даже если сделать шаг назад - 98 не получится никогда.

мне это пока непонятно. опыт говорит о рабочей середине 98-99.
Сам пишу и себе же отвечаю) у меня ж китайский USB-UART. Так что этот идеал может быть вовсе не идеал.

Никакие осциллографы (если только для отладки) - устройство должно работать с запайки батарейки (потом прогрузка FW )и до конца.

и это - не нужно соединять УАРТы без преобразователей.
микросхема УАРТ обеспечивает приемопередачу между двумя устройствами у которых потенциал "земли" не равен. допустимая разница - вольты, в идеале до 10. точнее нужно - в справку по микросхемам.
шаг вверх - опторазвязка - тут можно киловольтами оперировать (не забывая о скоростных параметрах оптопар).
шаг вниз - TTL UART - тут и полвольта разницы могут кончиться повреждением МК.
И еще - лениво заниматься- но там вроде инверсия должна быть? если ставить преобразователь типа TTL-RS232.
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Re: подстройка RC генератора по часовому кварцу

Сообщение VAT »

попробовал кстати не по 2 прибавлять к OSCCal, а по 1.. Работает. т.е. монотонно все..
Но видимо некоторые экземпляры могут иметь немонотонность. поэтому придется это иметь ввиду.
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Re: подстройка RC генератора по часовому кварцу

Сообщение VAT »

Если кому интересно - сейчас как rcall работает вот такой код.
он не учитывает всевдомонотонности графика OscCal и не выбирает лучшее значение из нижней и верхней зон.
Несмотря на то, что сравнивается число импульсов 225, что само по себе -10% от переполнения - все находится и частота ловится либо в первой зоне (у меня -99) либо во второй - 158. Почему-то работает, хотя и не должно бы.
У меня в инициализации будет сначала запись в OscCal - 0, поэтому подгон пойдет от ~5МГц до 7,3 . А потом в прерывании подстройка +-1, поэтому я не заморачиваюсь и вроде я не могу попасть в зону OscCal 127-255. Но там тоже работает.
Но если кто доведет эту процедуру до ума - я думаю всем пригодится.
Я например впадаю в тоску от понимания псевдомонотонности (по идее нужно от найденного проверить +-1 и из 3х выбрать лучшее).
Кроме того Атмел, гореть его разработчикам в аду)) предлагает поискать в другой зоне и опять выбрать лучшее..
Да - у меня переполнение таймера 2 - два раза в секунду. Если потребуется допустим 1сек, потребуется коррекция, то же самое если системная частота другая.
было бы здорово иметь универсальную процедуру, возможно даже 2 - так как способ поиска в инициализации и подстройка несколько отличаются по логике.
В даташитах на серию мега 48 и тп все выглядит так, что автоподстройка не особо нужна, в температурах и напряжениях, но а там кто знает.. есть ведь еще время - про время ничего не сказано в даташитах.



TR_Speed_Adj:
push w0
push w1
push w2
clr w1 ; обнуляем счетчик системных клоков которые будут подсчитываться за фазу "1" бита "0" таймера 2.
;7бит в "1" находится 250mc, и т д 0бит 1,953мс. нам хватает периода бита 0
clr w2 ;обнуляем статус (его 0,1 биты - направление подгона частоты)
;
RCC_0:
lds w0,tcnt2
sbrc w0, 0 ; ждем пока бит 0 не станет 0, подгоняем начальные условия для счета, так как непонятно в какое место попали
rjmp RCC_0
;
RCC_1:
lds w0,tcnt2 ;2ck
sbrs w0,0 ;2ск
rjmp RCC_1 ; ждем пока бит 0 не станет =1, подгоняем начальные условия для счета
nop ;1
inc w1 ;1
nop ;1
nop ;1ск
;
RCC_2:
lds w0,tcnt2 ; 2ck
sbrs w0, 0 ; 2ск .
rjmp RCC_3 ;выходим из подсчета
nop ;1ck
inc w1 ;1ck
rjmp RCC_2 ;2ck. (9600= 921,6кГц/16/(5+1)), следовательно нужно получить период генератора =1,08507мкс
; итого весь цикл 8ск. период этого цикла 1,08507*8= 8,68056мкс
RCC_3:

cpi w1,225 ;должно быть 225. 225*8=1800клоков за 1,953мс
breq RCC_5 ;w1=225 выход
brsh RCC_4 ;w1>225 понижаем частоту
;w1<225 аовышаем частоту
sbrc w2,F_Dn;
rjmp RCC_5 ; смена направления - выход
sbr w2, (1<<F_Up);
lds w0,OSCCal
inc w0 ; псевдомонотонность калибровки не учитывается
sts OSCCal,w0 ;
clr w1 ;
rjmp RCC_1 ;там заодно и пауза будет на успокоение генератора ~ равная фазе "0"
RCC_4:
sbrc w2,F_Up;
rjmp RCC_5 ; смена направления - выход
sbr w2, (1<<F_Dn);
lds w0,OSCCal
dec w0 ; псевдомонотонность калибровки не учитывается
sts OSCCal,w0 ;
clr w1 ;
rjmp RCC_1 ;там заодно и пауза будет на успокоение генератора ~ равная фазе "0"
RCC_5:
pop w2
pop w1
pop w0
;
ret
Аватара пользователя
Gaff
Потрогал лапой паяльник
Сообщения: 382
Зарегистрирован: Ср янв 27, 2016 10:19:41
Контактная информация:

Re: подстройка RC генератора по часовому кварцу

Сообщение Gaff »

Знаете VAT, тут мало кто расбираеться в програмировании вобще и в Асме темболие. Если хотите получить адэкватную помощ нарисуйте по вашей програмке алгоритм. Графическое изображение будет всем понятно. И тем кто пишет на Асме, и тем кто на Бэйсике, и тем кто на Си.
Не стесняйтесь благодарить тех кто вам помогает.
dgrett
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Re: подстройка RC генератора по часовому кварцу

Сообщение dgrett »

Gaff писал(а):Знаете VAT, тут мало кто расбираеться в програмировании вобще и в Асме темболие.


Ну зачем так оскорблять уважаемых котов? И почему "в Асме темболие"?
Я всё-всё узнAю и стану профессором.
Ответить

Вернуться в «AVR»