#include "packet.h" #include "uart.h" /* 5 byte packets. 5 bytes * 10 bits/byte * 8 khz = 400 kbits/sec */ void packet_send_adc_dac(int16_t adc, uint16_t dac, int overflow) { char b[4]; /* Packet format for DAC/ADC values: 10100000 ffffAaaa aaaaaaaa Dddddddd dddddddd ffff = flags, default 0000 ...1 = possible overflow Aaaaaaaaaaaa = 12-bit ADC value (2s compliment signed) Dddddddddddddddd = 16-bit DAC command (unsigned) */ uart1_put(PACKET_ADC_DAC); b[0] = (adc & 0x0F00) >> 8; if (overflow) b[0] |= 0x10; b[1] = adc & 0xFF; b[2] = (dac & 0xFF00) >> 8; b[3] = dac & 0xFF; uart1_put(b[0]); uart1_put(b[1]); uart1_put(b[2]); uart1_put(b[3]); } void packet_send_calibration(float scale) { /* Packet format for calibration data: A1 xx xx xx xx where xx xx xx xx = 32-bit floating point value, little endian IEEE 754 */ uint8_t *b = (uint8_t *)&scale; uart1_put(PACKET_CALIBRATION); uart1_put(b[0]); uart1_put(b[1]); uart1_put(b[2]); uart1_put(b[3]); }