|
Зависание микроконтроллера, ATMega 128 |
|
|
|
 |
Ответов
|
May 4 2008, 14:41
|

Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342

|
Насчет "устойчивости" протокола... Вот вы когда дорогу переходите на светофоре. Тоже, в принципе, придерживаетесь определенного протокола: "Красный - стоять, зеленый - идти". Вполне нормальный, достаточно помехоустойчивый протокол. НО. Когда загорается зеленый и вы собираетесь пойти - вы смотрите на дорогу? Вы убеждаетесь в отсутствии "лихачей", стареньких подслеповатых дедушек на "Москвичах", блондинок? Во-от, так что как бы ни был хорош "протокол" - но если есть возможность улучшить его работу элементарными средствами (в данном случае "растяжки" на RS-485), надо ими воспользоваться. =AK= все правильно написал про "грамотно реализованный" протокол, при наличии помех он, конечно, "битые" пакеты не пропустит... Но для уменьшения количества этих самых битых пакетов вдобавок к протоколу меры защиты аппаратного уровня не помешают. Цитата(=AK= @ May 3 2008, 11:43)  Имейте ввиду, что оптрон инвертирует сигнал. Внимательно изучите схему. В этом включении - не инвертирует! Цитата Однако, даже если бы он не инвертировал. Объясните, почему, собственно, на входе UARTа вам хочется в паузах между пакетами видеть высокий уровень, а не низкий. Зачем? Потому что "исторически так сложилось" © М.С.Горбачев. В "неактивном" состоянии на линии UART предполагается уровень "MARK" (равный -12В в RS-232 или лог. "1" в ТТЛ). Стартовый бит начинается с перехода "MARK -> SPACE".
--------------------
Gray©at
|
|
|
|
|
May 4 2008, 23:13
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(GrayCat @ May 5 2008, 00:11)  Во-от, так что как бы ни был хорош "протокол" - но если есть возможность улучшить его работу элементарными средствами (в данном случае "растяжки" на RS-485), надо ими воспользоваться. Наличие или отсутствие растяжек никак не влияет на работу правильного протокола, поэтому "улучшить его работу" растяжками невозможно. "Чувствительность" к наличию растяжек есть полная гарантия того, что протокол плохой. Цитата(GrayCat @ May 5 2008, 00:11)  Но для уменьшения количества этих самых битых пакетов вдобавок к протоколу меры защиты аппаратного уровня не помешают. Растяжки не уменьшают количество битых пакетов, если протокол правильно реализован. Чтобы получился битый пакет, в плохом протоколе помеха должна пересилить растяжки, а в хорошем - пересилить работающий выход передатчика. Цитата(smalcom @ May 5 2008, 02:51)  перед отправкой пакета задержка, чтобы линия успокоилась. Я писал, что нужно два элемента: - "Задержка перед отправкой пакета", когда передатчик включен, но данных не передает. Длительность паузы - порядка 2-3 байт-интервалов. - Гарантия малых пауз между соседними байтами в пакете. Если приемник видит большую паузу между байтами, текущий пакет немедленно выбрасывается как ложный, а приемник мгновенно приводится в состояние готовности к приему нового пакета. При этом ложные помеховые пакеты, прием которых начался в паузе между настоящими пакетами, будут выброшены за время паузы в начале настоящего пакета. Соответственно, помеха не в состоянии испортить пакет данных, вне зависимости от наличия или отсутствия подтяжек.
|
|
|
|
|
May 5 2008, 02:35
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ May 5 2008, 02:13)  При этом ложные помеховые пакеты, прием которых начался в паузе между настоящими пакетами, будут выброшены за время паузы в начале настоящего пакета. Соответственно, помеха не в состоянии испортить пакет данных, вне зависимости от наличия или отсутствия подтяжек. Есть более простой способ решающий эту проблему - байт стаффинг. Никаких задержек и никаких лишних включений "перед отправкой пакета" не потребуется. Не потребуется также отмерять точные интервалы. Проигрываем в объеме передаваемых данных, но раз используются скорости 19200 предположу, что трафик в сети невелик, а значит применить байт стаффинг можно. Цитата по протоколу. протокол у меня простой: Заголовок Адресат Команда Данные постоянной длины CRC16 Что такое "Заголовок"? Если его выбросить то формат у вас совпадает с modbus rtu. Когда "Адресат" идет первым, то по первому же байту можно определить предназначен ли этот пакет конкретному устройству или нет и вести предварительную отбраковку еще в прерывании.
|
|
|
|
|
May 5 2008, 03:00
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ May 5 2008, 12:05)  Есть более простой способ решающий эту проблему - байт стаффинг. Никаких задержек и никаких лишних включений "перед отправкой пакета" не потребуется. Не потребуется также отмерять точные интервалы. Нет, не работает. В ситуации, когда помеха запускает UART ложным старт-битом незадолго до байта заголовка (soh), ваш пакет бyдет испорчен, поскольку заголовочный байт не будет принят. Значит, при определенном уровне помех, когда ложный запуск происходит часто, связи вообще не будет, все пакеты бyдут испорчены. Правильный протокол в этой ситуации будет работать как ни в чем не бывало.
|
|
|
|
|
May 5 2008, 03:54
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ May 5 2008, 06:00)  В ситуации, когда помеха запускает UART ложным старт-битом незадолго до байта заголовка (soh), ваш пакет бyдет испорчен, поскольку заголовочный байт не будет принят. Не будет ничего испорчено. Последовательность такая: Передатчик посылает 1-2 байта преамбулы 0xFF, открывающую стаффинг последовательность, RTU пакет, закрывающую стаффинг последовательность, и байт преамбулы. Использую этот подход в радио каналах и серьезно задумываюсь над переносом этого протокола в 485 сети потому что жесткие времянки модбаса слегка достают уже (при том что против формата RTU пакетов я ничего не имею - формат грамотный). Плюсы: 1. Передатчик волен вставлять любые паузы между символами (актуально когда хост - компьютер с не реал-тайм драйвером UART'a), 2. Четко выделяется начало и конец пакета, к обработке можно переходить немедленно после приема закрывающего флага, не нужно считать CRC в прерывании на слейве. 3. Опять же хост - тот же компьютер с не риалтайм приемником вместо непрогнозируемого таймаута четко распознает конец пакета - что уменьшает время реакции. Минусы Избыточность. (в худшем случае 2х кратное увеличение количества передаваемых данных на 1 пакет).
|
|
|
|
|
May 5 2008, 06:22
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ May 5 2008, 13:24)  Передатчик посылает 1-2 байта преамбулы 0xFF, открывающую стаффинг последовательность Если передатчик посылает всего 1 байт преамбулы 0xFF: - Помеха, которая создаст ложный старт-бит незадолго до этого, запустит UART - В момент прихода байтa преамбулы 0xFF, UART, находящийся где-то в середине приема байта, "не увидит" 0xFF, а увидит некий ложный байт. Пакет будет испорчен. Если передатчик посылает 2 байтa преамбулы 0xFF, то ситуация лучше: первый байт может быть испорчен, но второй "прочистит" приемник, так что пакет будет принят правильно. Однако по затратам времени два байта преамбулы ничем не лучше паузы в 2 байт-интервала. Что же касается накладных расходов, то ваши затраты на парсенье эскэйп-последовательностей выглядят не меньшими, чем затраты на проверку тайм-аутов между байтами. Разница в основном в том, что вы парсите софтом, а тайм-ауты проверяются в основном железом (таймером). Поэтому вам нужно меньше таймеров, но более производительный проц. В принципе шило на мыло, примерно тож на тож получится.
|
|
|
|
Сообщений в этой теме
smalcom Зависание микроконтроллера Apr 14 2008, 13:27 Dog Pawlowa Цитата(smalcom @ Apr 14 2008, 16:27) Не з... Apr 14 2008, 14:03 IDE Цитата(smalcom @ Apr 14 2008, 17:27) Набл... Apr 14 2008, 14:20 smalcom PPS. кварц заземлен.
PPPS. wathcdog включен - все ... Apr 14 2008, 14:46 defunct Цитата(smalcom @ Apr 14 2008, 16:46) PPS.... Apr 14 2008, 14:56 galjoen Цитата(smalcom @ Apr 14 2008, 18:46) PPPS... Apr 14 2008, 15:26 Dog Pawlowa Цитата(smalcom @ Apr 14 2008, 17:46) норм... Apr 14 2008, 15:37 smalcom ммм... меня могли неправильно понять - криво напис... Apr 14 2008, 15:11 defunct Цитата(smalcom @ Apr 14 2008, 17:04) кера... Apr 14 2008, 15:17 smalcom в схеме сброса включен супервизор MCP100-315 и кно... Apr 14 2008, 15:23 defunct ЦитатаРядом лежит такойже девайс из старой партии:... Apr 14 2008, 15:25 injen-d Возможно виноват не запрограммированный бит CKOPT ... Apr 14 2008, 15:29 smalcom фьюзы
BLEV=1
BODEN=1
SUT=2
CKSEL=D
BLB1=3
BLB0=3
O... Apr 14 2008, 15:37 galjoen Цитата(smalcom @ Apr 14 2008, 19:37) CKSE... Apr 14 2008, 15:55 smalcom ЦитатаЗамеряйте потребляемый ток старого и нового ... Apr 14 2008, 15:41 smalcom Цитатакерамический резонатор 0.9..3.0 МГц
не, при ... Apr 14 2008, 16:34 galjoen Цитата(smalcom @ Apr 14 2008, 20:34) не, ... Apr 14 2008, 16:55 smalcom Цитата"но после прошивки почемуто WDTON читае... Apr 15 2008, 03:56 Igor26 Цитатав регистре XDIV
Его нет в Меге128.
Цитатаплю... Apr 15 2008, 04:00 Rst7 ЦитатаЕго нет в Меге128.
Как это нет? А по адресу... Apr 15 2008, 04:47 Igor26 ЦитатаА по адресу 0x3C(0x5C) что находится?
Чёй-то... Apr 15 2008, 06:57 vmp Вы уверены, что конденсаторы на кварце стоят прави... Apr 15 2008, 07:11 Serj78 Цитата(vmp @ Apr 15 2008, 11:11) Вы увере... Apr 15 2008, 07:51 Rst7 ЦитатаЧёй-то не нашел в ДШ. Ткните носом.
Вот дер... Apr 15 2008, 07:57 Igor26 ЦитатаSystem Clock and Clock Options -> Timer/C... Apr 15 2008, 09:23 GDI Можно попробовать поменять контроллеры у старой и ... Apr 15 2008, 09:31 smalcom вопщем пропаял еще раз мегу, промыл спиртом, замен... Apr 15 2008, 10:41 defunct Иногда может повлиять толщина и материал дорожек.
... Apr 15 2008, 10:45 smalcom сдается мне, что полтергейст зажат в узкий круг. в... Apr 15 2008, 14:34 smalcom чота с плюсами лажа какаето Apr 15 2008, 20:08 ReAl Цитата(smalcom @ Apr 15 2008, 23:08) чота... Apr 16 2008, 06:29  Mozart вообще может быть из-за ресета по снижению напряже... Apr 17 2008, 19:06   Dog Pawlowa Цитата(Mozart @ Apr 17 2008, 22:06) вообщ... Apr 17 2008, 19:54    Mozart Цитата(Dog Pawlowa @ Apr 17 2008, 23:54) ... Apr 17 2008, 20:33     Dog Pawlowa Цитата(Mozart @ Apr 17 2008, 23:33) это к... Apr 18 2008, 06:40      Mozart Цитата(Dog Pawlowa @ Apr 18 2008, 10:40) ... Apr 18 2008, 16:00      Laserr Цитата(Dog Pawlowa @ Apr 18 2008, 10:40) ... Apr 18 2008, 16:22      VladimirYU Цитата(Dog Pawlowa @ Apr 18 2008, 10:40) ... Apr 19 2008, 08:29 Yura_K Было такое же на ATmega8535. Правда стоял на плате... Apr 18 2008, 17:06 smalcom да, кстати, проблема была в том, что прогу скомпил... Apr 24 2008, 17:15 ReAl Цитата(smalcom @ Apr 24 2008, 20:15) да, ... Apr 26 2008, 14:55 Flasher Могу рассказать в чем секрет зависания устройства.... Apr 25 2008, 21:08 dx40 Цитата(Flasher @ Apr 26 2008, 01:08) Могу... Apr 28 2008, 06:52 Сергей Борщ Цитата(Flasher @ Apr 26 2008, 00:08) на к... Apr 28 2008, 07:58 =AK= Цитата(Flasher @ Apr 26 2008, 06:38) Это ... May 2 2008, 13:02  Flasher Цитата(=AK= @ May 2 2008, 16:02) Хм... А ... May 2 2008, 13:23   =AK= Цитата(Flasher @ May 2 2008, 22:53) дальш... May 2 2008, 13:35    Flasher Цитата(=AK= @ May 2 2008, 16:35) Да. Пож... May 2 2008, 14:10     =AK= Цитата(Flasher @ May 2 2008, 23:40) Продо... May 3 2008, 03:38 Samsony Цитата(smalcom @ Apr 14 2008, 17:27) Набл... Apr 26 2008, 19:30 smalcom старый набор avrtools и новый генерят разный код, ... Apr 26 2008, 22:03 Igor26 ЦитатаЭто компьютерный блок питания.
Интересно зна... Apr 28 2008, 06:41 Flasher Цитата(Igor26 @ Apr 28 2008, 09:41) Интер... Apr 28 2008, 11:59  ReAl Цитата(Сергей Борщ @ Apr 28 2008, 10:58) ... Apr 29 2008, 17:18 Nanobyte Блоки питания от ПК разные бывают. Есть у меня оди... Apr 28 2008, 07:12 Igor26 Прикола ради, замерил прям щас напряжение между ко... Apr 28 2008, 11:42 smalcom на БП пульсациии я мерял - 50мВ при частое 50Гц+мн... Apr 30 2008, 09:19 Flasher Цитата(smalcom @ Apr 30 2008, 12:19) на Б... Apr 30 2008, 15:41 smalcom Если комуто вдруг интересно будет(тк как в асме я ... Apr 30 2008, 11:07 aesok Цитата(smalcom @ Apr 30 2008, 15:07) Если... Apr 30 2008, 16:28 aesok Цитата(smalcom @ Apr 30 2008, 15:07) Если... May 3 2008, 07:18  aesok Цитата(aesok @ May 3 2008, 11:18) Тоесть,... May 3 2008, 10:55 Igor26 ЦитатаВы, наверное, не трогаете ножки кварца на ма... Apr 30 2008, 16:31 Flasher Цитата(Igor26 @ Apr 30 2008, 19:31) Нет к... Apr 30 2008, 16:42 smalcom 2Flasher
ЦитатаИзмерял-правильное слово
Или школьн... May 1 2008, 05:08 Flasher Приношу свои извинения автору- благодаря "пра... May 1 2008, 14:38 svl Автору темы, для решения вопроса, следует выложить... May 1 2008, 15:01 smalcom 2Flasher, я действительно неправ с пунктуацией в п... May 1 2008, 22:05 Flasher Цитата(smalcom @ May 2 2008, 01:05) схема... May 2 2008, 11:18 Stanislav_S Цитата(smalcom @ May 2 2008, 03:05) 2Flas... May 2 2008, 13:28  GrayCat Цитата(Stanislav_S @ May 2 2008, 16:28) О... May 2 2008, 21:33 svl Попробуй подключить к схеме аккумулятор или крону,... May 2 2008, 07:56 smalcom По поводу транзистора в 485 тута уже объяснили)) т... May 3 2008, 05:11 =AK= Цитата(smalcom @ May 3 2008, 14:41) HC245... May 3 2008, 08:03 gte Цитата(smalcom @ May 3 2008, 09:11) Я: ше... May 3 2008, 09:56 forever failure Подтяжки драйвера RS-485, кстати тоже неправильно ... May 3 2008, 08:13 =AK= Цитата(forever failure @ May 3 2008, 17:4... May 3 2008, 08:43 smalcom 2aesok, МЕГАСЕНК. как думаете в мейллист команде г... May 3 2008, 19:34 aesok Цитата(smalcom @ May 3 2008, 23:34) 2aeso... May 3 2008, 21:15  defunct Цитата(aesok @ May 4 2008, 00:15) нет не ... May 3 2008, 21:17   aesok Цитата(defunct @ May 4 2008, 01:17) А это... May 3 2008, 21:31    defunct Цитата(aesok @ May 4 2008, 00:31) Нет, то... May 3 2008, 22:18 sensor_ua ЦитатаОбъясните, почему, собственно, на входе UART... May 3 2008, 22:03 =AK= Цитата(sensor_ua @ May 4 2008, 07:33) Что... May 4 2008, 00:41 smalcom 47k недают покоя)) вы же учитывайте что на линии н... May 4 2008, 06:49 =AK= Цитата(smalcom @ May 4 2008, 16:19) чтобы... May 4 2008, 07:14      galjoen Цитата(=AK= @ May 5 2008, 10:22) - Помеха... May 5 2008, 09:26       =AK= Цитата(galjoen @ May 5 2008, 18:56) Для т... May 5 2008, 09:39        galjoen Цитата(=AK= @ May 5 2008, 13:39) Это буде... May 5 2008, 10:15      defunct Цитата(=AK= @ May 5 2008, 09:22) Если пер... May 11 2008, 23:23 smalcom ЦитатаЗамените хотя бы ISO2 на обычный транзисторн... May 4 2008, 17:21 smalcom ЦитатаЧто такое "Заголовок"?
байт(0xAB),... May 5 2008, 08:20 Rst7 ЦитатаОднако по затратам времени два байта преамбу... May 5 2008, 09:53 =AK= Цитата(Rst7 @ May 5 2008, 19:23) Есть одн... May 6 2008, 04:28
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|