22 #include <avr/interrupt.h>
35 uint16_t tractorOvershootDelay;
44 static uint8_t EEPROM_read(
unsigned int uiAddress);
45 static void EEPROM_write(
unsigned int uiAddress, uint8_t ucData);
48 inline void loadTweakValues(
void)
53 l_base = EEPROM_read(EE_ADDR_LEFT_BASE);
54 r_base = EEPROM_read(EE_ADDR_RIGHT_BASE);
55 slopeCoef = (EEPROM_read(EE_ADDR_SLOPE_COEF) << 8) +
56 EEPROM_read(EE_ADDR_SLOPE_COEF + 1);
57 offCoef = (EEPROM_read(EE_ADDR_OFF_COEF) << 8) +
58 EEPROM_read(EE_ADDR_OFF_COEF + 1);
59 dampCoef = EEPROM_read(EE_ADDR_DAMP_COEF);
60 lineCenter = EEPROM_read(EE_ADDR_LINE_X_CENTER);
61 turnPoint = EEPROM_read(EE_ADDR_TURN_POINT);
62 turnSubtract = EEPROM_read(EE_ADDR_TURN_SUBTRACT);
63 panOffset = EEPROM_read(EE_ADDR_PAN_OFFSET);
64 tiltOffset = EEPROM_read(EE_ADDR_TILT_OFFSET);
65 tractorOvershootDelay = (EEPROM_read(EE_ADDR_TRACTOR_OVERSHOOT_DELAY) << 8) +
66 EEPROM_read(EE_ADDR_TRACTOR_OVERSHOOT_DELAY + 1);
67 testMode = EEPROM_read(EE_ADDR_TEST_MODE);
68 tempTweak1 = EEPROM_read(EE_ADDR_TEMP_TWEAK1);
69 tempTweak2 = EEPROM_read(EE_ADDR_TEMP_TWEAK2);
70 tempTweak3 = (EEPROM_read(EE_ADDR_TEMP_TWEAK3) << 8) +
71 EEPROM_read(EE_ADDR_TEMP_TWEAK3 + 1);
72 tempTweak4 = (EEPROM_read(EE_ADDR_TEMP_TWEAK4) << 8) +
73 EEPROM_read(EE_ADDR_TEMP_TWEAK4 + 1);
79 inline void storeTweakValues(
void)
84 EEPROM_write(EE_ADDR_LEFT_BASE, l_base);
85 EEPROM_write(EE_ADDR_RIGHT_BASE, r_base);
86 EEPROM_write(EE_ADDR_SLOPE_COEF, slopeCoef >> 8);
87 EEPROM_write(EE_ADDR_SLOPE_COEF + 1, slopeCoef);
88 EEPROM_write(EE_ADDR_OFF_COEF, offCoef >> 8);
89 EEPROM_write(EE_ADDR_OFF_COEF + 1, offCoef);
90 EEPROM_write(EE_ADDR_DAMP_COEF, dampCoef);
91 EEPROM_write(EE_ADDR_LINE_X_CENTER, lineCenter);
92 EEPROM_write(EE_ADDR_TURN_POINT, turnPoint);
93 EEPROM_write(EE_ADDR_TURN_SUBTRACT, turnSubtract);
94 EEPROM_write(EE_ADDR_PAN_OFFSET, panOffset);
95 EEPROM_write(EE_ADDR_TILT_OFFSET, tiltOffset);
96 EEPROM_write(EE_ADDR_TRACTOR_OVERSHOOT_DELAY, tractorOvershootDelay >> 8);
97 EEPROM_write(EE_ADDR_TRACTOR_OVERSHOOT_DELAY + 1, tractorOvershootDelay);
98 EEPROM_write(EE_ADDR_TEST_MODE, testMode);
99 EEPROM_write(EE_ADDR_TEMP_TWEAK1, tempTweak1);
100 EEPROM_write(EE_ADDR_TEMP_TWEAK2, tempTweak2);
101 EEPROM_write(EE_ADDR_TEMP_TWEAK3, tempTweak3 >> 8);
102 EEPROM_write(EE_ADDR_TEMP_TWEAK3 + 1, tempTweak3);
103 EEPROM_write(EE_ADDR_TEMP_TWEAK4, tempTweak4 >> 8);
104 EEPROM_write(EE_ADDR_TEMP_TWEAK4 + 1, tempTweak4);
109 uint8_t EEPROM_read(
unsigned int uiAddress)
112 while (EECR & (1 << EEWE)) ;
121 void EEPROM_write(
unsigned int uiAddress, uint8_t ucData)
124 while (EECR & (1 << EEWE)) ;
129 EECR |= (1 << EEMWE);