quantum/split_common/serial.c change to helix-serial.c style serial configuration

pull/4419/head
mtei 7 years ago
parent a7af2ad718
commit e5eeb93cc8

@ -14,6 +14,59 @@
#ifndef USE_I2C #ifndef USE_I2C
#ifndef SOFT_SERIAL_PIN
#error quantum/split_common/serial.c need SOFT_SERIAL_PIN define
#endif
#ifdef __AVR_ATmega32U4__
// if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
#ifdef USE_I2C
#if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
#error Using ATmega32U4 I2C, so can not use PD0, PD1
#endif
#endif
#if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
#define SERIAL_PIN_DDR DDRD
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#if SOFT_SERIAL_PIN == D0
#define SERIAL_PIN_MASK _BV(PD0)
#define EIMSK_BIT _BV(INT0)
#define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
#define SERIAL_PIN_INTERRUPT INT0_vect
#elif SOFT_SERIAL_PIN == D1
#define SERIAL_PIN_MASK _BV(PD1)
#define EIMSK_BIT _BV(INT1)
#define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
#define SERIAL_PIN_INTERRUPT INT1_vect
#elif SOFT_SERIAL_PIN == D2
#define SERIAL_PIN_MASK _BV(PD2)
#define EIMSK_BIT _BV(INT2)
#define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
#define SERIAL_PIN_INTERRUPT INT2_vect
#elif SOFT_SERIAL_PIN == D3
#define SERIAL_PIN_MASK _BV(PD3)
#define EIMSK_BIT _BV(INT3)
#define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
#define SERIAL_PIN_INTERRUPT INT3_vect
#endif
#elif SOFT_SERIAL_PIN == E6
#define SERIAL_PIN_DDR DDRE
#define SERIAL_PIN_PORT PORTE
#define SERIAL_PIN_INPUT PINE
#define SERIAL_PIN_MASK _BV(PE6)
#define EIMSK_BIT _BV(INT6)
#define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
#define SERIAL_PIN_INTERRUPT INT6_vect
#else
#error invalid SOFT_SERIAL_PIN value
#endif
#else
#error serial.c now support ATmega32U4 only
#endif
// Serial pulse period in microseconds. Its probably a bad idea to lower this // Serial pulse period in microseconds. Its probably a bad idea to lower this
// value. // value.
#define SERIAL_DELAY 24 #define SERIAL_DELAY 24

@ -3,16 +3,14 @@
#include <stdbool.h> #include <stdbool.h>
// /////////////////////////////////////// // /////////////////////////////////////////////////////////////////
// Need Soft Serial defines in config.h // Need Soft Serial defines in config.h
// /////////////////////////////////////// // /////////////////////////////////////////////////////////////////
// eg. // ex.
// #define SERIAL_PIN_DDR DDRD // /* Configuration of lower interface with the lower layer(hardware) of serial.c */
// #define SERIAL_PIN_PORT PORTD // #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
// #define SERIAL_PIN_INPUT PIND
// #define SERIAL_PIN_MASK _BV(PD0)
// #define SERIAL_PIN_INTERRUPT INT0_vect
// //
// /* Configuration of upper interface with the upper layer of serial.c */
// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 // #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
// #define SERIAL_MASTER_BUFFER_LENGTH 1 // #define SERIAL_MASTER_BUFFER_LENGTH 1

@ -1,11 +1,7 @@
/* serial.h backward compatibility */ /* serial.h backward compatibility */
#ifndef SERIAL_PIN_DDR #ifndef SOFT_SERIAL_PIN
#define SERIAL_PIN_DDR DDRD #define SOFT_SERIAL_PIN D0
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#define SERIAL_PIN_MASK _BV(PD0)
#define SERIAL_PIN_INTERRUPT INT0_vect
#endif #endif
#ifndef SERIAL_SLAVE_BUFFER_LENGTH #ifndef SERIAL_SLAVE_BUFFER_LENGTH

Loading…
Cancel
Save