|  |  | @ -199,7 +199,6 @@ ISR(UART_RECEIVE_INTERRUPT) | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | //TODO
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | ISR(UART_TRANSMIT_INTERRUPT) |  |  |  | ISR(UART_TRANSMIT_INTERRUPT) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	BusState&=~(1<<TransmitRequested); |  |  |  | 	BusState&=~(1<<TransmitRequested); | 
			
		
	
	
		
		
			
				
					|  |  | @ -207,7 +206,11 @@ ISR(UART_TRANSMIT_INTERRUPT) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	UART_DATA=rxbuffer[DataPos]; |  |  |  | 	UART_DATA=rxbuffer[DataPos]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	DataPos++; |  |  |  | 	DataPos++; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (DataPos==(PacketTopIndex+1)) { |  |  |  | 	if (DataPos==(PacketTopIndex+1)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #ifndef __AVR_ATxmega32A4__ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		UART_CONTROL&=~(1<<UART_UDRIE); |  |  |  | 		UART_CONTROL&=~(1<<UART_UDRIE); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         USARTD0_CTRLA &= ~(USART_DREINTLVL_gm); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -222,6 +225,7 @@ ISR(UART_TRANSMIT_COMPLETE_INTERRUPT) | 
			
		
	
		
		
			
				
					
					|  |  |  | //TODO
 |  |  |  | //TODO
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void modbusInit(void) |  |  |  | void modbusInit(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #ifndef __AVR_ATxmega32A4__ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	UBRRH = (unsigned char)((UBRR) >> 8); |  |  |  | 	UBRRH = (unsigned char)((UBRR) >> 8); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	UBRRL = (unsigned char) UBRR; |  |  |  | 	UBRRL = (unsigned char) UBRR; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	UART_STATUS = (1<<U2X); //double speed mode.
 |  |  |  | 	UART_STATUS = (1<<U2X); //double speed mode.
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -236,6 +240,13 @@ void modbusInit(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	transceiver_rxen(); |  |  |  | 	transceiver_rxen(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	#endif |  |  |  | 	#endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 	BusState=(1<<TimerActive); |  |  |  | 	BusState=(1<<TimerActive); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #elif | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //BRR
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //RX, TX enable
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //Interrupt enable (levels)
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //Physical type
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //Busstate
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* @brief: Sends a response.
 |  |  |  | /* @brief: Sends a response.
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -243,7 +254,6 @@ void modbusInit(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | *         Arguments: - packtop: Position of the last byte containing data. |  |  |  | *         Arguments: - packtop: Position of the last byte containing data. | 
			
		
	
		
		
			
				
					
					|  |  |  | *                               modbusSendException is a good usage example. |  |  |  | *                               modbusSendException is a good usage example. | 
			
		
	
		
		
			
				
					
					|  |  |  | */ |  |  |  | */ | 
			
		
	
		
		
			
				
					
					|  |  |  | //TODO
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | void modbusSendMessage(unsigned char packtop) |  |  |  | void modbusSendMessage(unsigned char packtop) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	PacketTopIndex=packtop+2; |  |  |  | 	PacketTopIndex=packtop+2; | 
			
		
	
	
		
		
			
				
					|  |  | @ -253,7 +263,13 @@ void modbusSendMessage(unsigned char packtop) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	#if PHYSICAL_TYPE == 485 |  |  |  | 	#if PHYSICAL_TYPE == 485 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	transceiver_txen(); |  |  |  | 	transceiver_txen(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	#endif |  |  |  | 	#endif | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #ifndef __AVR_ATxmega32A4__ | 
			
		
	
		
		
			
				
					
					|  |  |  |     UART_CONTROL|=(1<<UART_UDRIE); |  |  |  |     UART_CONTROL|=(1<<UART_UDRIE); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     USARTD0_CTRLA |= USART_DREINTLVL_HI_gc; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	BusState&=~(1<<ReceiveCompleted); |  |  |  | 	BusState&=~(1<<ReceiveCompleted); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |