Rev 942 | Rev 945 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 942 | Rev 943 | ||
---|---|---|---|
Line 11... | Line 11... | ||
11 | 11 | ||
12 | volatile uint8_t twi_state = 0; |
12 | volatile uint8_t twi_state = 0; |
13 | volatile uint8_t motor_write = 0; |
13 | volatile uint8_t motor_write = 0; |
14 | volatile uint8_t motor_read = 0; |
14 | volatile uint8_t motor_read = 0; |
15 | volatile uint8_t dac_channel = 0; |
15 | volatile uint8_t dac_channel = 0; |
16 | volatile uint8_t motor_rx[8]; |
16 | volatile uint8_t motor_rx[MOTOR_COUNT*2]; |
Line 17... | Line 17... | ||
17 | volatile uint16_t I2CTimeout = 100; |
17 | volatile uint16_t I2CTimeout = 100; |
18 | 18 | ||
Line 159... | Line 159... | ||
159 | // Master Transmit |
159 | // Master Transmit |
160 | case 0: // Send SLA-W |
160 | case 0: // Send SLA-W |
161 | I2C_WriteByte(0x52 + (motor_write * 2) ); |
161 | I2C_WriteByte(0x52 + (motor_write * 2) ); |
162 | break; |
162 | break; |
163 | case 1: // Send Data to Slave |
163 | case 1: // Send Data to Slave |
- | 164 | #ifdef HEXAKOPTER |
|
164 | switch(motor_write) |
165 | switch(motor_write) |
165 | { |
166 | { |
- | 167 | case 0: |
|
- | 168 | I2C_WriteByte(Motor_FrontLeft); |
|
- | 169 | break; |
|
- | 170 | case 1: |
|
- | 171 | I2C_WriteByte(Motor_RearRight); |
|
- | 172 | break; |
|
- | 173 | case 2: |
|
- | 174 | I2C_WriteByte(Motor_FrontRight); |
|
- | 175 | break; |
|
- | 176 | case 3: |
|
- | 177 | I2C_WriteByte(Motor_RearLeft); |
|
- | 178 | break; |
|
- | 179 | case 4: |
|
- | 180 | I2C_WriteByte(Motor_Right); |
|
- | 181 | break; |
|
- | 182 | case 5: |
|
- | 183 | I2C_WriteByte(Motor_Left); |
|
- | 184 | break; |
|
- | 185 | } |
|
- | 186 | ||
- | 187 | #else |
|
- | 188 | switch(motor_write++) |
|
- | 189 | { |
|
166 | case 0: |
190 | case 0: |
167 | I2C_WriteByte(Motor_Front); |
191 | I2C_WriteByte(Motor_Front); |
168 | break; |
192 | break; |
169 | case 1: |
193 | case 1: |
170 | I2C_WriteByte(Motor_Rear); |
194 | I2C_WriteByte(Motor_Rear); |
Line 174... | Line 198... | ||
174 | break; |
198 | break; |
175 | case 3: |
199 | case 3: |
176 | I2C_WriteByte(Motor_Left); |
200 | I2C_WriteByte(Motor_Left); |
177 | break; |
201 | break; |
178 | } |
202 | } |
- | 203 | #endif |
|
179 | break; |
204 | break; |
180 | case 2: // repeat case 0+1 for all motors |
205 | case 2: // repeat case 0+1 for all motors |
181 | I2C_Stop(); |
206 | I2C_Stop(); |
182 | if (motor_write < 3) |
207 | if (motor_write < (MOTOR_COUNT-1)) |
183 | { |
208 | { |
184 | motor_write++; // jump to next motor |
209 | motor_write++; // jump to next motor |
185 | twi_state = 0; // and repeat from state 0 |
210 | twi_state = 0; // and repeat from state 0 |
186 | } |
211 | } |
187 | else |
212 | else |
188 | { // data to last motor send |
213 | { // data to last motor send |
189 | motor_write = 0; // reset motor write counter |
214 | motor_write = 0; // reset motor write counter |
190 | } |
215 | } |
191 | I2C_Start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive |
216 | I2C_Start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive |
192 | break; |
217 | break; |
193 | - | ||
194 | // Master Receive |
218 | // Master Receive |
195 | case 3: // Send SLA-R |
219 | case 3: // Send SLA-R |
196 | I2C_WriteByte(0x53 + (motor_read * 2) ); |
220 | I2C_WriteByte(0x53 + (motor_read * 2) ); |
197 | break; |
221 | break; |
198 | case 4: |
222 | case 4: |
Line 205... | Line 229... | ||
205 | break; |
229 | break; |
206 | case 6: |
230 | case 6: |
207 | //Read 2nd byte |
231 | //Read 2nd byte |
208 | motor_rx[motor_read + 4] = TWDR; |
232 | motor_rx[motor_read + 4] = TWDR; |
209 | motor_read++; |
233 | motor_read++; |
210 | if (motor_read > 3) motor_read = 0; |
234 | if (motor_read > (MOTOR_COUNT-1)) motor_read = 0; |
211 | I2C_Stop(); |
235 | I2C_Stop(); |
212 | twi_state = 0; |
236 | twi_state = 0; |
213 | I2CTimeout = 10; |
237 | I2CTimeout = 10; |
214 | break; |
238 | break; |