VOUT писал(а):Товарищи, форумчане ! Помогите, пожалуйста.
Как передать массив типа float по RS-232. Микроконтроллер ATmega.
Нашёл возможное решение проблемы
http://beez-develop.ru/index.php/faq/pr ... float-uart
Но, проблема осталась...
История вот в чём. Допустим, записал я числа в массив. Числа типа float. Массив хранится будет видимо во flash или EEPROM (в общем в пямяти МК).
Массив соответственно тоже типа float. Как на ПК его передать ?!
По ссылке выше ищется адрес памяти, где хранится float и далее расписывается программа.
Ребята вы о чём пишите?! Человек спрашивает как передать данные от персонального компьютера с операционной системой которая оперирует числами с формате ANSI и ASCII в микроконтроллер ATmega который не работает бод операционной системой и его ядро не понимает эту кодировку как персональный компьютер. А какую вы передаёте смысловую информацию роли не играет. Главное чтобы она была упакована.
Пример:
Допустим на компьютере есть два числа
первое пусть будет - 110000
второе пусть будет - 44000
которые надо передать в микроконтроллер и там к примеру сложить
представим с начало эти числа в таком виде
первое 11*10^4
второе 44*10^3
Далее их мантиссы и степени необходимо перевести в HEX, а основания примем как стандартное основание для всех чисел.
первое B и 4
второе 2С и 3
Затем эти шесть символов(байт) отправляем в микроконтроллер где они преобразуется в бинарное представление и далее
программа видит, что степени разные одно равно 4 другое 3. Делим 2С на A при этом увеличиваем степень с 3 до 4. По сути вещей мы сдвинули запятую влево у числа тем самым приравняли степени. Теперь мантиссы можно сложить.
4+B=F
Итак получили результат мантисса F и степень 4
затем преобразуемый результат в ASCII и полученные два байта отправляем на терминальное окно персонального компьютера
мы видим 'F4'
представим в десятичной системе
15*10^4=150000
проверим 44000+110000=154000
погрешность 4000 объясняется тем, что взята маленькая разрядная сетка в 8 бит. Если бы мы взяли 16 то результат был бы точней.
Вот пример организации персонального компьютера с микроконтроллером.