@ -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 )