суть задачи, взять данные из АЦП, перевести в нормальный вид и отправить в UART
нормальный вид это значение в десятичном формате для вывода в UART
опорное напряжение 5 вольт, АЦП 10-битное, то есть падает число от 0 до 1023
как я уже сделал: делим 5/1024, получается примерно 0,00488
дальше 488 умножаем на полученное значение
число лежит в пределах от 000488 до 499712
первый разряд это целое, остальные цифры это дробная часть
499712 это в памяти контроллера как 0111 1010 0000 0000 0000
а дальше встаёт проблема перевода в десятичный вид
пока то, до чего сам допер
завести шесть регистров под искомое число
дальше, сдвигать каждый регистр (командой ROR)(1 байт, микроконтроллер 8-битный) в котором лежит двоичное значение (всего получается 3 регистра)
в зависимости от того вылазиет единица или ноль в Cary флаге складывать с 1, 2, 4, 8, 16, 32, 64 ...
складывать надо по разрядам, при сложении надо проверять чтоб в каждом разряде не было числа больше 10 и переносить бит в следующий разряд, если требуется
проблема такого метода, что под конец придётся складывать достаточно большие числа, порядка пару сотен тысяч, последовательность где то надо хранить в десятичном виде по разрядам
как упрощение, можно использовать только один регистр АЦП, то есть первые 8 разрядов
получится 5/256 примерно 0,0195
дальше 195 * (макс значение АЦП, 256) = 49920
на один разряд меньше + это число влазиет в 2 регистра
очевидно, падает точность измерений, в общем, это не критично
вопрос, есть ли более быстрый и компактный алгоритм для решения такой задачи? что думаете? как можно еще решить?
по сути пытаюсь сделать из МК вольтметр, большая точность (все равно даже с погрешностью получается намного точнее обычного вольтметра) и время выполнения не важны, однако хочется красивого и быстрого алгоритма, именно на асме
Похожие темы
- Форум AVR assembler, трансляция + эмуляция (2017)
- Форум AVR assembler в Linux, нормальная IDE (2012)
- Форум Перевод ip в десятичную форму представления. (2005)
- Форум Алгоритм по переводу десятичного числа в hex (2020)
- Форум Assembler (2012)
- Форум Assembler (2019)
- Форум assembler (2003)
- Форум AVR (2008)
- Форум assembler: wtf? (2016)
- Форум avr & eeprom_update_block() (2024)