Зарегистрирован: Пт мар 17, 2017 19:43:25 Сообщений: 130 Откуда: Москва
Рейтинг сообщения:0
тинька 44А
возникают странные "приколы":
например:
если у меня есть обработчик прерывания, в нем работает АЦП и я хочу его синхронизировать с ШИМ, для сего хочу считывать TCNT и в момент перехода через 0 запускать АЦП ..
и все бы хорошо. но! как только запрещаются прерывания ( это я уже проверял вне обработчика прерывания .. а при входе в обработчик, прерывания автоматически запрещаются) - то условие отлова перехода счетчика таймера через ноль - зависает намертво ((((
Зарегистрирован: Пт мар 17, 2017 19:43:25 Сообщений: 130 Откуда: Москва
Рейтинг сообщения:0
Аlex писал(а):
Классический ответ на подобное сообщение : "проблема в 28-ой строке кода".
код уж очень длинный ...
т.е. есть укоротить максимально - почему нормально не читается счетчик таймера (8бит), при запрете глобально прерываний ? ( может я чего упустил )
Добавлено after 13 minutes 54 seconds: поясню - вопрос в возможных особенностях ... ( в коде ошибок не вижу - но рыть или не рыть дальше )
я вот натыкался - в этом же:
при переключении канала АЦП с обычного на дифференциалку, первое преобразование дает почему то чушь .. ломать голову не стал и сделал просто одно холостое преобразование ..
вот быть может и тут есть какие то тонкости, и если кто сталкивался .. какая то связь между считыванием TCNT флагом I.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
...при переключении канала АЦП с обычного на дифференциалку, первое преобразование дает почему то чушь...
Цитата:
ADC Voltage Reference The reference voltage for the ADC (V REF ) indicates the conversion range for the ADC. Single ended channels that exceed V REF will result in codes close to 0x3FF. V REF can be selected as either V CC , or internal 1.1V reference, or external AREF pin. The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.
lDrakon писал(а):
...при входе в обработчик, прерывания автоматически запрещаются) - то условие отлова перехода счетчика таймера через ноль - зависает намертво...
Зашли в обработчик прерывания - ждем условие,т.е. флага отлова (отлов в теле) - всё, ступор.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
если у меня есть обработчик прерывания, в нем работает АЦП и я хочу его синхронизировать с ШИМ, для сего хочу считывать TCNT и в момент перехода через 0 запускать АЦП ..
Написано на тарабарском языке. Лично я ничего не понял. Опишите алгоритм более общим образом. Скорее всего, что порочен сам МЕТОД реализации.
Зарегистрирован: Пт мар 17, 2017 19:43:25 Сообщений: 130 Откуда: Москва
Рейтинг сообщения:0
ARV писал(а):
lDrakon писал(а):
в коде ошибок не вижу
я тоже не вижу. кода.
не в упрек будь сказано ув. модератору: такие темы надо закрывать с пометкой "учитесь правильно задавать вопросы".
какой вы резкий прям ...
говорят же код длинные и на алгоритмике писан и ?
Добавлено after 2 minutes 21 second:
pyzhman писал(а):
lDrakon писал(а):
...при переключении канала АЦП с обычного на дифференциалку, первое преобразование дает почему то чушь...
Цитата:
ADC Voltage Reference The reference voltage for the ADC (V REF ) indicates the conversion range for the ADC. Single ended channels that exceed V REF will result in codes close to 0x3FF. V REF can be selected as either V CC , or internal 1.1V reference, or external AREF pin. The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.
lDrakon писал(а):
...при входе в обработчик, прерывания автоматически запрещаются) - то условие отлова перехода счетчика таймера через ноль - зависает намертво...
Зашли в обработчик прерывания - ждем условие,т.е. флага отлова (отлов в теле) - всё, ступор.
вы описали случай переключения референсного напряжения .. а речь не о нем, оно остается тем же ( внешнее )
в описаном случае - нету обработчика! обычный линейный участок кода, лишь перед условием проверки счетчика флаг глобальных прерываний ( разрешения их ) ставиться в ноль.
Добавлено after 4 minutes 5 seconds:
КРАМ писал(а):
lDrakon писал(а):
если у меня есть обработчик прерывания, в нем работает АЦП и я хочу его синхронизировать с ШИМ, для сего хочу считывать TCNT и в момент перехода через 0 запускать АЦП ..
Написано на тарабарском языке. Лично я ничего не понял. Опишите алгоритм более общим образом. Скорее всего, что порочен сам МЕТОД реализации.
я же сразу описал - что это часть длинной программы ...
конечно ловя косяки ты отключаешь все лишнее и оставляешь исполняться лишь данный кусок - работа внутри прерывания лишь предполагается, а сейчас это простой кусок кода где запускается АЦП в момент счетчика ШИМа перехода нуля ...
но так как, именно что будет в итоге внутри прерывания ( другого таймера ), то делаю запрет глобальных прерываний - и вот тут эта част кода садиться, и как выяснилось именно на моменте отлова прохождения нуля таймером ШИМа ...
в момент работы данного куска, единственно что еще работает это сам ШИМ и сторожевой таймер
ПС: хочется конечно поскромнее, но я тока зарегился тут и считают "новичек", но это не значит что контроллеры и программирование я увидел первый раз в жизни ... и вопрос именно в особенностях именно данного контролера ( возможных!)
я тока зарегился тут и считают "новичек", но это не значит что контроллеры и программирование я увидел первый раз в жизни ...
Набор слов, который Вы изрекаете, никак не связан с новизной Вашего пребывания тут. Пытаясь отделить проблему от задачи, да еще косноязычно до беспредела, Вы гарантируете отсутствие всякой помощи Вам... Увы.
Зарегистрирован: Пт мар 17, 2017 19:43:25 Сообщений: 130 Откуда: Москва
Рейтинг сообщения:0
все спасибо за помощь и добрые слова )))
да, надо просто делать перекуры ... а то начинаешь тупить на ровном месте (((
с таймером я упустил то, что сам то он тактируется без предделения, а сравнение конечно выполняется больше чем за один такт ... по сему оно просто не попадается в заданное значение и зациклывается ....
но быть может и вообще отказаться от этой синхронизации ...
оказалась проблема в другом - это оффсет на диффе гуляет +/- 1 ... - вот что делать с этим, уже вопрос ..
Зарегистрирован: Пт мар 17, 2017 19:43:25 Сообщений: 130 Откуда: Москва
Рейтинг сообщения:0
pyzhman писал(а):
lDrakon писал(а):
...а сравнение конечно выполняется больше чем за один такт ...
Сравнивать нужно не ==, а >.
можно да - но тогда точка старта АЦП возможно будет плавать ...
но уже может и не важно - оказалось, в целом - если отбросить плавание оффсета - то все в рамочках ..
а вот как с этим смещение быть - только если помнить прошлый результат и этот +/- 1 исключать ... ( а переменных и так не осталось, а использовать ОЗУ, лишний код, а и тут уже в притык )
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения