📄 debug.c
字号:
/*******************************************************************************
OKM-BLDC-SERVO-MOTOR-10W
作者:Alan, 2008-5-3
最后修改:Alan,2008-5-3
芯片:ATMEGA88,
编译器:avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
版本说明:
V0.1 初版
*******************************************************************************/
#define _DEBUG_C_H_
#include "globals_var.h"
#if _DebugEnable_
void UART_Init(void)
{
vStateFlag |=(1<<fUartWREnd);
vUartWriteBuf.vTop=vUartWriteBuf.vPoint=0;
/* 设置波特率*/
UBRR0H = (unsigned char)(UART_baud>>8);
UBRR0L = (unsigned char)UART_baud;
/* 发送器使能, */
UCSR0B = (1<<TXEN0)|(1<<RXEN0);
/* 设置帧格式: 8 个数据位, 1 个停止位*/
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
}
void UART_Push_WR_Buf(unsigned char dat)
{
vUartWriteBuf.vFIFOBuf[vUartWriteBuf.vTop]=dat;
cli();
vUartWriteBuf.vTop=vUartWriteBuf.vTop+1;
if ( vUartWriteBuf.vTop == UARTBufSize )
{
vUartWriteBuf.vTop=0;
}
if ((vStateFlag & (1<<fUartWREnd)) != 0)
{
sei();
vUartWriteBuf.vPoint=vUartWriteBuf.vPoint+1;
if ( vUartWriteBuf.vPoint == UARTBufSize )
{
vUartWriteBuf.vPoint=0;
}
UDR0 = dat;
vStateFlag &=~(1<<fUartWREnd);
UCSR0B|=(1<<UDRIE0); //数据寄存器空中断打开
}
else
{
if (vUartWriteBuf.vTop==vUartWriteBuf.vPoint)
{
vUartWriteBuf.vTop=vUartWriteBuf.vTop-1;
if (vUartWriteBuf.vTop==0xff)
{vUartWriteBuf.vTop=UARTBufSize-1;}
}
sei();
}
}
void UART_putHex(uchar c)
{
UART_Push_WR_Buf('0');
UART_Push_WR_Buf('x');
UART_Push_WR_Buf(pgm_read_byte(&ASIIC_DATA[c>>4]));
UART_Push_WR_Buf(pgm_read_byte(&ASIIC_DATA[c&0x0f]));
UART_Push_WR_Buf(' ');
UART_Push_WR_Buf(' ');
}
SIGNAL(USART_UDRE_vect)
{
if (vUartWriteBuf.vTop!=vUartWriteBuf.vPoint)
{
UDR0=vUartWriteBuf.vFIFOBuf[vUartWriteBuf.vPoint];
vUartWriteBuf.vPoint=vUartWriteBuf.vPoint+1;
if ( vUartWriteBuf.vPoint == UARTBufSize )
{
vUartWriteBuf.vPoint=0;
}
}
else
{
vStateFlag |=(1<<fUartWREnd);
UCSR0B&=(~(1<<UDRIE0)); //数据寄存器空中断关闭
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -