This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
/*
* USER_TIMER.c
*
*创建日期:2013。 3.27.
*作者:mcssol
*
#include "user_timer.h"
extern unsigned int upcounter;
extern unsigned int 距离;
extern void ReadSonar();
空 Init_timer_A (空)
{
/*TRIGGER 引脚设置(P1.3)*/
P1DIR |= 0x08;
P1OUT &=~(0x08);
/*echo 引脚设置(P4.0)*/
P4DIR &=~(0x01);
P4SEL |= 0x01;
TA0CTL = tassel_1 + MC_1;
TA0CCTL0 = CCIE;
TA0CCR0 = 327;
TB0CTL = TBSSEL_1 + MC_1;// ACLK、upcount_mode、清除 TAR
TB0CCTL0 = CM_3 + SCS + CCIS_1 + CAP + CCIE;
}
#pragma vector=TIMER0_A0_VECTOR
_interrupt void TIMER0_A0_ISR (void)
{
ReadSonar();
IF (CCIFG&TB0CCTL0)
{
upcounter=0;
UART_A1_msg ("upcounter:");
UART_A1_Xmit ((upcounter/100)%10+'0');
UART_A1_Xmit ((upcounter/10)%10+'0');
UART_A1_Xmit (upcounter%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
}
其他
{
upcounter++;
UART_A1_msg ("upcounter:");
UART_A1_Xmit ((upcounter/100)%10+'0');
UART_A1_Xmit ((upcounter/10)%10+'0');
UART_A1_Xmit (upcounter%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
距离=(upcounter*1000)/58;
UART_A1_msg ("距离(厘米):");
UART_A1_Xmit ((距离/100)%10+'0');
UART_A1_Xmit ((距离/10)%10+'0');
UART_A1_Xmit (距离%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
}
}
上述代码旨在用于接收超声波传感器的值并使用计时器捕获模式测量距离。 Timer A 在10ms 内以时间间隔进行计数、而 Timer B 正在尝试捕获和计算距离。 但是、在索具边缘将向上计数器初始化为0、当它成为下降沿时、向上计数器将停止、并且不会尝试计算到该值的距离。 请解决此问题。
器件型号:MSP430F5438A
工具/软件:Code Composer Studio
#include "user_timer.h"
extern unsigned int upcounter;
extern unsigned int 距离;
extern void ReadSonar();
空 Init_timer_A (空)
{
/*TRIGGER 引脚设置(P1.3)*/
P1DIR |= 0x08;
P1OUT &=~(0x08);
/*echo 引脚设置(P4.0)*/
P4DIR &=~(0x01);
P4SEL |= 0x01;
TA0CTL = tassel_1 + MC_1;
TA0CCTL0 = CCIE;
TA0CCR0 = 327;
TB0CTL = TBSSEL_1 + MC_1;// ACLK、upcount_mode、清除 TAR
TB0CCTL0 = CM_3 + SCS + CCIS_1 + CAP + CCIE;
}
#pragma vector=TIMER0_A0_VECTOR
_interrupt void TIMER0_A0_ISR (void)
{
ReadSonar();
IF (CCIFG&TB0CCTL0)
{
upcounter=0;
UART_A1_msg ("upcounter:");
UART_A1_Xmit ((upcounter/100)%10+'0');
UART_A1_Xmit ((upcounter/10)%10+'0');
UART_A1_Xmit (upcounter%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
}
其他
{
upcounter++;
UART_A1_msg ("upcounter:");
UART_A1_Xmit ((upcounter/100)%10+'0');
UART_A1_Xmit ((upcounter/10)%10+'0');
UART_A1_Xmit (upcounter%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
距离=(upcounter*1000)/58;
UART_A1_msg ("距离(厘米):");
UART_A1_Xmit ((距离/100)%10+'0');
UART_A1_Xmit ((距离/10)%10+'0');
UART_A1_Xmit (距离%10+'0');
UART_A1_xmit ('\n');
UART_A1_xmit ('\r\n');
}
上述代码旨在用于接收超声波传感器的值并使用计时器捕获模式测量距离。 Timer A 在10ms 内以时间间隔进行计数、而 Timer B 正在尝试捕获和计算距离。 但是、在索具边缘将向上计数器初始化为0、当它成为下降沿时、向上计数器将停止、并且不会尝试计算到该值的距离。 请解决此问题。
我很清楚答案。 但是、UART 确认它在串行通信中正常工作、但器件存在问题、需要确认从传感器接收到值并进行捕获的时刻。 换句话说、在上面的代码中、TB0CCTL0 ==我用 CCI 配置了捕捉代码、但是它不能正常运行。 我怀疑我有传感器故障、但它适用于 Addoino。 因此、我认为我知道表示 R监测 捕获时刻的语法表达式以及下降捕获时刻的语法。 如果有任何想法、请告诉我。