gpt4 book ai didi

c - MSP430 printf 函数执行太慢

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:17 25 4
gpt4 key购买 nike

我尝试使用 Sky mote (MSP430 F1611 + CC2420) 以 100Hz 采样频率从 I2C 传感器读取数据并将数据写入串行端口 (USB)。我尝试了几次测试,发现总输出数据的采样频率为 78Hz。我使用 rtimer 来分析我的采样和打印代码,发现打印功能减慢了整个过程。以下是一些分析输出:

start 50628
15490,f074,20,3b8c,ffab,49,ffcf,fb70
end 51189
start 51293
15491,f0a8,fff4,3ba4,ffc6,24,ffd8,fb90
end 51880
start 51984
15492,f094,20,3b30,ffa7,5b,fff3,fb70
end 52544
start 52647
15493,f118,bc,3ce0,ffab,70,fffc,fb90
end 53207
start 53311
15494,f030,1b0,3b44,ffa9,1f7,1f,fb80
end 53871

rtimer 一秒钟有 4098*8 个刻度。在这里我们可以清楚地看到打印大约需要 560 个刻度(17 毫秒)。如果采样频率为100Hz,则打印功能应在10ms(327 ticks)内完成。

我使用的嵌入式系统是Contiki OS,波特率为115200(最大波特率)。传感器样本包含 112 个字节的有符号整数。

这是我的代码:

mpu_data_union samples;
int m=mpu_sample_all(&samples);
printf("start %u\n",RTIMER_NOW());
printf("%lu,%x,%x,%x,%x,%x,%x,%x\n",
counterxx,samples.data.accel_x,samples.data.accel_y,
samples.data.accel_z,samples.data.gyro_x,
samples.data.gyro_y,samples.data.gyro_z,
samples.data.temperature);
printf("end %u\n",RTIMER_NOW());

我希望一些以前有优化 printf 或 UART 经验的人可以提供一些建议。

谢谢!

最佳答案

我有一个类似的问题,printf 函数对于我使用的 MSP 变体来说太大了,所以我不得不编写我自己的 printf 函数版本,因为我不需要与格式字符串转换器。我写了一组小函数,以所需格式输出一个值,并将字符输出直接发送到 usart。

printf("%lu,%x,%x,%x,%x,%x,%x,%x\n",
counterxx,samples.data.accel_x,samples.data.accel_y,
samples.data.accel_z,samples.data.gyro_x,
samples.data.gyro_y,samples.data.gyro_z,
sample .数据.温度);

成为

Send_Long_Decimal( counterxx ) ; 
Send_Hex( samples.data.accel_x ) ;
Send_Hex( samples.data.accel_y ) ;
Send_Hex( samples.data.accel_z ) ;
Send_Hex( samples.data.gyro_x) ;
Send_Hex( samples.data.gyro_y ) ;
Send_Hex( samples.data.gyro_z ) ;
Send_Hex( samples.data.temperature ) ;
Send_Newline() ;

答案来自Morty建议使用非阻塞、中断驱动的串口实现。这是值得鼓励的,这样串行传输所花费的时间就不会超出您的可用处理时间。

查看您的日志中发送的数据,第一条记录的长度似乎约为 64 个字符。以 115kbaud 发送其中的 100 个将花费 0.5 多秒。然后您必须从 I2C 接口(interface)读取数据,并在剩余不到 0.5 秒的时间内执行一些数据处理/存储。

关于c - MSP430 printf 函数执行太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com