ltDrakon 0 17 марта, 2017 Опубликовано 17 марта, 2017 · Жалоба возникла странная ситуация ... на тини44 - работает ШИМ и АЦП, хочется синхронизировать , для сего считывается счетчик таймера и при прохождении нуля запускает АЦП - и все бы хорошо, но стоит запретить прерывания ( I=0), все зависает на глухо ... ( почему, не пойму ) ( ШИМ работает сам по себе, АЦП прерывание тоже не использует .. в програме прерывание использует сейчас только сторожевой таймер ) а второе, еще более странное ... данные на этом АЦП чуть плавуют ( ну что мог сделал), но и да фиг бы с ним, я готов отказаться от нижнего бита, но! - даже если сдвигаю, делю, принудительно ставлю нижний бит ( даже не один) в 1 или 0 .. все равно получаю плавание +/- 1 ... может в чем то туплю, но уловлю в чем .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 17 марта, 2017 Опубликовано 17 марта, 2017 · Жалоба а второе, еще более странное ... данные на этом АЦП чуть плавуют ( ну что мог сделал), но и да фиг бы с ним, я готов отказаться от нижнего бита, но! - даже если сдвигаю, делю, принудительно ставлю нижний бит ( даже не один) в 1 или 0 .. все равно получаю плавание +/- 1 ... По документации 2 нижних значащих бита на самом деле ничего не значащие. Можете их совершенно легально обнулить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ltDrakon 0 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба ну вопервых это в корне не верно ... более того можно выжимать из того то АЦП даже больше чем 10 бит .... а тут вопрос в другой - я даже 4 бита обнуляю, а один фиг получаю плавание в единицу ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба а тут вопрос в другой - я даже 4 бита обнуляю, а один фиг получаю плавание в единицу ... Странный вопрос. Может, вы не так его задаете? Правильно ли я понял, что биты показания АЦП обнуляете, а они не обнуляются? Или что-то другое плавает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ltDrakon 0 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба ну как обьяснить - фактически они и могут плавать ( ну не идеальная тама развязка, да и на тини нет возможности развязать цифровую и аналоговую часть ), но я готов смириться с потерей одного бита ... и потому после 16 интераций АЦП я принудительно ставлю младший бит результата или 0 или 1 ... после идет HEXtoDEC и вывод на LCD ( все класически ) ... и вот на экране вижу результат .. и сколько бы бит я не ставил принудительно, все равно плавает .. т.е. было 200, плавало 200/201 .. срезал например биты, стало 20 .. а все равно плавает 20/21 .. тоже с утановкой битов, было 200/201 ... ставлю младший в 1, плавает 201/203 ... и т.д. ПС: преобразование и вывод на экран врядли виноваты - выводятся и другие значение ( не с АЦП ) и ничего не плавает и все как надо ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба т.е. было 200, плавало 200/201 .. срезал например биты, стало 20 .. а все равно плавает 20/21 .. тоже с утановкой битов, было 200/201 ... ставлю младший в 1, плавает 201/203 ... и т.д. Уточните, что Вы имеете ввиду под понятиями "срезал и установил", а то создается впечатление, что Вы используете ">>=" для срезания и пару "<<=" + "|=0x01" для установки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ltDrakon 0 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба да все , надо было передохнуть, отвлечься и поспать ... в итоге - с таймером запарка в том, что затупил и забыл что он работает на частоте ядра! а любое сравнение будет явно больше одного такта ( ну может и плюнуть на это ) а с АЦП ( уже на тестовом коде стало ясно ) - виноват оффсет дифф усилителя - это он гуляет и дает в итоге +/- 1, какое бы значение не было ... и как с этим быть, надо подумать ... или ковырять почему оффсет гуляет, или как то компенсировать это ( хотелось бы попроще ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_gary 0 18 марта, 2017 Опубликовано 18 марта, 2017 · Жалоба Выкиньте диффусилитель - это косяк в данном камне. Он спокойно себе гуляет до +/-10 странно что у Вас меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ltDrakon 0 19 марта, 2017 Опубликовано 19 марта, 2017 · Жалоба да я тоже склоняюсь к тому, что в тиньках дифф лучше нафиг! проще и лучше сделать внешнее ( а то даже питание нельзя развязать )... меньше стало после запитки реф-напряжения от ТЛ431 ... ну и еще ковыряний с питанием но с другой стороны - порой натыкаешься на пример неплохих реализаций, то и стимулирует поковыряться .... но и может мой любимый максимализм, в данном случае может это вообще не важно - ибо это будет зарядка/разрядка аккумов - и в системе стабилизации тока заряда - эту гуляния то и не важны ( как уже заметил, тама на самом аккуме больше плавает, изза внутренних процессов ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 20 марта, 2017 Опубликовано 20 марта, 2017 · Жалоба Вы можете обрезать хоть 4 разряда, но в каких-то точках по входному напряжению Вы все равно будете получать болтанку +-1. Чтобы этого не было, нужно усреднение, и потом округление правильное десятичное в требуемом разряде. Тогда будете получать стабильное значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться