62,6 → 62,38 |
#define MM3_PERIOD_2048 0x60 |
#define MM3_PERIOD_4096 0x70 |
|
#ifdef USE_WALTER_EXT // walthers board |
// Output Pins (J9)PC6->MM3_SS ,(J8)PB2->MM3_RESET |
#define MM3_SS_PORT PORTC //J9->MM3_SS |
#define MM3_SS_DDR DDRC |
#define MM3_SS_PIN PC6 |
#define MM3_RESET_PORT PORTB //J8->MM3_RESET |
#define MM3_RESET_DDR DDRB |
#define MM3_RESET_PIN PB2 |
#elseif USE_NICK666 // nick666 version 0.67g |
#define MM3_SS_PORT PORTD //J5->MM3_SS |
#define MM3_SS_DDR DDRD |
#define MM3_SS_PIN PD3 |
#define MM3_RESET_PORT PORTB //J8->MM3_RESET |
#define MM3_RESET_DDR DDRB |
#define MM3_RESET_PIN PB2 |
#else // killagregs board |
// Output Pins PC4->MM3_SS ,PC5->MM3_RESET |
#define MM3_SS_PORT PORTC |
#define MM3_SS_DDR DDRC |
#define MM3_SS_PIN PC4 |
#define MM3_RESET_PORT PORTC |
#define MM3_RESET_DDR DDRC |
#define MM3_RESET_PIN PC5 |
#endif |
|
#define MM3_SS_ON MM3_SS_PORT &= ~(1<<MM3_SS_PIN); |
#define MM3_SS_OFF MM3_SS_PORT |= (1<<MM3_SS_PIN); |
#define MM3_RESET_ON MM3_RESET_PORT |= (1<<MM3_RESET_PIN); |
#define MM3_RESET_OFF MM3_RESET_PORT &= ~(1<<MM3_RESET_PIN); |
|
|
|
MM3_calib_t MM3_calib; |
volatile MM3_working_t MM3; |
volatile uint8_t MM3_Timeout = 0; |
83,19 → 115,13 |
// set MISO (PB6) as input |
DDRB &= ~(1<<DDB6); |
|
#ifdef USE_WALTER_EXT // walthers board |
// Output Pins (J9)PC6->MM3_SS ,(J8)PB2->MM3_RESET |
DDRB |= (1<<DDB2); |
DDRC |= (1<<DDC6); |
|
// Output Pins MM3_SS ,MM3_RESET |
MM3_SS_DDR |= (1<<MM3_SS_PIN); |
MM3_RESET_DDR |= (1<<MM3_RESET_PIN); |
// set pins permanent to low |
PORTB &= ~((1<<PORTB2)); |
PORTC &= ~((1<<PORTC6)); |
#else // killagregs board |
// Output Pins PC4->MM3_SS ,PC5->MM3_RESET |
DDRC |= (1<<DDC4)|(1<<DDC5); |
// set pins permanent to low |
PORTC &= ~((1<<PORTC4)|(1<<PORTC5)); |
#endif |
MM3_SS_PORT &= ~((1<<MM3_SS_PIN)); |
MM3_RESET_PORT &= ~((1<<MM3_RESET_PIN)); |
|
// Initialize SPI-Interface |
// Enable interrupt (SPIE=1) |
134,22 → 160,13 |
switch (MM3.STATE) |
{ |
case MM3_STATE_RESET: |
#ifdef USE_WALTER_EXT // walthers board |
PORTC &= ~(1<<PORTC6); // select slave |
PORTB |= (1<<PORTB2); // PB2 to High, MM3 Reset |
#else |
PORTC &= ~(1<<PORTC4); // select slave |
PORTC |= (1<<PORTC5); // PC5 to High, MM3 Reset |
#endif |
MM3_SS_ON // select slave |
MM3_RESET_ON // RESET to High, MM3 Reset |
MM3.STATE = MM3_STATE_START_TRANSFER; |
return; |
|
case MM3_STATE_START_TRANSFER: |
#ifdef USE_WALTER_EXT // walthers board |
PORTB &= ~(1<<PORTB2); // PB2 auf Low (was 102.4 µs at high level) |
#else |
PORTC &= ~(1<<PORTC5); // PC4 auf Low (was 102.4 µs at high level) |
#endif |
MM3_RESET_OFF // RESET auf Low (was 102.4 µs at high level) |
// write to SPDR triggers automatically the transfer MOSI MISO |
// MM3 Period, + AXIS code |
switch(MM3.AXIS) |
230,11 → 247,7 |
break; |
} |
} |
#ifdef USE_WALTER_EXT // walthers board |
PORTC |= (1<<PORTC6); // deselect slave |
#else |
PORTC |= (1<<PORTC4); // deselect slave |
#endif |
MM3_SS_OFF // deselect slave |
MM3.STATE = MM3_STATE_RESET; |
// Update timeout is called every 102.4 µs. |
// It takes 2 cycles to write a measurement data request for one axis and |