mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-07-03 12:07:52 +00:00
reorganize telemetry code bash serial
This commit is contained in:
parent
8e0a105d2e
commit
46a4d5aa63
@ -880,98 +880,7 @@ uint16_t limit_channel_100(uint8_t ch)
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
#if defined(TELEMETRY)
|
|
||||||
|
|
||||||
void Serial_write(uint8_t data)
|
|
||||||
{
|
|
||||||
cli(); // disable global int
|
|
||||||
if(++tx_head>=TXBUFFER_SIZE)
|
|
||||||
tx_head=0;
|
|
||||||
tx_buff[tx_head]=data;
|
|
||||||
#ifdef XMEGA
|
|
||||||
USARTC0.CTRLA = (USARTC0.CTRLA & 0xFC) | 0x01 ;
|
|
||||||
#else
|
|
||||||
#if defined STM32_board
|
|
||||||
USART3_BASE->CR1 |= USART_CR1_TXEIE;
|
|
||||||
#else
|
|
||||||
UCSR0B |= (1<<UDRIE0);//enable UDRE interrupt
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
sei(); // enable global int
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void Mprotocol_serial_init()
|
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef XMEGA
|
|
||||||
|
|
||||||
PORTC.OUTSET = 0x08 ;
|
|
||||||
PORTC.DIRSET = 0x08 ;
|
|
||||||
|
|
||||||
USARTC0.BAUDCTRLA = 19 ;
|
|
||||||
USARTC0.BAUDCTRLB = 0 ;
|
|
||||||
|
|
||||||
USARTC0.CTRLB = 0x18 ;
|
|
||||||
USARTC0.CTRLA = (USARTC0.CTRLA & 0xCF) | 0x10 ;
|
|
||||||
USARTC0.CTRLC = 0x2B ;
|
|
||||||
USARTC0.DATA ;
|
|
||||||
#else
|
|
||||||
|
|
||||||
#if defined STM32_board
|
|
||||||
Serial1.begin(100000,SERIAL_8E2);//USART2
|
|
||||||
Serial2.begin(100000,SERIAL_8E2);//USART3
|
|
||||||
USART2_BASE->CR1 |= USART_CR1_PCE_BIT;
|
|
||||||
USART3_BASE->CR1 &= ~ USART_CR1_RE;//disable
|
|
||||||
USART2_BASE->CR1 &= ~ USART_CR1_TE;//disable transmit
|
|
||||||
#else
|
|
||||||
#include <util/setbaud.h>
|
|
||||||
UBRR0H = UBRRH_VALUE;
|
|
||||||
UBRR0L = UBRRL_VALUE;
|
|
||||||
UCSR0A = 0 ; // Clear X2 bit
|
|
||||||
//Set frame format to 8 data bits, even parity, 2 stop bits
|
|
||||||
UCSR0C = (1<<UPM01)|(1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);
|
|
||||||
while ( UCSR0A & (1 << RXC0) )//flush receive buffer
|
|
||||||
UDR0;
|
|
||||||
//enable reception and RC complete interrupt
|
|
||||||
UCSR0B = (1<<RXEN0)|(1<<RXCIE0);//rx enable and interrupt
|
|
||||||
#ifdef DEBUG_TX
|
|
||||||
TX_SET_OUTPUT;
|
|
||||||
#else
|
|
||||||
#ifndef STM32_board
|
|
||||||
UCSR0B |= (1<<TXEN0);//tx enable
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(TELEMETRY)
|
|
||||||
static void PPM_Telemetry_serial_init()
|
|
||||||
{
|
|
||||||
#ifdef XMEGA
|
|
||||||
USARTC0.BAUDCTRLA = 207 ;
|
|
||||||
USARTC0.BAUDCTRLB = 0 ;
|
|
||||||
|
|
||||||
USARTC0.CTRLB = 0x18 ;
|
|
||||||
USARTC0.CTRLA = (USARTC0.CTRLA & 0xCF) | 0x10 ;
|
|
||||||
USARTC0.CTRLC = 0x03 ;
|
|
||||||
#else
|
|
||||||
#if defined STM32_board
|
|
||||||
Serial1.begin(9600);
|
|
||||||
#else
|
|
||||||
//9600 bauds
|
|
||||||
UBRR0H = 0x00;
|
|
||||||
UBRR0L = 0x67;
|
|
||||||
UCSR0A = 0 ; // Clear X2 bit
|
|
||||||
//Set frame format to 8 data bits, none, 1 stop bit
|
|
||||||
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
|
|
||||||
UCSR0B = (1<<TXEN0);//tx enable
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Convert 32b id to rx_tx_addr
|
// Convert 32b id to rx_tx_addr
|
||||||
static void set_rx_tx_addr(uint32_t id)
|
static void set_rx_tx_addr(uint32_t id)
|
||||||
@ -1345,57 +1254,3 @@ void init()
|
|||||||
discard_frame=1; // Error encountered discard full frame...
|
discard_frame=1; // Error encountered discard full frame...
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TELEMETRY)
|
|
||||||
|
|
||||||
//Serial TX
|
|
||||||
#ifdef XMEGA
|
|
||||||
ISR(USARTC0_DRE_vect)
|
|
||||||
#else
|
|
||||||
#if defined STM32_board
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
void __irq_usart3()
|
|
||||||
#else
|
|
||||||
ISR(USART_UDRE_vect)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{ // Transmit interrupt
|
|
||||||
#if defined STM32_board
|
|
||||||
if(USART3_BASE->SR & USART_SR_TXE) {
|
|
||||||
#endif
|
|
||||||
if(tx_head!=tx_tail)
|
|
||||||
{
|
|
||||||
if(++tx_tail>=TXBUFFER_SIZE)//head
|
|
||||||
tx_tail=0;
|
|
||||||
#ifdef XMEGA
|
|
||||||
USARTC0.DATA = tx_buff[tx_tail] ;
|
|
||||||
#else
|
|
||||||
#if defined STM32_board
|
|
||||||
USART3_BASE->DR=tx_buff[tx_tail];//clears TXE bit
|
|
||||||
#else
|
|
||||||
UDR0=tx_buff[tx_tail];
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if (tx_tail == tx_head)
|
|
||||||
#ifdef XMEGA
|
|
||||||
USARTC0.CTRLA &= ~0x03 ;
|
|
||||||
#else
|
|
||||||
#if defined STM32_board
|
|
||||||
USART3_BASE->CR1 &= ~USART_CR1_TXEIE;//disable interrupt
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UCSR0B &= ~(1<<UDRIE0); // Check if all data is transmitted . if yes disable transmitter UDRE interrupt
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined STM32_board
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user