-
- Как это "перестали работать кварцевые генераторы"? Нонсенс какой-то. Купите исправные и замените те, что перестали работать. Именно с причиной болезни надо разбираться, а не на стоп-биты уповать. - Ксения(20.11.2009 14:34)
- Ну можно как бы по старт-биту вообще калиброваться, при условии, что 0-й бит всегда имеет противоположный знак (ограничение на адрес). Но это надо значит ногу RX либо на таймер, либо быстро-быстро, что невозможно. - fk0(20.11.2009 12:55)
- Хотя вообще можно поступить проще. Обязать мастера раз в несколько секунд, например, посылать в шину "калибровочный байт". А слейвы должны, например, раз в минуту на всё класть, переключать UART на максимальный baudrate и пытаться принять калибровочный fk0(128 знак., 20.11.2009 13:01)
- Можно по интервалу между калибровочными байтами, если мастер выдерживает этот интервал с достаточной точностью. - vmp(20.11.2009 13:04)
- Плохая идея -- не выдержит. - fk0(20.11.2009 14:08)
- Можно по интервалу между калибровочными байтами, если мастер выдерживает этот интервал с достаточной точностью. - vmp(20.11.2009 13:04)
- Хотя вообще можно поступить проще. Обязать мастера раз в несколько секунд, например, посылать в шину "калибровочный байт". А слейвы должны, например, раз в минуту на всё класть, переключать UART на максимальный baudrate и пытаться принять калибровочный fk0(128 знак., 20.11.2009 13:01)
- У меня похожая проблема, собираюсь каптурить Rx, распознавать интервал, соответствующий одному биту из посылки мастера и корректировать свой УАРТ. - Vladimir Ljaschko(20.11.2009 11:24)
- А я для работы без кварца просто сделал свой протокол обмена. Передаю по биту за байт. Идею взял из интерфейса 1-wire (IButton). vmp(216 знак., 20.11.2009 11:58)
- Интересная идея. А какая скорость? Мне хорошо бы 19200 реальных получить, ресурсов отъест как на 200 кбит. Прерывание раз в 50 мкс, в принципе терпимо. - Vladimir Ljaschko(20.11.2009 12:34)
- А передавайте по два бита за байт. 0x00/0x0F/0xF0/0xFF на передаче. На приёме на разбросах частоты вместо 0xF0 может быть и 0xE0, и 0xF8 (при 12% или 10% развале частот, ща не соображу), но всё должно приняться. Может, ReAl(220 знак., 22.11.2009 01:22 - 01:28)
- Логично, спасибо! Разброс обычного AVR, на столе и так работает без проблем, но реальном устройстве будет прилично нагреваться. - Vladimir Ljaschko(23.11.2009 12:51)
- Про конкретный разброс частот на объекте не знаю. Дома фсё работает без ошибок и без всяких калибровок. В даташите данные по разбросу ОТСУТСТВУЮТ. Интересует, какой разброс встроенного RS от микросхемы к микросхеме 5-70со, и какая T.Дocтoeвcкий(63 знак., 22.11.2009 11:08 - 11:12)
- У AVR, как и у многих других МК, есть типо баг в УАРТ - при небольшом (порядком 1%) увеличении скорости принимаемой посылки может не восприниматься следующий старт-бит, т.к. он ищется триггером по перепаду, ну а разрешается этот поиск где-то после 14-й Vit(391 знак., 22.11.2009 11:50)
- IMHO -- это не баг, а фича. Стоп-бит должен быть полноценным. Только вот на счёт 1% мне не верится. Впрочем легко проверить прибором с неправильным кварцем и приёмом на "проблемный контроллер" и на UART от PC. - fk0(23.11.2009 10:09)
- приведите примеры "многих других МК", а то ни на одном из семейств pic от pic16 до dspic33, ни на MSP430 такого не замечал, если скорость находится в допустимых пределах отрабатывает нормально. поскольку это не "типо баг", а конкретный косяк, который AVF(48 знак., 22.11.2009 14:29)
- Отдельностоящий UART подойдет? TL16C752C and TL16C754C Short STOP Bit Errata vmp(730 знак., 23.11.2009 15:53, ссылка)
- Таки из одного мусорника ноги ростут;) - Vit(23.11.2009 16:43)
- С8051F350, LPC2378, а из AVR такое попадалось в ATmega128/2560/2561. Предполагаю, что это проблемы семейств, и ещё предполагаю, что это из-за выгребания разработчиками камней топологии модулей периферии (в частности УАРТ) из одной мусорной ямы Vit(92 знак., 22.11.2009 17:43 - 18:04)
- фигня PIC16F877/877А, (uart PIC16LF876A одинаковый), PIC18F452, PIC18LF458 - при изменениях скорости в допустимых пределах прекрасно работают. до +-4% c шагом 1Гц на скоростях 300, 1200 и 9600 бод лично проверял, поскольку применяемое оборудование могло AVF(143 знак., 23.11.2009 13:13)
- А паузы между байтами были? - Vit(23.11.2009 15:11)
- пауз не было, сплошной поток, контролировалось на пакетах 4, 6 и 16 байт - AVF(23.11.2009 15:27)
- гут - Vit(23.11.2009 15:35)
- пауз не было, сплошной поток, контролировалось на пакетах 4, 6 и 16 байт - AVF(23.11.2009 15:27)
- Спасибо, но проверять, если понадобится, то буду;) - Vit(23.11.2009 14:13)
- А паузы между байтами были? - Vit(23.11.2009 15:11)
- фигня PIC16F877/877А, (uart PIC16LF876A одинаковый), PIC18F452, PIC18LF458 - при изменениях скорости в допустимых пределах прекрасно работают. до +-4% c шагом 1Гц на скоростях 300, 1200 и 9600 бод лично проверял, поскольку применяемое оборудование могло AVF(143 знак., 23.11.2009 13:13)
- Отдельностоящий UART подойдет? TL16C752C and TL16C754C Short STOP Bit Errata vmp(730 знак., 23.11.2009 15:53, ссылка)
- О Ёпт!!! - T.Дocтoeвcкий(22.11.2009 11:58)
- У AVR, как и у многих других МК, есть типо баг в УАРТ - при небольшом (порядком 1%) увеличении скорости принимаемой посылки может не восприниматься следующий старт-бит, т.к. он ищется триггером по перепаду, ну а разрешается этот поиск где-то после 14-й Vit(391 знак., 22.11.2009 11:50)
- Скорость для меня была некритична, поскольку данных мало (8 бит), передача раз в секунду, мастер использовал DMA, а слейву все равно нечем было заняться. vmp(678 знак., 20.11.2009 13:02)
- А передавайте по два бита за байт. 0x00/0x0F/0xF0/0xFF на передаче. На приёме на разбросах частоты вместо 0xF0 может быть и 0xE0, и 0xF8 (при 12% или 10% развале частот, ща не соображу), но всё должно приняться. Может, ReAl(220 знак., 22.11.2009 01:22 - 01:28)
- Интересная идея. А какая скорость? Мне хорошо бы 19200 реальных получить, ресурсов отъест как на 200 кбит. Прерывание раз в 50 мкс, в принципе терпимо. - Vladimir Ljaschko(20.11.2009 12:34)
- А я для работы без кварца просто сделал свой протокол обмена. Передаю по биту за байт. Идею взял из интерфейса 1-wire (IButton). vmp(216 знак., 20.11.2009 11:58)
- Если протокол обмена в Ваших руках, может что-то типа как в LIN-e. Там первая посылка служит для подстройки скорости и не содержит переходов внутри себя. - Chum_A(20.11.2009 10:50)
- А не попробовать ли просто включить 2 стоп-бита? Vit(219 знак., 20.11.2009 00:02 - 00:08)
- Про стопбиты ниасилил! T.Дocтoeвcкий(290 знак., 20.11.2009 00:34)
- Абисняю ещё раз Vit(446 знак., 20.11.2009 00:54)
- Про стопбиты ниасилил! T.Дocтoeвcкий(290 знак., 20.11.2009 00:34)
- Если возможно, перейди на манчестер. - бомж(19.11.2009 23:52)
- И работающие тогда тоже придётся разобрать чтобы перешить. Фся проблема в корпусах из отечественного полистирола, он дал усадку, и зоказчег решил платы обточить. Выяснилось только через год, когда зоказчег зоказчека смонтировал фсё на объекте. Разобрать T.Дocтoeвcкий(80 знак., 20.11.2009 00:54)
- Дада, как всегда во всём виноваты эти бездельники -- программисты! - fk0(20.11.2009 12:53)
- И работающие тогда тоже придётся разобрать чтобы перешить. Фся проблема в корпусах из отечественного полистирола, он дал усадку, и зоказчег решил платы обточить. Выяснилось только через год, когда зоказчег зоказчека смонтировал фсё на объекте. Разобрать T.Дocтoeвcкий(80 знак., 20.11.2009 00:54)