DYNAMIXEL
RX-28
}
/*
Print value of Baud Rate.
/*
*/
TXD81() send data to USART 1.
void PrintBaudrate(void)
*/
{
void TxD81(byte bTxdData)
TxDString("\r\n
RS232:");TxD32Dec((16000000L/8L)/((long)1
L) ); TxDString(" BPS,");
{
while(!TXD1_READY);
TXD1_DATA = bTxdData;
TxDString(" RS485:");TxD32Dec((16000000L/8L)/((long)1L) );
TxDString(" BPS");
}
}
/*
TXD32Dex() change data to decimal number system
*/
/*Hardware Dependent Item*/
void TxD32Dec(long lLong)
#define TXD1_READY
bit_is_set(UCSR1A,5)
//(UCSR1A_Bit5)
{
byte bCount, bPrinted;
#define TXD1_DATA
(UDR1)
long lTmp,lDigit;
#define RXD1_READY
bit_is_set(UCSR1A,7)
bPrinted = 0;
#define RXD1_DATA
(UDR1)
if(lLong < 0)
{
#define TXD0_READY
bit_is_set(UCSR0A,5)
lLong = -lLong;
#define TXD0_DATA
(UDR0)
TxD8('-');
#define RXD0_READY
bit_is_set(UCSR0A,7)
}
#define RXD0_DATA
(UDR0)
lDigit = 1000000000L;
for(bCount = 0; bCount < 9; +)
/*
{
SerialInitialize() set Serial Port to initial state.
lTmp = (byte)(lLong/lDigit);
Vide Mega128 Data sheet about Setting bit of register.
if(lTmp)
SerialInitialize() needs port, Baud rate, Interrupt value.
{
TxD8(((byte)lTmp)+'0');
*/
bPrinted = 1;
void SerialInitialize(byte bPort, byte bBaudrate, byte bInterrupt)
}
{
else if(bPrinted) TxD8(((byte)lTmp)+'0');
if(bPort == SERIAL_PORT0)
lLong -= ((long)lTmp)*lDigit;
{
lDigit = lDigit/10;
UBRR0H = 0; UBRR0L = bBaudrate;
}
UCSR0A = 0x02; UCSR0B = 0x18;
lTmp = (byte)(lLong/lDigit);
if(bInterrupt&RX_INTERRUPT) sbi(UCSR0B,7); // RxD interrupt enable
/*if(lTmp)*/ TxD8(((byte)lTmp)+'0');
UCSR0C = 0x06; UDR0 = 0xFF;
}
sbi(UCSR0A,6);//SET_TXD0_FINISH; // Note. set 1, then 0 is read
}
/*
else if(bPort == SERIAL_PORT1)
TxDString() prints data in ACSII code.
{
*/
UBRR1H = 0; UBRR1L = bBaudrate;
void TxDString(byte *bData)
UCSR1A = 0x02; UCSR1B = 0x18;
{
if(bInterrupt&RX_INTERRUPT) sbi(UCSR1B,7); // RxD interrupt enable
while(*bData)
UCSR1C = 0x06; UDR1 = 0xFF;
{
sbi(UCSR1A,6);//SET_TXD1_FINISH; // Note. set 1, then 0 is read
TxD8(*bData++);
}
}
}
}
/*
/*
TxD8Hex() print data seperatly.
RxD81() read data from UART1.
ex> 0x1a -> '1' 'a'.
RxD81() return Read data.
*/
*/
void TxD8Hex(byte bSentData)
byte RxD81(void)
{
{
byte bTmp;
while(!RXD1_READY);
return(RXD1_DATA);
bTmp =((byte)(bSentData>>4)&0x0f) + (byte)'0';
}
if(bTmp > '9') bTmp += 7;
TxD8(bTmp);
/*
bTmp =(byte)(bSentData & 0x0f) + (byte)'0';
SIGNAL() UART0 Rx Interrupt - write data to buffer
if(bTmp > '9') bTmp += 7;
*/
TxD8(bTmp);
SIGNAL (SIG_UART0_RECV)
}
{
gbpRxInterruptBuffer[(gbRxBufferWrite+)] = RXD0_DATA;
/*
}
TxD80() send data to USART 0.
*/
void TxD80(byte bTxdData)
{
while(!TXD0_READY);
TXD0_DATA = bTxdData;
36