Странное поведение контроллера

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 3
Зарегистрирован: Чт сен 22, 2016 07:38:40

Сообщение 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. Питание от лабораторного БП

Больше всего смущает, что после прогрева, все начинает работать в штатном режиме
Реклама
Vi7
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Пн авг 09, 2010 19:14:00
Откуда: Горловка

Сообщение Vi7 »

Скорее всего где то бракованное переходное отверстие, либо непропай.
Решительный шаг вперёд - есть результат хорошего пинка сзади.
Реклама
Родился
Сообщения: 3
Зарегистрирован: Чт сен 22, 2016 07:38:40

Сообщение ieremeev »

Vi7 писал(а):Скорее всего где то бракованное переходное отверстие, либо непропай.
Есть в наличии 4 печатные платы для этого устройства. Было проверено на двух, ведет себя одинаково.
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

А откуда был взят загрузчик?
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 3
Зарегистрирован: Чт сен 22, 2016 07:38:40

Сообщение ieremeev »

Vov123 писал(а):А откуда был взят загрузчик?

Стандартный Arduino Leonardo
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Так всё-таки откуда "Стандартный Arduino Leonardo"? С IDE или где-то есть другой стандарт?
Реклама
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Сообщение Rtmip »

ieremeev, может попробовать отпаять ВСЕ конденсаторы, особенно СМД, промыть плату, затем припаять новые с нейтральным флюсом?
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

Вот такая проблема: написал программу для atmega8, на протеусе 8.4 все работает, но проблема в работе таймеров... использую прерывания таймеров 0 и 1, 0-й - для динамической индикации, 1-й для счета времени, при чем если меняю делитель 0-го таймера (для динамической индикации),то и меняется частота хода часов... по отладчику смотрел, что счет секунд в подрограмме прерывания 0-го таймера не идет, может проблема в протеусе? или есть какая-то завязка 0 и 1-го таймера? я что-то про такую завязку нигде ничего не нашел...может кто сталкивался? :shock:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Леонид_М писал(а):Вот такая проблема: написал программу для atmega8
исправляйте ошибки в программе
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

все, похоже понял, в чем проблема... это протеус оказывается считает не в реальном времени (не доглядел)... у него внизу идет отсчет реального (с точки зрения работы программы, согласно циклам), который не совпадает с реальным... т.е. при отладке у него секунда работы контроллера может растянуться на 2-5 секунд... буду искать настрйки, где можно получить изображение на индикаторе часов именно в реальном времени...
все, спасибо, вопрос закрыт.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Имеется проблема следующего рода: МК ATmega8A, на котором собран регулятор скорости двигателя постоянного тока. Управление двигателем осуществляется при помощи ПИД-регулятора.
Сам ПИД регулятор опробован давно и не один раз, на него нареканий нет. Просто в данной прошивке введены различные флаги ограничений, и у меня происходит следующее - при старте измеряется напряжение питания, если оно в норме - старт разрешен. Далее происходит запуск мотора, но! в процессе работы он не систематически уходит в перезапуск и понять причину мне пока не удается. Пробовал отлавливать флаги регистра MCUCSR, но ни один из них не выставляется, хотя уже включил и BODEN.
То что происходит reset - точно, т.к. тестовая пауза с индикаторным светодиодом на старте об этом сигнализирует. Стек? В proteus между записанными ячейками оперативки процентов 80 памяти. Куда копать? Подскажите пожалуйста.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение 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.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

MCUSR считывать нужно как можно раньше в программе, в идеале после метки reset.
Ставим плюсы: )
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Я считывал сразу после настройки стека и портов ввода-вывода. Мне же нужно было засветить светодиод при появлении флага.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение 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.
Ставим плюсы: )
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Спасибо большое, я добился появления нужного значения. Стал считывать регистр в ОЗУ сразу после сброса до записи стека и выловил-таки причину сбоя. Им оказался вывод RESET. Возможно у меня на плате там наводится помеха.

Добавлено after 2 hours 10 minutes 14 seconds:
Выяснил и причину сбоя... Длинная земля до фильтрующего конденсатора. Дорожка около 5 см. В то же время положительный вывод подпаян практически вплотную к конденсатору. Самонадеянность... Придется плату переразводить. Регулятор предназначается в печку авто, а там тряска и прочие прелести. А конденсатор на соплях помехоподавляющий это убогость.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Ответить

Вернуться в «AVR»