Перейти к содержанию

Проблемы С Работой Uart


RVL

Рекомендуемые сообщения

Доброго времени суток!

Исходное:

ATmega16L подключен к ком-порту через MAX232CPE.

Командами из компа управляем ногами контроллера, которые (через транзистор+реле) включают/отключают нагрузку (электродвигатели 12в*4А).

Все это питается от того же блока питания, что и компьютер.

В какие-то моменты времени в момент включения нагрузки комп начинает получать в ответ на команды информацию, что контроллер не разобрал команду (скорость 9600, кабель короткий). Также, комп может получать какие-то левые байтики на ком-порт. А иногда, контроллер вообще выполняет принятую команду с неверным параметром!

Предположения:

- max232cpe начинает "гнать лажу" в одну/обе сторону(ы) из-за колебаний питания;

- мк виснет (глючит) после колебаний питания;

Хотя оба предположения странные - вроде компьютерный блок питания ATX (350W) обеспечивает достаточный ток! Да и комп ведь при этом не виснет!

Может кто сталкивался с проблемами режимов питания мк AVR или max232?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Все эти вещи вполне нормальны. С этим следует бороться с помощью протокола. То есть формируется посылка, маркёр начала, длина, тело, контрольная сумма, маркёр конца. По контрольной сумме определяется правильность посылки и принимаются соответствующие действия.

Найдите описание какого либо протокола и почитайте, например Modbus.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Нет. Не нормальны. Я ведь скалаз "иногда".

Выглядит так:

1. сначала долгое время все нормально.

2. в какой-то момент контроллер начинает всякий раз добавлять к своему нормальному ответу мусорный (-ные) байт(ы). И так, пока не "передергну" питание всей платы с контроллером.

3. После передергивания питания контроллера все становится опять просто замечательно (переходим к п.1).

Так что в протоколе здесь ошибок нет. Кроме того, мк имеет парсер команды. И если что-то пришло неправильно, он в ответ выдаст "ERRRO", иначе "ОК".

Но ведь он выполняет команды при этом, но неправильно (ощущение, что параметр команды неправилен).

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А можете показать фото устройства? У вас похоже серьёзные проблемы с фильтрацией сигнала и питания...Всегда когда надо включать и выключать нагрузку более чем 2А надо принимать меры о гащении помех в питании...

Ссылка на комментарий
Поделиться на другие сайты

При вкл/выкл релюшек тоже могут возникать помехи в питании, на которые, может быть, и обижается Ваш МК...

Обмотки релюшек питаются от +24в.

С мк 4 выхода подключены к дешифратору (ИД3), а о дешифратора к инфертору. От инвертора идет на транзисторный ключ, который включает/отключает обмотку реле (с параллельно включенным диодом в обратку).

Ссылка на комментарий
Поделиться на другие сайты

Я бы начал с проверки MAX232.

У меня с ней тоже были глюки. Только я юзал MAX232N и скорость была 115кб/с. При ~3.5В питании оно работало, при 5В - байт нормально, байт бреда...

Ссылка на комментарий
Поделиться на другие сайты

Появилось новое подозрение на источник проблемы:

Дело в том, что 4 выхода с мк подключены на вход дешифратора (аналог ИД3). А все его выходы (а они инверторные) подключены на входы инверторов.

Так вот что получается: пусть в какой-то момент времени дергается питание. И этого хватает, чтобы отключился дешифратор. Когда отключается дешифратор, инверторы на вход получают лог.0 (поскольку вход болтается в воздухе), а на своих выходах выдают лог.1. Это открывает транзисторные ключи (одновременно все!) и включает одновременно все релюшки и нагрузку. Естественно, что это уже перебор.

Выход: все выходы дешифратора подтянуть к +5в через, например, 22к.

Может быть такое???

Изменено пользователем RVL
Ссылка на комментарий
Поделиться на другие сайты

Последнее легко проверить отключив дешифратор вовсе. Мое мнение совпадает с мнением mazzi - ваш протокол не умеет или не корректно обробатывает ошибки.

Ссылка на комментарий
Поделиться на другие сайты

Да протокол явно непричем. Если бы его глючило - глючило бы постоянно.

Скорее всего глюки железа, и стоит попробовать, как сказал Станислав, отключить дешифратор...

Изменено пользователем Zenner
Ссылка на комментарий
Поделиться на другие сайты

Протокол сейчас правлю. До этого вообще не было контроля целостности управляющей строки.

Проводилась только сравнение с шаблоном команды, а также проверка, что параметры укладываются в диапазон.

Т.е. проверки по сути не было.

Сейчас добавляю CRC16 для проверки, что команда и ее параметры пришли такими, как их отправлял компьютер.

Отключить дешифратор не получится. Мы останемся только с контроллером. Нагрузка отключится вместе с дешифратором.

А так все это у меня собрано на макетке (только мк, max, светодиоды заместо нагрузки и кнопки заместо датчиков).

На макетке все работает как надо. Протокол работает без ошибок.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

трабла очевидна. На релюшках нету диодов в обратном направлении. Это раз. Дальше ключем проблемы является вот эта строчка:

Все это питается от того же блока питания, что и компьютер.

Что сделать:

1) поставить в обратном направлении шунтирующие диоды на реле (обмотка реле)

2) поставить подтяжку на + ресет

3) поставить дроссель по плюсу и конденсатор более чем 470мкф хотя бы.

у меня была довольно таки итересная ситуация: авр 910 сделал, и подключил на выход через транзистор маленькое реле 5В , все это питалось от юсб. Релюшка жрет отсилы 10ма. Так вот иногда в момент включения/выключения реле комп просто зависал и отрубался очень жостко! очень неприятно это было... все это закончилось когда на реле поставил диод. в момент выключения реле на обмотках возникает довольно таки большой отрицательный импульс которого у меня хватало чтобы комп отрубился. У вас же изза этого мк пропускает пару тактов или подвисает или еще хз что с ним происходит. Что сделать я уже написал. Напишите результат

чем шире кругозор, тем тупее угол обозрения

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...