Robotis RX-28 Automobile Electronics User Manual


 
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)UBRR1L+1
L) ); TxDString(" BPS,");
{
while(!TXD1_READY);
TXD1_DATA = bTxdData;
TxDString(" RS485:");TxD32Dec((16000000L/8L)/((long)UBRR0L+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; bCount++)
/* {
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[(gbRxBufferWritePointer++)] = RXD0_DATA;
/*
}
TxD80() send data to USART 0.
*/
void TxD80(byte bTxdData)
{
while(!TXD0_READY);
TXD0_DATA = bTxdData;
36