@ -67,11 +67,11 @@ void SoftUART_Init(void)
SoftUART_SetBaud ( 9600 ) ;
SoftUART_SetBaud ( 9600 ) ;
/* Setup reception timer compare ISR */
/* Setup reception timer compare ISR */
TIMSK1 = ( 1 < < ICIE1 ) ;
TIMSK1 = ( 1 < < OC1E1A ) ;
/* Setup transmission timer compare ISR and start the timer */
/* Setup transmission timer compare ISR and start the timer */
TIMSK3 = ( 1 < < ICIE3 ) ;
TIMSK3 = ( 1 < < OC1E3A ) ;
TCCR3B = ( ( 1 < < CS30 ) | ( 1 < < WGM3 3) | ( 1 < < WGM3 2) ) ;
TCCR3B = ( ( 1 < < CS30 ) | ( 1 < < WGM3 2) ) ;
}
}
/** ISR to detect the start of a bit being sent to the software UART. */
/** ISR to detect the start of a bit being sent to the software UART. */
@ -90,12 +90,12 @@ ISR(INT0_vect, ISR_BLOCK)
EIMSK = 0 ;
EIMSK = 0 ;
/* Start the reception timer */
/* Start the reception timer */
TCCR1B = ( ( 1 < < CS10 ) | ( 1 < < WGM1 3) | ( 1 < < WGM1 2) ) ;
TCCR1B = ( ( 1 < < CS10 ) | ( 1 < < WGM1 2) ) ;
}
}
}
}
/** ISR to manage the reception of bits to the software UART. */
/** ISR to manage the reception of bits to the software UART. */
ISR ( TIMER1_C APT _vect, ISR_BLOCK )
ISR ( TIMER1_C OMP A_vect, ISR_BLOCK )
{
{
/* Cache the current RX pin value for later checking */
/* Cache the current RX pin value for later checking */
uint8_t SRX_Cached = ( SRXPIN & ( 1 < < SRX ) ) ;
uint8_t SRX_Cached = ( SRXPIN & ( 1 < < SRX ) ) ;
@ -125,7 +125,7 @@ ISR(TIMER1_CAPT_vect, ISR_BLOCK)
}
}
/** ISR to manage the transmission of bits via the software UART. */
/** ISR to manage the transmission of bits via the software UART. */
ISR ( TIMER3_C APT _vect, ISR_BLOCK )
ISR ( TIMER3_C OMP A_vect, ISR_BLOCK )
{
{
/* Check if transmission has finished */
/* Check if transmission has finished */
if ( TX_BitsRemaining )
if ( TX_BitsRemaining )