Обращение к АЦП в обработчике прерывания

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

ЕвгенийП пишет:

Arhat109-2

Открываем даташит (328-ой) и читаем

Ну дальше всё ясно. :)

Там, про между прочим есть ещё указивки про время переключения ADMUX, смену режимов с диф. на обыкновенный, время смены референса и т.д. И да, то что я проделал - это проверка насколько в реальности способен работать АЦП, а не "по даташиту так делать нельзя" .. кстати, там такого в явном виде "нельзя" - НЕ УКАЗАНО. :)

Да, у НАНО с тактовой 16Мгц делитель 1:2 - не запускает АЦП совсем, но зато НАНО очень хорошо реагирует на кварцы повышенной частоты примерно до 32Мгц, что фактически "то же самое", только вид сбоку. :)

И это ни разу не "Вы где-то ошиблись". Вполне нормальный пультоскоп с оцифровкой практически в 500кГц на штатной меге. И не штатной тоже. :)

P.S. А при наличии SRAM даже в 64кбайта - очень даже и сэмплирование делать можно, но только очень грамотно.. :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:
то что я проделал - это проверка насколько в реальности способен работать АЦП, а не "по даташиту

Понято и принято.

Arhat109-2 пишет:
НАНО очень хорошо реагирует на кварцы повышенной частоты примерно до 32Мгц

1. Это будет уже не "Нано".

2. По даташиту - не более 20МГц, но с учётом п. 1 выше, это тоже "понято и принято".

Arhat109-2 пишет:

P.S. А при наличии SRAM даже в 64кбайта - очень даже и сэмплирование делать можно, но только очень грамотно.. :)

Мы немного их разных миров. В том мире, в котором я живу, понятия "вылазить за режимы, рекомендованные производителем" и "грамотно" несовместимы. В Вашем мире - Вам виднее.

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да не указано у производителя ограничение режимов! Указан только ряд рекомендаций КАК сделать так чтобы АЦП показывал нечто вразумительное. Вот .. творческая переработка, ничего лишнего. :)

Другое дело что ТС-у это ни разу не поможет - это уже явно, ибо "читать даташит" он толи не умеет, толи не желает..

P.S. при грамотном прочтении даташита и выполнении всех условий, получить оцифровку на 300-400кГц с точностью 8 бит - вполне реально, что и было показано в той теме.

Ну и здесь, в проектах, тема за пультоскоп - вполне нормальная реализация этих, якобы "запредельных" режимов. Ничего там необычного в общем-то и нет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

Да не указано у производителя ограничение режимов! 

Пожалуйста, не заставляйте меня думать, что Вы не умеете читать. Откройте таблицу Table 29-15 и объясните (самому себе, мне не надо) что там означает слово "Max" - ограничение или "рекомендацию". Так вот этот самый Max там - 1000kHz. А значит 13мкс на преобразование - абсолютный Min.

Я предлагаю прекратить эту дискуссию. Более того, если не будет прямых вопросов ко мне, то прекращаю её в одностороннем порядке. Мы же с Вами хорошо и мирно живем уж более года, давайте не будем всё ломать. Я помню, что у Вас "кривой компилятор", "кривой стандарт языка", теперь вот "кривой даташит". Я уважаю Ваше мнение и признаю Ваше право его придерживаться. Давайте прекратим, пожалуйста.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Даташит - это вообще описание устройства и "рекомендации" по правильному применению. В том смысле что если рекомендации даташита соблюдаются, то производитель гарантирует соответствие заявленному. Но это ни разу не запрещает иное использование железок, что на моей памяти бывало не единожды, в т.ч. и приводящее к изменениям в даташитах впоследствии. Щас на память конкретные случаи не вспомню конечно же.

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

Но, в целом, это не "дискуссия". Просто решил помочь Вам правильно читать даташиты. Это - рекомендации в целом, а не догмат к строгому исполнению. Хороший даташит - явно описывает все проблемы, ограничения и позволяет комбинировать их конкретно так, как Вам хочется. Плохой - тот, что в рекламной части заявляет одно, а мелким шрифтом - иное. Даташиты на меги - очень даже хорошие. :)

 

axill
Offline
Зарегистрирован: 05.09.2011

Alex_Sk пишет:

При тиках таймера 156 мкс еще остается куча времени на все остальное.

а теперь посчитайте сколько времени требует на выполнение код внутри обработчика таймера

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

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

Alex_Sk
Offline
Зарегистрирован: 06.01.2015

В общем, проверка на столе с другой платой показала, что мой код с заглушкой вместо прерываний от детектора нуля и без дисплея работает. Я неправильно определил причину проблемы. АЦП в прерываниях таймера запускается, времени на все хватает. Я совсем забыл про дисплей. А он использует spi. Что в сочетании с прерываниями по таймеру и внешним каким то образом и не дает работать АЦП в обработчике прерываний.

Свою задачу решил вынеся все обращения к АЦП в основной цикл по флагам взводимым в прерываниях как здесь кто то и советовал. И времени хватает даже на полноразрядную работу с АЦП вызовом сайберлибовской функции An_Read c делителем 16. Хотя такая разрядность мне и не нужна, дальше все равно идет округление, ток выводится на дисплей с одним знаком после запятой.

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