81,10 → 81,19 |
// 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); |
// 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 |
|
// Initialize SPI-Interface |
// Enable interrupt (SPIE=1) |
91,9 → 100,9 |
// Enable SPI bus (SPE=1) |
// MSB transmitted first (DORD = 0) |
// Master SPI Mode (MSTR=1) |
// Clock polarity low whn idle (CPOL=0) |
// clock phase sample at leading edge (CPHA=0) |
// clock rate = SYSCLK/128 (SPI2X=0, SPR1=1, SPR0=1) 20MHz/128 = 156.25kHz |
// Clock polarity low when idle (CPOL=0) |
// Clock phase sample at leading edge (CPHA=0) |
// Clock rate = SYSCLK/128 (SPI2X=0, SPR1=1, SPR0=1) 20MHz/128 = 156.25kHz |
SPCR = (1<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(1<<SPR1)|(1<<SPR0); |
SPSR &= ~(1<<SPI2X); |
|
123,14 → 132,22 |
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.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 |
// write to SPDR triggers automatically the transfer MOSI MISO |
// MM3 Period, + AXIS code |
switch(MM3.AXIS) |
211,7 → 228,11 |
break; |
} |
} |
#ifdef USE_WALTER_EXT // walthers board |
PORTC |= (1<<PORTC6); // deselect slave |
#else |
PORTC |= (1<<PORTC4); // deselect slave |
#endif |
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 |