пару вопросов об Тини

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт мар 17, 2017 19:43:25
Откуда: Москва

Сообщение lDrakon »

тинька 44А

возникают странные "приколы":

например:

если у меня есть обработчик прерывания, в нем работает АЦП и я хочу его синхронизировать с ШИМ, для сего хочу считывать TCNT и в момент перехода через 0 запускать АЦП ..

и все бы хорошо. но! как только запрещаются прерывания ( это я уже проверял вне обработчика прерывания .. а при входе в обработчик, прерывания автоматически запрещаются) - то условие отлова перехода счетчика таймера через ноль - зависает намертво ((((

почему, не пойму ..
"не спеши, а то успеешь" (С)
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Классический ответ на подобное сообщение : "проблема в 28-ой строке кода".
Реклама
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт мар 17, 2017 19:43:25
Откуда: Москва

Сообщение lDrakon »

Аlex писал(а):Классический ответ на подобное сообщение : "проблема в 28-ой строке кода".

код уж очень длинный ...

т.е. есть укоротить максимально - почему нормально не читается счетчик таймера (8бит), при запрете глобально прерываний ? ( может я чего упустил )

Добавлено after 13 minutes 54 seconds:
поясню - вопрос в возможных особенностях ... ( в коде ошибок не вижу - но рыть или не рыть дальше )

я вот натыкался - в этом же:

при переключении канала АЦП с обычного на дифференциалку, первое преобразование дает почему то чушь .. ломать голову не стал и сделал просто одно холостое преобразование ..

вот быть может и тут есть какие то тонкости, и если кто сталкивался .. какая то связь между считыванием TCNT флагом I.
"не спеши, а то успеешь" (С)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

lDrakon писал(а):в коде ошибок не вижу
я тоже не вижу. кода.

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение 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 писал(а):...при входе в обработчик, прерывания автоматически запрещаются) - то условие отлова перехода счетчика таймера через ноль - зависает намертво...
Зашли в обработчик прерывания - ждем условие,т.е. флага отлова (отлов в теле) - всё, ступор.
Docendo discimus
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25560
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

lDrakon писал(а): если у меня есть обработчик прерывания, в нем работает АЦП и я хочу его синхронизировать с ШИМ, для сего хочу считывать TCNT и в момент перехода через 0 запускать АЦП ..
Написано на тарабарском языке.
Лично я ничего не понял.
Опишите алгоритм более общим образом.
Скорее всего, что порочен сам МЕТОД реализации.
Реклама
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт мар 17, 2017 19:43:25
Откуда: Москва

Сообщение lDrakon »

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 запускать АЦП ..
Написано на тарабарском языке.
Лично я ничего не понял.
Опишите алгоритм более общим образом.
Скорее всего, что порочен сам МЕТОД реализации.

я же сразу описал - что это часть длинной программы ...

конечно ловя косяки ты отключаешь все лишнее и оставляешь исполняться лишь данный кусок - работа внутри прерывания лишь предполагается, а сейчас это простой кусок кода где запускается АЦП в момент счетчика ШИМа перехода нуля ...

но так как, именно что будет в итоге внутри прерывания ( другого таймера ), то делаю запрет глобальных прерываний - и вот тут эта част кода садиться, и как выяснилось именно на моменте отлова прохождения нуля таймером ШИМа ...

в момент работы данного куска, единственно что еще работает это сам ШИМ и сторожевой таймер

ПС: хочется конечно поскромнее, но я тока зарегился тут и считают "новичек", но это не значит что контроллеры и программирование я увидел первый раз в жизни ... и вопрос именно в особенностях именно данного контролера ( возможных!)
"не спеши, а то успеешь" (С)
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

lDrakon писал(а):...и ?...
Минусую свой VangaLevel на 17 единиц.
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25560
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

lDrakon писал(а):я тока зарегился тут и считают "новичек", но это не значит что контроллеры и программирование я увидел первый раз в жизни ...
Набор слов, который Вы изрекаете, никак не связан с новизной Вашего пребывания тут.
Пытаясь отделить проблему от задачи, да еще косноязычно до беспредела, Вы гарантируете отсутствие всякой помощи Вам...
Увы.
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт мар 17, 2017 19:43:25
Откуда: Москва

Сообщение lDrakon »

все спасибо за помощь и добрые слова )))

да, надо просто делать перекуры ... а то начинаешь тупить на ровном месте (((

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

но быть может и вообще отказаться от этой синхронизации ...

оказалась проблема в другом - это оффсет на диффе гуляет +/- 1 ... - вот что делать с этим, уже вопрос ..
"не спеши, а то успеешь" (С)
Друг Кота
Аватара пользователя
Сообщения: 25560
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Сам с собой на птичьем языке...
:)))
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

lDrakon писал(а):...а сравнение конечно выполняется больше чем за один такт ...
Сравнивать нужно не ==, а >.
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт мар 17, 2017 19:43:25
Откуда: Москва

Сообщение lDrakon »

pyzhman писал(а):
lDrakon писал(а):...а сравнение конечно выполняется больше чем за один такт ...
Сравнивать нужно не ==, а >.
можно да - но тогда точка старта АЦП возможно будет плавать ...

но уже может и не важно - оказалось, в целом - если отбросить плавание оффсета - то все в рамочках ..

а вот как с этим смещение быть - только если помнить прошлый результат и этот +/- 1 исключать ... ( а переменных и так не осталось, а использовать ОЗУ, лишний код, а и тут уже в притык )
"не спеши, а то успеешь" (С)
Ответить

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