Rev 918 | Rev 1166 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 918 | Rev 1111 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | #include "main.h" |
4 | #include "main.h" |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | volatile unsigned char twi_state = 0; |
6 | volatile unsigned char twi_state = 0; |
7 | unsigned char motor = 0; |
7 | unsigned char motor = 0; |
8 | unsigned char motorread = 0; |
8 | unsigned char motorread = 0; |
Line 9... | Line 9... | ||
9 | unsigned char motor_rx[8]; |
9 | unsigned char motor_rx[16]; |
10 | 10 | ||
11 | //############################################################################ |
11 | //############################################################################ |
12 | //Initzialisieren der I2C (TWI) Schnittstelle |
12 | //Initzialisieren der I2C (TWI) Schnittstelle |
Line 63... | Line 63... | ||
63 | 63 | ||
Line 64... | Line 64... | ||
64 | return(0); |
64 | return(0); |
Line -... | Line 65... | ||
- | 65 | ||
- | 66 | } |
|
- | 67 | ||
- | 68 | #ifdef OCTO |
|
- | 69 | //############################################################################ |
|
- | 70 | //Start I2C |
|
- | 71 | SIGNAL (TWI_vect) |
|
- | 72 | //############################################################################ |
|
- | 73 | { |
|
- | 74 | switch (twi_state++) |
|
- | 75 | { |
|
- | 76 | case 0: |
|
- | 77 | i2c_write_byte(0x52+(motor*2)); |
|
- | 78 | break; |
|
- | 79 | case 1: |
|
- | 80 | switch(motor++) |
|
- | 81 | { |
|
- | 82 | case 0: |
|
- | 83 | i2c_write_byte(Motor1); |
|
- | 84 | break; |
|
- | 85 | case 1: |
|
- | 86 | i2c_write_byte(Motor2); |
|
- | 87 | break; |
|
- | 88 | case 2: |
|
- | 89 | i2c_write_byte(Motor3); |
|
- | 90 | break; |
|
- | 91 | case 3: |
|
- | 92 | i2c_write_byte(Motor4); |
|
- | 93 | break; |
|
- | 94 | case 4: |
|
- | 95 | i2c_write_byte(Motor5); |
|
- | 96 | break; |
|
- | 97 | case 5: |
|
- | 98 | i2c_write_byte(Motor6); |
|
- | 99 | break; |
|
- | 100 | case 6: |
|
- | 101 | i2c_write_byte(Motor7); |
|
- | 102 | break; |
|
- | 103 | case 7: |
|
- | 104 | i2c_write_byte(Motor8); |
|
- | 105 | break; |
|
- | 106 | } |
|
- | 107 | break; |
|
- | 108 | case 2: |
|
- | 109 | i2c_stop(); |
|
- | 110 | if (motor<8) twi_state = 0; |
|
- | 111 | else motor = 0; |
|
- | 112 | i2c_start(); |
|
- | 113 | break; |
|
- | 114 | ||
- | 115 | //Liest Daten von Motor |
|
- | 116 | case 3: |
|
- | 117 | i2c_write_byte(0x53+(motorread*2)); |
|
- | 118 | break; |
|
- | 119 | case 4: |
|
- | 120 | switch(motorread) |
|
- | 121 | { |
|
- | 122 | case 0: |
|
- | 123 | i2c_write_byte(Motor1); |
|
- | 124 | break; |
|
- | 125 | case 1: |
|
- | 126 | i2c_write_byte(Motor2); |
|
- | 127 | break; |
|
- | 128 | case 2: |
|
- | 129 | i2c_write_byte(Motor3); |
|
- | 130 | break; |
|
- | 131 | case 3: |
|
- | 132 | i2c_write_byte(Motor4); |
|
- | 133 | break; |
|
- | 134 | case 4: |
|
- | 135 | i2c_write_byte(Motor5); |
|
- | 136 | break; |
|
- | 137 | case 5: |
|
- | 138 | i2c_write_byte(Motor6); |
|
- | 139 | break; |
|
- | 140 | case 6: |
|
- | 141 | i2c_write_byte(Motor7); |
|
- | 142 | break; |
|
- | 143 | case 7: |
|
- | 144 | i2c_write_byte(Motor8); |
|
- | 145 | break; |
|
- | 146 | } |
|
- | 147 | break; |
|
- | 148 | case 5: //1 Byte vom Motor lesen |
|
- | 149 | motor_rx[motorread] = TWDR; |
|
- | 150 | ||
- | 151 | case 6: |
|
- | 152 | switch(motorread) |
|
- | 153 | { |
|
- | 154 | case 0: |
|
- | 155 | i2c_write_byte(Motor1); |
|
- | 156 | break; |
|
- | 157 | case 1: |
|
- | 158 | i2c_write_byte(Motor2); |
|
- | 159 | break; |
|
- | 160 | case 2: |
|
- | 161 | i2c_write_byte(Motor3); |
|
- | 162 | break; |
|
- | 163 | case 3: |
|
- | 164 | i2c_write_byte(Motor4); |
|
- | 165 | break; |
|
- | 166 | case 4: |
|
- | 167 | i2c_write_byte(Motor5); |
|
- | 168 | break; |
|
- | 169 | case 5: |
|
- | 170 | i2c_write_byte(Motor6); |
|
- | 171 | break; |
|
- | 172 | case 6: |
|
- | 173 | i2c_write_byte(Motor7); |
|
- | 174 | break; |
|
- | 175 | case 7: |
|
- | 176 | i2c_write_byte(Motor8); |
|
- | 177 | break; |
|
- | 178 | } |
|
- | 179 | break; |
|
- | 180 | case 7: //2 Byte vom Motor lesen |
|
- | 181 | motor_rx[motorread+4] = TWDR; |
|
- | 182 | motorread++; |
|
- | 183 | if (motorread>7) motorread=0; |
|
- | 184 | i2c_stop(); |
|
- | 185 | I2CTimeout = 10; |
|
- | 186 | twi_state = 0; |
|
- | 187 | break; |
|
- | 188 | case 8: // Gyro-Offset |
|
- | 189 | i2c_write_byte(0x98); // Address of the DAC |
|
- | 190 | break; |
|
- | 191 | case 9: |
|
- | 192 | i2c_write_byte(0x10); // Update Channel A |
|
- | 193 | break; |
|
- | 194 | case 10: |
|
- | 195 | i2c_write_byte(AnalogOffsetNick); // Value |
|
- | 196 | break; |
|
- | 197 | case 11: |
|
- | 198 | i2c_write_byte(0x80); // Value |
|
- | 199 | break; |
|
- | 200 | case 12: |
|
- | 201 | i2c_stop(); |
|
- | 202 | I2CTimeout = 10; |
|
- | 203 | i2c_start(); |
|
- | 204 | break; |
|
- | 205 | case 13: |
|
- | 206 | i2c_write_byte(0x98); // Address of the DAC |
|
- | 207 | break; |
|
- | 208 | case 14: |
|
- | 209 | i2c_write_byte(0x12); // Update Channel B |
|
- | 210 | break; |
|
- | 211 | case 15: |
|
- | 212 | i2c_write_byte(AnalogOffsetRoll); // Value |
|
- | 213 | break; |
|
- | 214 | case 16: |
|
- | 215 | i2c_write_byte(0x80); // Value |
|
- | 216 | break; |
|
- | 217 | case 17: |
|
- | 218 | i2c_stop(); |
|
- | 219 | I2CTimeout = 10; |
|
- | 220 | i2c_start(); |
|
- | 221 | break; |
|
- | 222 | case 18: |
|
- | 223 | i2c_write_byte(0x98); // Address of the DAC |
|
- | 224 | break; |
|
- | 225 | case 19: |
|
- | 226 | i2c_write_byte(0x14); // Update Channel C |
|
- | 227 | break; |
|
- | 228 | case 20: |
|
- | 229 | i2c_write_byte(AnalogOffsetGier); // Value |
|
- | 230 | break; |
|
- | 231 | case 21: |
|
- | 232 | i2c_write_byte(0x80); // Value |
|
- | 233 | break; |
|
- | 234 | case 22: |
|
- | 235 | i2c_stop(); |
|
- | 236 | I2CTimeout = 10; |
|
- | 237 | twi_state = 0; |
|
- | 238 | break; |
|
- | 239 | } |
|
65 | 240 | TWCR |= 0x80; |
|
66 | } |
241 | } |
67 | 242 | #else |
|
68 | //############################################################################ |
243 | //############################################################################ |
69 | //Start I2C |
244 | //Start I2C |
Line 200... | Line 375... | ||
200 | twi_state = 0; |
375 | twi_state = 0; |
201 | break; |
376 | break; |
202 | } |
377 | } |
203 | TWCR |= 0x80; |
378 | TWCR |= 0x80; |
204 | } |
379 | } |
- | 380 | #endif |
|
205 | 381 |