Перейти к содержанию
    

пару вопросиков по Тини44

возникла странная ситуация ...

 

на тини44 - работает ШИМ и АЦП, хочется синхронизировать , для сего считывается счетчик таймера и при прохождении нуля запускает АЦП - и все бы хорошо, но стоит запретить прерывания ( I=0), все зависает на глухо ... ( почему, не пойму )

 

( ШИМ работает сам по себе, АЦП прерывание тоже не использует .. в програме прерывание использует сейчас только сторожевой таймер )

 

а второе, еще более странное ... данные на этом АЦП чуть плавуют ( ну что мог сделал), но и да фиг бы с ним, я готов отказаться от нижнего бита, но! - даже если сдвигаю, делю, принудительно ставлю нижний бит ( даже не один) в 1 или 0 .. все равно получаю плавание +/- 1 ...

 

может в чем то туплю, но уловлю в чем ..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а второе, еще более странное ... данные на этом АЦП чуть плавуют ( ну что мог сделал), но и да фиг бы с ним, я готов отказаться от нижнего бита, но! - даже если сдвигаю, делю, принудительно ставлю нижний бит ( даже не один) в 1 или 0 .. все равно получаю плавание +/- 1 ...

 

По документации 2 нижних значащих бита на самом деле ничего не значащие. Можете их совершенно легально обнулить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вопервых это в корне не верно ...

 

более того можно выжимать из того то АЦП даже больше чем 10 бит ....

 

а тут вопрос в другой - я даже 4 бита обнуляю, а один фиг получаю плавание в единицу ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а тут вопрос в другой - я даже 4 бита обнуляю, а один фиг получаю плавание в единицу ...

Странный вопрос. Может, вы не так его задаете?

Правильно ли я понял, что биты показания АЦП обнуляете, а они не обнуляются? Или что-то другое плавает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну как обьяснить - фактически они и могут плавать ( ну не идеальная тама развязка, да и на тини нет возможности развязать цифровую и аналоговую часть ), но я готов смириться с потерей одного бита ...

 

и потому после 16 интераций АЦП я принудительно ставлю младший бит результата или 0 или 1 ... после идет HEXtoDEC и вывод на LCD ( все класически ) ...

 

и вот на экране вижу результат .. и сколько бы бит я не ставил принудительно, все равно плавает .. т.е. было 200, плавало 200/201 .. срезал например биты, стало 20 .. а все равно плавает 20/21 ..

 

тоже с утановкой битов, было 200/201 ... ставлю младший в 1, плавает 201/203 ... и т.д.

 

ПС: преобразование и вывод на экран врядли виноваты - выводятся и другие значение ( не с АЦП ) и ничего не плавает и все как надо ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. было 200, плавало 200/201 .. срезал например биты, стало 20 .. а все равно плавает 20/21 ..

тоже с утановкой битов, было 200/201 ... ставлю младший в 1, плавает 201/203 ... и т.д.

 

Уточните, что Вы имеете ввиду под понятиями "срезал и установил", а то создается впечатление, что Вы используете ">>=" для срезания

и пару "<<=" + "|=0x01" для установки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да все , надо было передохнуть, отвлечься и поспать ...

 

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

 

а с АЦП ( уже на тестовом коде стало ясно ) - виноват оффсет дифф усилителя - это он гуляет и дает в итоге +/- 1, какое бы значение не было ...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выкиньте диффусилитель - это косяк в данном камне.

Он спокойно себе гуляет до +/-10 странно что у Вас меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

меньше стало после запитки реф-напряжения от ТЛ431 ... ну и еще ковыряний с питанием

 

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы можете обрезать хоть 4 разряда, но в каких-то точках по входному напряжению Вы все равно будете получать болтанку +-1. Чтобы этого не было, нужно усреднение, и потом округление правильное десятичное в требуемом разряде. Тогда будете получать стабильное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...