Як передати float через UART
Тому що працюємо як бджоли
Як передати float через UART?
Почнемо з невеликого опису типу.float- подання чисел з плаваючою комою. Дуже популярний такий формат у мікроконтролерах.
Єдиний поширений практично на всі типи компіляторів формат з плаваючою точкою. Найчастіше і тип double є тим самимfloat.
float у пам'яті мікроконтролера являє собою 4 байти, в яких зберігається мантиса зі значеннями та десятковий ступінь числа.
Фактично число 2500 виглядатиме так: 2.5*10^3. окремо зберігаємо 2.5, та окремо +3. Але не в цьому суть статті.
Отже, завдання таке: передати із мікроконтролера змінну var1 типу float. Код написаний мовою С.
unsigned char * ptr;
Тепер у нас покажчик прямо посилається на 4 байти флоат, що й вимагалося для вирішення.
Як отримати доступ до значення байтів?
*(ptr+1)доступ до другого байта.
Функція для передачі байта:putchar(unsigned char b);
Ми послідовно закладаємо в неї наші байти та отримуємо:
Або простіше записати як функції. Втім, можна було одразу мотати до кінця статті. ;-)
void write_float(float f) unsigned char *ptr; char i; ptr = (unsigned char *)&f; for (i=0;i putchar(*(ptr++)); >