Без описания |
Поиск в теме | Версия для печати |
Vlad_sem |
Отправлено: 02 Февраля, 2018 - 16:37:50
|

Главнокомандующий

Сообщений всего: 233
Дата рег-ции: Май 2009
|
Появилась небольшая темка для обсуждения.
Сразу хочется сказать, что слово "зависание" использовано образно, т.к. описанная проблема не выводит из строя МК, который после этого можно запустить только ребутом.
Имеется:
1. Плата-хост (Atmega164 8 MHz от внутреннего генератора, USART0->ESP-12F, USART1->cp2102->ПК).
2. Плата-клиент (Atmega8 8 MHz от внутреннего генератора, USART->ESP-12F, два сдвиговых регистра hc595->uln2803).
3. Управляемая нагрузка, подключаемая к плате-клиенту (~150mA на канал uln2803).
Работа:
1. Клиент подключается к хосту.
2. Хост начинает слать пакеты приемнику с байтами для сдвиговых регистров.
3. Клиент получает пакет, парсит, расшифровывает. Если есть изменения, то записывает байты в сдвиговые регистры.
4. Если передача прекращается, приемник шлёт байт со своим id приемнику раз в две секунды, "заявляя о своём присутствии".
Как получить проблему?
1. Начинаем передачу в холостую (коннекторы нагрузки не подсоединены к плате-клиенту, данные на сдвиговых регистрах: 0x00).
2. Подключаем единицу нагрузки к свободному выходу uln2803.
3. Меняем отправляемые данные командой с ПК на 0xFF ("активируем" все выходы uln2803),
видим, что нагрузка включается.
4. Меняем отправляемые данные командой с ПК на 0x00 ("деактивируем" все выходы uln2803),
видим, что нагрузка отключается.
Пока все хорошо.
5. Подключаем еще 3 единицы нагрузки к свободным выходам uln2803.
6. Меняем отправляемые данные командой с ПК на 0xFF ("активируем" все выходы uln2803),
видим, что нагрузка включается.
7. Меняем отправляемые данные командой с ПК на 0x00 ("деактивируем" все выходы uln2803), видим, что нагрузка не отключается.
Детали:
1. Плата-хост к проблеме отношения не имеет, т.к. исправно шлёт данные (видно логическим анализатором).
2. Плата-клиент:
-ESP-12F принимает данные исправно (видно логическим анализатором);
-прерывания работают (мигает светодиод 1 раз в секунду);
-функция приема данных с ESP-12F частично работает, т.к. если нет данных в течение 2 секунд, регистры сбрасываются в 0x00.
Очевидно, что проблема вызвана падением напряжения из-за нагрузки. Падение напряжения в свою очередь вызывает проблемы с тактированием МК, что влечет за собой "заторможенность тактирования", что в свою очередь влияет на правильный прием данных от ESP-12F.
Проблема в данной ситуации решается подбором настроек скорости USART`а на плате-клиенте, чтобы скорость была примерно похожа на нужную при падении напряжения и без него. Но это не дело. Решит ли эту проблему установка внешнего кварца?
При этом напряжение при 50% нагрузки остается в районе 3.28V, а на холостом ходу 3.48V Прикреплено изображение
(Отредактировано автором: 02 Февраля, 2018 - 17:43:16) |
|
|
Vlad_sem |
Отправлено: 03 Февраля, 2018 - 00:46:14
|

Главнокомандующий

Сообщений всего: 233
Дата рег-ции: Май 2009
|
Группа Инженеров пишет:Не специалист по атмелам, но...
Импульс по питанию может привести к генерации сброса.
Если нет возможности запитать нагрузку от другого источника, попробуйте поставить RC или LC фильтр в цепь питания (и сброса) микроконтроллера. Ну, скажем 10Ом 220мкФ или 100мкГн 220мкФ.
Нет, причина не в импульсе. Несколько раз сталкивался с подобным. В таком случае МК просто намертво зависает, а тут, если нагрузку отключить, то все снова становится нормально и данные принимаются нормально.
Просаживается частота, сохраняя полную работоспособность МК, но понижение частоты влечет понижение скорости UART`a, а значит хоть МК и принимает данные от ESP, но принимает мусор. Вопрос вот в чем: почему так? Вроде нет выхода за пределы допустимого напряжения.
(Добавление)
Группа Инженеров пишет:Но, импульс по питанию может привести к установке какого-нибудь флага в каком-нибудь модуле, например тактирования или даже генерации сброса.
Я тоже думал об этом, но тогда МК остался бы неработоспособным при отключении нагрузки.(Отредактировано автором: 03 Февраля, 2018 - 00:52:07) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
« Микроконтроллеры » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
  |
|
|
|