历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | stm32中编码器模式读出“负数”的问题

2018-09-16 来源:eefocus

    最近在调试平衡小车,在网上找到的关于直流电机编码器的使用源码。查看stm32使用手册可以看到如下的配置,和图片。基本上程序也是这样去设置的相关寄存器的。

    如果TI1和TI2分别接电机的A相和B相的话,那么,当电机正转的时候,如下图计数器回想上计数,反转的时候会向下计数,注意了这个向下计数并不会出现负的值,依旧是从(0-ARR)计数。

          这种模式的好处:1.上升沿和下降沿都会计数,所以被软件4倍频了。2.当某一相有毛刺的时候,计数器会在硬件上停止计数。


    下面看网上找到的代码。

int Read_Encoder(u8 TIMX)

{

    int Encoder_TIM;    

   switch(TIMX)

{

     case 2:  Encoder_TIM= (short)TIM2 -> CNT;  TIM2 -> CNT=0;break;

case 3:  Encoder_TIM= (short)TIM3 -> CNT;  TIM3 -> CNT=0;break;

case 4:  Encoder_TIM= (short)TIM4 -> CNT;  TIM4 -> CNT=0;break;

default:  Encoder_TIM=0;

}

return Encoder_TIM;

}

        上面这样传进去要读的定时器,返回的是相关编码器的速度值。但是为什么,会是一个负数呢。计数器只能计数(0-ARR)


注意看上面使用了强制类型装换。把寄存器的值读出来了之后,转换成了short型(2字节,32位系统下),范围为(-32768-32767),此时当我们把计数器的初始值设置为0之后,如果出现反转,它就会从0开始向下计数(0,65535,65534,...)但是经过强制类型转换之后就变成了(0,-1,-2,...)。


    为什么65535会变成-1这是我不能理解的,此时我们回到short的表示范围(-32768-32767),也就是说当读出来的值为(32767,  32768, 32769,...,65535,65536,65537...)的时候会因为溢出而转换为


(32767,-32768,-32767,...,   -1,      ,0,       , 1)就这样不断地循环下去。所以我们的电机反转的时候读出的数就是反方向的速度值。而不必用65535去减去读出的值再加上负号才可以的到方便观察的值。只需要一个强制类型转换就可以了。


推荐阅读

史海拾趣

ABL Aluminum Components公司的发展小趣事

随着业务规模的不断扩大,ABL公司开始面临供应链管理的挑战。为了应对这一挑战,公司引入了先进的供应链管理系统,实现了从原材料采购、生产制造到产品销售的全程监控。同时,ABL公司还与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和成本控制。通过优化供应链管理,ABL公司提高了生产效率和市场响应速度,进一步巩固了市场地位。

Brite-Led Optoelectronics Inc公司的发展小趣事

Brite-Led Optoelectronics Inc公司自创立之初,便专注于LED技术的研发与应用。在一次关键的技术突破中,公司成功开发出一种高效、稳定的LED芯片,其亮度与寿命均远超当时市场上的同类产品。这一技术突破迅速为Brite-Led赢得了市场认可,奠定了其在LED行业的领先地位。随着该技术的不断迭代和完善,Brite-Led的产品逐渐广泛应用于照明、显示、背光等多个领域。

Advanced Linear Devices公司的发展小趣事

面对电子行业的快速变化和不断升级的技术需求,Brite-Led始终保持敏锐的洞察力和创新精神。公司不断投入研发资源,推出新产品和新技术,以满足市场的变化和客户的需求。同时,公司还注重人才培养和引进,建立了一支高素质的研发团队和管理团队。这些措施使得Brite-Led在激烈的市场竞争中始终保持领先地位,实现了持续发展。

以上是关于Brite-Led Optoelectronics Inc公司发展的5个虚构故事,虽然这些故事是基于虚构的,但它们可能反映了Brite-Led Optoelectronics Inc公司在实际发展中可能遇到的一些情况和挑战。

COILCRAFT公司的发展小趣事

多年来,COILCRAFT公司凭借其卓越的产品质量、创新能力和良好的服务赢得了广泛的赞誉。在电子行业中,COILCRAFT已经成为高性能磁性元件设计、制造和分销领域的知名品牌。许多知名企业都选择与其合作,共同推动电子行业的发展。同时,COILCRAFT还积极参与行业交流和合作,为推动行业的进步贡献自己的力量。

以上这些故事只是COILCRAFT公司发展历程中的一部分,它们共同展示了这家公司在电子行业中的成长与壮大。未来,随着科技的不断发展和市场需求的不断变化,COILCRAFT将继续保持创新精神,为客户提供更优质的产品和服务。

EICHHOFF公司的发展小趣事

品质一直是EICHHOFF公司发展的核心竞争力。为了确保产品质量的稳定性和可靠性,公司建立了一套完善的质量管理体系,并持续进行改进和优化。从原材料采购到生产加工、从产品检测到售后服务,每一个环节都严格按照质量管理体系的要求进行。

此外,EICHHOFF公司还积极引入国际先进的品质管理工具和方法,如六西格玛、精益生产等,以进一步提高产品质量和生产效率。这些努力使得EICHHOFF的产品在行业中享有很高的声誉和信誉。

Cornerstone Sensors公司的发展小趣事

Cornerstone Sensors公司成立于电子行业的蓬勃发展时期。创立初期,公司就明确了以传感器技术为核心的发展方向。公司聚集了一批优秀的工程师和科学家,致力于研发高精度、高稳定性的传感器产品。经过数年的技术积累和产品研发,Cornerstone Sensors逐渐在传感器领域崭露头角,其产品质量和技术水平得到了行业的广泛认可。

问答坊 | AI 解惑

电源模块N+k工作方式对电源系统可靠性的影响

电源模块N+k工作方式对电源系统可靠性的影响   影响高频开关电源系统可靠性的因素主要有电源模块的可靠性,高频开关电源模块的热备份数量对可靠性的改善等。由于电源系统的交直流配电使用的元、器件较少,分析时可认为其可靠度RP(t)=1。 1高频开 ...…

查看全部问答>

AD7705 中文1

本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 AD7705 中文1  …

查看全部问答>

TL494的占空比

初学者,正在研究电源。可是遇到很多问题,恳切想向各位请教! 如何通过硬件来控制TL494的输出PWM的占空比?…

查看全部问答>

磁盘的一直在转,而且磁道是完全对称的环形,怎么准确寻址扇区呢?

扇区的绝对地址是相对于第0个扇区来说的,可是磁盘的一直在转,而且磁道是完全对称的环形,没有任何一个扇区在物理上是特殊的,系统是怎么寻址磁盘的第0扇区的呢?…

查看全部问答>

请熟悉techwell tw6802/6805的朋友帮忙

我系一在校学生,导师弄了块 techwell tw6802(似乎又象6805)的视频采集卡,让我写个linux驱动。 在官方网站上没有一点与技术相关的资料, 真奇怪。 请有做过这方面的朋友 能否发点 与tw6802/tw6805相关的资料(比如datasheet,代码都可)给 ...…

查看全部问答>

急求大侠帮忙!!!!

晶振频率11.0592MHZ 源程序如下: 问题是 利用串口调试软件运行时,反复输入U后经采样转换数据不一致,即模拟信号转成数字量的值 跳变太大。。。请教专家!!! CS        BIT        P1.1   &n ...…

查看全部问答>

请大家给点建议:如何解决摄像头图像不同步的问题

    我用的Sensor是200万的,芯片输出为1600×1200,而我在应用层只采取了 1600×1130,我不确定是不是这样引起图像不同步的原因,还是别的什么原因。 …

查看全部问答>

学嵌入式系统需要掌握什么?目前对这个行业的需求怎么样?

本人是计算机专业的。由于现在快踏入大三的下学期了,大四下学期也就要找工作了,但我觉得现在自己学的东西还太片面了,也太广了。所以我想找一门自己感兴趣的专业方向作为自己这未来一年的奋斗目标,同时也为了将来的工作需要同,学一门精的课程。 ...…

查看全部问答>

关心STM32的ADC精度问题.

STM32具有12BIT ADC 确实很好,很强大!但也担心它的精度问题,听闻有3BIT线形误差。下面是AT91SAM7S64关于ADC误差的说明。…

查看全部问答>

网络版原理图==stm32核心板+w5100模块

http://www.stmsky.com/bbs/viewthread.php?tid=1446&extra=网络版原理图==stm32核心板+w5100模块可以直接联网 ping 192.168.1.2直接打开  显示  hello world…

查看全部问答>