* 0x06 Distance forward LSB
* 0x07 Distance backward MSB
* 0x08 Distance backward LSB
+ * 0x09 Voltage MSB
+ * 0x0A Voltage LSB
*
* 0xff Bootloader
*/
static volatile uint16_t dist_backward=0;
static volatile uint8_t start_dist_fwd=0;
static volatile uint8_t start_dist_bwd=0;
+static volatile uint16_t voltage=0;
ISR(TWI_vect)
{
TWDR = tmp16;
TWI_ACK;
break;
+ case 0x09: // Voltage MSB
+ tmp16 = voltage;
+ TWDR = tmp16>>8;
+ TWI_ACK;
+ break;
+ case 0x0A: // Voltage LSB
+ TWDR = tmp16;
+ TWI_ACK;
+ break;
default:
TWDR = 0;
TWI_NAK;
}
+static unsigned short get_voltage(void) {
+ return ReadChannel(2)*1.46;
+}
+
+
ISR(INT0_vect) {
static uint16_t t_start=0;
uint16_t t_now = TCNT1;
case 0x03: // ir right
dist_right = get_distance(1);
break;
+ case 0x09: // voltage
+ voltage = get_voltage();
+ break;
case 0xff: // Magic reg that starts the bootloader
if (bootloader == 0xa5) {
cli();