реклама на сайте
подробности

 
 
> Зависание микроконтроллера, ATMega 128
smalcom
сообщение Apr 14 2008, 13:27
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Наблюдается следующая картина: казалось бы без всяких причин виснет контроллер, если дотронуться металическим предметом до ножек кварца, то или пускается дальше или уходит в перезагрузку, или сделает еще пару шагов и опять виснет. Выводит его из такого состояния только кнопка резет или сброс питания.
контроллер - ATMega128-16AU. Программа раньше работала, проблеиы появились только в текущем месяце на новых устройствах. Не знаю на кого грешить((

PS. менял кварц - непомогло
PPS. частота - 14.7456МГц

Сообщение отредактировал smalcom - Apr 14 2008, 13:30
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GrayCat
сообщение May 4 2008, 14:41
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 4 2008, 23:13
Сообщение #3


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 байт-интервалов.
- Гарантия малых пауз между соседними байтами в пакете. Если приемник видит большую паузу между байтами, текущий пакет немедленно выбрасывается как ложный, а приемник мгновенно приводится в состояние готовности к приему нового пакета.

При этом ложные помеховые пакеты, прием которых начался в паузе между настоящими пакетами, будут выброшены за время паузы в начале настоящего пакета. Соответственно, помеха не в состоянии испортить пакет данных, вне зависимости от наличия или отсутствия подтяжек.
Go to the top of the page
 
+Quote Post
defunct
сообщение May 5 2008, 02:35
Сообщение #4


кекс
******

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



Цитата(=AK= @ May 5 2008, 02:13) *
При этом ложные помеховые пакеты, прием которых начался в паузе между настоящими пакетами, будут выброшены за время паузы в начале настоящего пакета. Соответственно, помеха не в состоянии испортить пакет данных, вне зависимости от наличия или отсутствия подтяжек.

Есть более простой способ решающий эту проблему - байт стаффинг.
Никаких задержек и никаких лишних включений "перед отправкой пакета" не потребуется. Не потребуется также отмерять точные интервалы.
Проигрываем в объеме передаваемых данных, но раз используются скорости 19200 предположу, что трафик в сети невелик, а значит применить байт стаффинг можно.

Цитата
по протоколу. протокол у меня простой:
Заголовок
Адресат
Команда
Данные постоянной длины
CRC16

Что такое "Заголовок"?
Если его выбросить то формат у вас совпадает с modbus rtu. Когда "Адресат" идет первым, то по первому же байту можно определить предназначен ли этот пакет конкретному устройству или нет и вести предварительную отбраковку еще в прерывании.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 5 2008, 03:00
Сообщение #5


pontificator
******

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



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

Нет, не работает. В ситуации, когда помеха запускает UART ложным старт-битом незадолго до байта заголовка (soh), ваш пакет бyдет испорчен, поскольку заголовочный байт не будет принят. Значит, при определенном уровне помех, когда ложный запуск происходит часто, связи вообще не будет, все пакеты бyдут испорчены. Правильный протокол в этой ситуации будет работать как ни в чем не бывало.
Go to the top of the page
 
+Quote Post
defunct
сообщение May 5 2008, 03:54
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 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 пакет).
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 5 2008, 06:22
Сообщение #7


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 байт-интервала. Что же касается накладных расходов, то ваши затраты на парсенье эскэйп-последовательностей выглядят не меньшими, чем затраты на проверку тайм-аутов между байтами. Разница в основном в том, что вы парсите софтом, а тайм-ауты проверяются в основном железом (таймером). Поэтому вам нужно меньше таймеров, но более производительный проц. В принципе шило на мыло, примерно тож на тож получится.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 страниц V   1 2 >


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01528 секунд с 7
ELECTRONIX ©2004-2016