AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
23.12.2020, 18:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 7,755
Сказал спасибо: 2,666
Сказали Спасибо 2,631 раз(а) в 1,945 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от makakus
|
Как ни дели частоту, если она уползла на 5%, то и поделённая уползёт ровно на те же проценты
|
При каждом переходе 0-1 или 1-0 в принимаемой посылке отсчет начинается с нуля - т.е. накопленная на предыдущих битах погрешность обнуляется.
ИМХО надо бы тестить на посылках что-то типа 00000001 или 11111110.
|
|
|
|
23.12.2020, 18:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,784
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от Yuri222
|
При каждом переходе 0-1 или 1-0 в принимаемой посылке отсчет начинается с нуля - т.е. накопленная на предыдущих битах погрешность обнуляется.
|
Чёй-та?... по спаду RxD на стартовом бите.
__________________
Экзорцист 40-го уровня.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо ForcePoint за это сообщение:
|
|
|
23.12.2020, 18:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от Yuri222
|
При каждом переходе 0-1 или 1-0 в принимаемой посылке отсчет начинается с нуля
|
Ссылки нет у вас, где это такое?!
Обычно пишут, что прицеливаются в середину бита, там берут 3-5 сэмплов, голосуют втроём-впятером: ноль или единица.
По-вашему получается, что 'U' будет приниматься с отклонением частоты хоть в 20%, а несчастный 0х00 должен быть дико точен, чтобы не сделаться 0х80, а то и 0хС0. Или frame error, если уплывёт в другую сторону. Так? Только никто такого не видел имхо...
|
|
|
Сказали "Спасибо" makakus
|
|
|
23.12.2020, 19:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 7,755
Сказал спасибо: 2,666
Сказали Спасибо 2,631 раз(а) в 1,945 сообщении(ях)
|
Re: Применение МК без кварца.
ForcePoint, makakus, извиняюсь, ошибся.
|
|
|
Сказали "Спасибо" Yuri222
|
|
|
26.12.2020, 16:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Применение МК без кварца.
Кажется, есть ответ на мой вопрос к someone (он моолчит - не зает), как получается, что нет приёма на 38400, приём с ошибками на 19200 а на 9600 всё ок. Ведь если частота ушла на 5%, то эти же 5% будут и на 38400 и на 9600 и на, страшно сказать, 600 бод.
У меня софтовый UART. Сам я его написал. По перепаду стартового бита прерывание, и дальше таймер отмеряет полубитовый и битовые интервалы. На бит у таймера порядка 200 шагов, так что с точностью всё в порядке. Дальше это работает с датчиком по modbus rtu, у которого битрейт 9600 прибит гвоздями. Так этот датчик тоже - пять раз ответит, два раза нет. Допрос с пристрастием показал, что сам он пишет (и, очевидно, принимает?) на скорости 9730, что нехорошо, но в пределах: +1,5% скорости. А у меня 9600 с точностью до пятого знака, потому что кварц специально 14,756МГц. Так вот: дело в стартовом бите.
Вы получаете прерывание по перепаду стартового бита. Отмеряете интервал пол-бита, чтобы попасть в середину следующих битов. Но, за счёт дополнительных расходов на вход в прерывание и перехода к циклу приёма битов, от старта до сэмпла первого бита проходит не ‹время бита›/2, а ‹время бита›/2 + dP. И вот это dP постоянно и не зависит ни от чего.
Дальше просто. На малой скорости dP мало по сравнению с длиной бита. На большой становится существенным, и к концу байта сэмпл всё больше смещается к концу. Пока вместо последнего бита не станет браться предпоследний. Это похоже на увеличенный битрейт передатчика, хотя по всем измерениям всё точно.
Мой датчик, в славных традициях modbus'a, просто молчал как партизан.
Вот оно: A1-A2 должно быть 52,0833 мкс а не 56,5
Последний раз редактировалось makakus; 26.12.2020 в 16:42.
|
|
|
|
26.12.2020, 19:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,784
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от makakus
|
Вы получаете прерывание по перепаду стартового бита. Отмеряете интервал пол-бита, чтобы попасть в середину следующих битов. Но, за счёт дополнительных расходов на вход в прерывание и перехода к циклу приёма битов, от старта до сэмпла первого бита проходит не ‹время бита›/2, а ‹время бита›/2 + dP. И вот это dP постоянно и не зависит ни от чего.
|
Прошу прощения, но даже в замшелом AVR910 это было. Пусть и в виде constant-magic:
Код:
|
getc:
sbis PIND,RXPIN
rjmp getc
getc0:
sbic PIND,RXPIN
rjmp getc0
ldi temp1,(256-(N+N/2)+8+12);
out TCNT0,temp1 ; preset T/C0 to 1.5 bit lengths |
__________________
Экзорцист 40-го уровня.
|
|
|
|
26.12.2020, 22:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от ForcePoint
|
Прошу прощения, но даже в замшелом AVR910 это было
|
Очевидно, теперь моя очередь извиняться, что я не прочитал все замшелые документы атмела?
А что ж вы молчали, не объяснили someone и прочим нам в чём дело, ведь две недели как это всё обсуждается. А теперь, стало быть, не смогли промолчать? А почему?
|
|
|
|
26.12.2020, 22:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,784
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от makakus
|
не объяснили someone и прочим нам в чём дело
|
КМК, у someone всё в порядке. Просто вместо организации своей темы SlovachevskyDV присоединил вопрос сюда (у него, как я помню, искажается один единственный бит). Теперь уже трудно решить, кому ответить, а кому нет.
А городить soft-uart сейчас уже вроде ни к чему, если не "тиньки". Да и то, в некоторых есть аппаратный.
__________________
Экзорцист 40-го уровня.
|
|
|
|
09.01.2021, 20:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от ForcePoint
|
городить soft-uart сейчас уже вроде ни к чему
|
Опять вы понимаете больше, чем знаете. У меня в схеме их ЧЕТЫРЕ.
|
|
|
|
17.03.2021, 12:15
|
|
Временная регистрация
Регистрация: 10.10.2011
Адрес: Донецк
Сообщений: 94
Сказал спасибо: 65
Сказали Спасибо 48 раз(а) в 13 сообщении(ях)
|
Re: Применение МК без кварца.
Сообщение от SlovachevskyDV
|
И кстати кто-то из вас натолкнул меня на дикую идею подстраивать частоту проца под частоту сети. Гуляние частоты сети вроде бы не больше 0,9%
Кидайте тапками, типа трансанальное решение и не по феншую. Но это очень просто реализовать.
|
Если кому интересно, недавно снова дошли руки до этого проекта, и синхронизация с частотой сети вполне корректно работает.
Код:
|
else if(Ext1Stat == RIS_STAT) ///это происходит при отрицательном переходе через 0
{
Ext1Stat = FAL_STAT; // INT1: вкл, FALLING
GICR |= 0x80;
MCUCR &= 0xF3;
MCUCR |= 0x08; //0000 1000
GIFR=0x80;
//udebag = 0x01;
//PIN_0(debug1);
if (CntCalibF › 193) //Количество прерываний АЦП,
{ //АЦП запущено в бесконечном режиме
OSCCAL--;
}
if (CntCalibF ‹ 192)
{
OSCCAL++;
}
CntCalibF = 0;
} |
Связь что с компом, что с другим устройством на STM32 с кварцем стабильная.
Последний раз редактировалось SlovachevskyDV; 17.03.2021 в 14:01.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:32.
|
|