X-Git-Url: https://defiant.homedns.org/gitweb/?p=ros_wild_thumper.git;a=blobdiff_plain;f=avr%2Fnano%2Fmain.c;h=935ce4994d4ae418a1333a13aa44045210e1518b;hp=5418055daaf734023e65215f000ce8156d064300;hb=7e8cc0303c358a8882f5b9f12df4357b63429288;hpb=b039f1fc2f0d99f315139b441b49cc5386da1459 diff --git a/avr/nano/main.c b/avr/nano/main.c index 5418055..935ce49 100644 --- a/avr/nano/main.c +++ b/avr/nano/main.c @@ -5,6 +5,10 @@ #include #include #include +#include +#include +#include +#include #include "uart.h" /* @@ -14,45 +18,91 @@ * 0x02 Distance left LSB * 0x03 Distance right MSB * 0x04 Distance right LSB - * 0x05 Distance forward MSB - * 0x06 Distance forward LSB + * 0x05 Distance forward1 MSB + * 0x06 Distance forward1 LSB * 0x07 Distance backward MSB * 0x08 Distance backward LSB + * 0x09 Voltage MSB + * 0x0A Voltage LSB + * 0x0B Distance forward2 MSB + * 0x0C Distance forward2 LSB + * 0x0D Current MSB + * 0x0E Current LSB + * + * 0x15 Distance forward1 MSB (read only) + * 0x16 Distance forward1 LSB (read only) + * 0x17 Distance backward MSB (read only) + * 0x18 Distance backward LSB (read only) + * 0x19 Distance forward2 MSB (read only) + * 0x1A Distance forward2 LSB (read only) * * 0xff Bootloader */ -#define TWI_ACK TWCR = (1<>8; TWI_ACK; break; - case 0x06: // Distance forward LSB + case 0x06: // Distance forward1 LSB TWDR = tmp16; TWI_ACK; break; @@ -103,12 +153,71 @@ 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; + case 0x0B: // Distance forward2 MSB + tmp16 = dist_forward2; + TWDR = tmp16>>8; + TWI_ACK; + break; + case 0x0C: // Distance forward2 LSB + TWDR = tmp16; + TWI_ACK; + break; + case 0x0D: // Current MSB + tmp16 = current; + TWDR = tmp16>>8; + TWI_ACK; + break; + case 0x0E: // Current LSB + TWDR = tmp16; + TWI_ACK; + break; + case 0x15: // Distance forward1 MSB + tmp16 = dist_forward1; + TWDR = tmp16>>8; + TWI_ACK; + break; + case 0x16: // Distance forward1 LSB + TWDR = tmp16; + TWI_ACK; + break; + case 0x17: // Distance backward MSB + tmp16 = dist_backward; + TWDR = tmp16>>8; + TWI_ACK; + break; + case 0x18: // Distance backward LSB + TWDR = tmp16; + TWI_ACK; + break; + case 0x19: // Distance forward2 MSB + tmp16 = dist_forward2; + TWDR = tmp16>>8; + TWI_ACK; + break; + case 0x1A: // Distance forward2 LSB + TWDR = tmp16; + TWI_ACK; + break; default: TWDR = 0; TWI_NAK; } ireg++; break; + case TW_SR_STOP: + TWI_ACK; + break; + case TW_NO_INFO: + break; default: TWI_RESET; } @@ -119,11 +228,12 @@ uint16_t ReadChannel(uint8_t mux) { uint8_t i; uint16_t result; - ADCSRA = (1<