Страница 1 из 1
Странное поведение контроллера
Добавлено: Чт сен 22, 2016 07:40:23
ieremeev
Всем привет! Уже который день не можем разобраться с проблемой, очень странного поведения контроллера Atmega32u4.
Есть плата, на ней установлен микроконтроллер Atmega32u4 и несколько драйверов двигателей VNH3sp30. Схемотехника вся стандартная, обвязка микроконтроллера взята с сайта Arduino из игловских файлов, схемотехника драйверов из даташита.
Суть проблемы:
1. Заливаю в плату загрузчик Arduino Leonardo
2. Заливаю свою программу, не важно какую, это может быть и Blink
3. Все хорошо работает, в диспетчере устройств плата определяется как Arduino Leonardo
4. Через какое то время (можно даже плату не трогать, будет лежать на столе) плата начинает отваливаться от USB и вместо Arduino Leonardo появляется Arduino Leonardo Bootloader и меняется номер порта
5. Палат постоянно в перезагрузке, о чем свидетельствует светодиод на 13 пину, который постоянно нам об этом говорит.
6. Берем фен, греем немного чип
7. Втыкаем в USB
8. Опять все отлично работает.
По времени этот процесс всегда разный, может случиться почти сразу, бывало что работало несколько дней.
Еще инфа:
1. Есть подобные платы, с другой схемотехникой (обвязка у чипа вся та же) и другим назначением, они работают отлично.
Чипы из одной партии, и на этих и на тех контроллерах
2. Паяется все с антистатическим браслетах, на антистатическом коврике
3. Питание от лабораторного БП
Больше всего смущает, что после прогрева, все начинает работать в штатном режиме
Re: Странное поведение контроллера
Добавлено: Чт сен 22, 2016 08:35:30
Vi7
Скорее всего где то бракованное переходное отверстие, либо непропай.
Re: Странное поведение контроллера
Добавлено: Чт сен 22, 2016 09:11:05
ieremeev
Vi7 писал(а):Скорее всего где то бракованное переходное отверстие, либо непропай.
Есть в наличии 4 печатные платы для этого устройства. Было проверено на двух, ведет себя одинаково.
Re: Странное поведение контроллера
Добавлено: Чт сен 22, 2016 10:42:57
Vov123
А откуда был взят загрузчик?
Re: Странное поведение контроллера
Добавлено: Чт сен 22, 2016 12:15:56
ieremeev
Vov123 писал(а):А откуда был взят загрузчик?
Стандартный Arduino Leonardo
Re: Странное поведение контроллера
Добавлено: Чт сен 22, 2016 12:20:17
Vov123
Так всё-таки откуда "Стандартный Arduino Leonardo"? С IDE или где-то есть другой стандарт?
Re: Странное поведение контроллера
Добавлено: Пт сен 23, 2016 12:22:40
Rtmip
ieremeev, может попробовать отпаять ВСЕ конденсаторы, особенно СМД, промыть плату, затем припаять новые с нейтральным флюсом?
Re: Странное поведение контроллера
Добавлено: Пн окт 03, 2016 10:19:39
Леонид_М
Вот такая проблема: написал программу для atmega8, на протеусе 8.4 все работает, но проблема в работе таймеров... использую прерывания таймеров 0 и 1, 0-й - для динамической индикации, 1-й для счета времени, при чем если меняю делитель 0-го таймера (для динамической индикации),то и меняется частота хода часов... по отладчику смотрел, что счет секунд в подрограмме прерывания 0-го таймера не идет, может проблема в протеусе? или есть какая-то завязка 0 и 1-го таймера? я что-то про такую завязку нигде ничего не нашел...может кто сталкивался?

Re: Странное поведение контроллера
Добавлено: Пн окт 03, 2016 10:48:37
ARV
Леонид_М писал(а):Вот такая проблема: написал программу для atmega8
исправляйте ошибки в программе
Re: Странное поведение контроллера
Добавлено: Пн окт 03, 2016 11:44:20
Леонид_М
все, похоже понял, в чем проблема... это протеус оказывается считает не в реальном времени (не доглядел)... у него внизу идет отсчет реального (с точки зрения работы программы, согласно циклам), который не совпадает с реальным... т.е. при отладке у него секунда работы контроллера может растянуться на 2-5 секунд... буду искать настрйки, где можно получить изображение на индикаторе часов именно в реальном времени...
все, спасибо, вопрос закрыт.
Re: Странное поведение контроллера
Добавлено: Вс окт 09, 2016 21:38:43
dr.doc
Имеется проблема следующего рода: МК ATmega8A, на котором собран регулятор скорости двигателя постоянного тока. Управление двигателем осуществляется при помощи ПИД-регулятора.
Сам ПИД регулятор опробован давно и не один раз, на него нареканий нет. Просто в данной прошивке введены различные флаги ограничений, и у меня происходит следующее - при старте измеряется напряжение питания, если оно в норме - старт разрешен. Далее происходит запуск мотора, но! в процессе работы он не систематически уходит в перезапуск и понять причину мне пока не удается. Пробовал отлавливать флаги регистра MCUCSR, но ни один из них не выставляется, хотя уже включил и BODEN.
То что происходит reset - точно, т.к. тестовая пауза с индикаторным светодиодом на старте об этом сигнализирует. Стек? В proteus между записанными ячейками оперативки процентов 80 памяти. Куда копать? Подскажите пожалуйста.
Re: Странное поведение контроллера
Добавлено: Пн окт 10, 2016 18:17:02
dr.doc
Ну вот я и установил причину своих проблем - импульсные помехи от силовых цепей. Написал я прошивку в которой ввел предстартовую паузу на 10 секунд (индицируется светодиодом), после чего тупо вывел меандр на затвор силового ключа. Так вот при резком изменении нагрузки на вал двигателя контроллер перезапускается, о чем сигнализирует зажигание светодиода.
А вот вопрос все-таки остался, может я не правильно понимаю участок datasheet? Вот что написано: MCU Control and Status Register – MCUCSR - The MCU Control and Status Register provides information on which reset source caused an MCU Reset. Bit 1 – EXTRF: External Reset Flag. This bit is set if an External Reset occurs. The bit is reset by a Power-on Reset, or by writing a logic zero to the flag.
Проверяю состояние бита 1, а оно всегда равно нулю, даже когда я перезапускаю выводом reset. Может я что не так делаю? Контроллер ATmega8.
Re: Странное поведение контроллера
Добавлено: Пн окт 10, 2016 18:59:41
ibiza11
MCUSR считывать нужно как можно раньше в программе, в идеале после метки reset.
Re: Странное поведение контроллера
Добавлено: Пн окт 10, 2016 19:06:54
dr.doc
Я считывал сразу после настройки стека и портов ввода-вывода. Мне же нужно было засветить светодиод при появлении флага.
Re: Странное поведение контроллера
Добавлено: Пн окт 10, 2016 19:25:57
ibiza11
а сбрасываете?
To make use of the Reset Flags to identify a reset condition, the user should read and then reset
the MCUCSR as early as possible in the program.
Re: Странное поведение контроллера
Добавлено: Пн окт 10, 2016 21:45:21
dr.doc
Спасибо большое, я добился появления нужного значения. Стал считывать регистр в ОЗУ сразу после сброса до записи стека и выловил-таки причину сбоя. Им оказался вывод RESET. Возможно у меня на плате там наводится помеха.
Добавлено after 2 hours 10 minutes 14 seconds:
Выяснил и причину сбоя... Длинная земля до фильтрующего конденсатора. Дорожка около 5 см. В то же время положительный вывод подпаян практически вплотную к конденсатору. Самонадеянность... Придется плату переразводить. Регулятор предназначается в печку авто, а там тряска и прочие прелести. А конденсатор на соплях помехоподавляющий это убогость.