历史上的今天
返回首页

历史上的今天

今天是:2024年11月06日(星期三)

正在发生

2019年11月06日 | MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用

2019-11-06 来源:eefocus

比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序:


1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平


#include 

/*

 * 比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;         // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

// 以下步骤设置比较器B

  CBCTL0 |= CBIPEN + CBIPSEL_0;     // 启用CB0(P6.0),并将其引至正输入端

  CBCTL1 |= CBPWRMD_1;               // 正常电源模式

  CBCTL2 |= CBRSEL;                   // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_3+CBREFL_2;     // 梯形电阻电路禁用,产生2.0V内部共享电压

  CBCTL3 |= BIT0;                     // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                     // 打开比较器B

  __delay_cycles(75);               // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits);   // 进入LPM4

}


2.比较器B的中断使用

#include 

/*

 * 比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端

 * 内部参考电压发生器利用共享电压源产生1.5V参考电压,并且引至-输入端

 * 当CB0模拟信号电压高于1.5V时,拉高P1.0引脚,当CB0输入模拟信号电压低于1.5V时,拉低P1.0引脚

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;         // 关闭看门狗

  P1DIR |= BIT0;                       // 将P1.0设为输出

  CBCTL0 |= CBIPEN + CBIPSEL_0;     // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBPWRMD_1;               // 正常电源模式

  CBCTL2 |= CBRSEL;                   // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_3+CBREFL_1;     // 梯形电阻电路禁用,产生1.5V内部共享电压

  CBCTL3 |= BIT0;                     // 启用P6.0/CB0比较器功能

  __delay_cycles(75);               // 延迟以待参考电压稳定

  CBINT &= ~(CBIFG + CBIIFG);     // 清除比较器中断标志位

  CBINT  |= CBIE;                     // 使能比较器CBIFG上升沿中断(CBIES=0)

  CBCTL1 |= CBON;                     // 打开比较器B

  __bis_SR_register(LPM4_bits+GIE);// 进入LPM4

}

// Comp_B中断服务程序- 反转P1.0口状态

#pragma vector=COMP_B_VECTOR

__interrupt void Comp_B_ISR (void)

{

  CBCTL1 ^= CBIES;                   // 切换中断触发方式

  CBINT &= ~CBIFG;                   // 清除中断标志位

  P1OUT ^= 0x01;                     // 反转P1.0口状态

}


3.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

#include 

/*

 *比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

 *Vcc/2的参考电压,并且引至比较器-输入端,最终当CB0输入模拟信号电压高于Vcc/2时,CBOUT输出高电平,当CB0输入模拟信号低于Vcc/2时,CBOUT输出低电平

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

  CBCTL0 |= CBIPEN+CBIPSEL_0;   // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBMRVS;           // 利用CBOUT选择VREF0或VREF1作为内部参考电压

  CBCTL1 |= CBPWRMD_2;           // 超低功耗电源模式

  CBCTL2 |= CBRSEL;               // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_1+CBREF04;     // 利用梯形电阻电路产生1/2VCC参考电压

  CBCTL3 |= BIT0;                 // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                 // 打开比较器B

  __delay_cycles(75);           // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits); // 进入LPM4

}


4.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

#include 

/*

 *比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

 *Vcc*3/4和Vcc/4的参考电压,通过CBOUT输出进行控制引至比较器-输入端,最终当CB0输入模拟信号电压高于Vcc*3/4时,CBOUT输出高电平,当CB0输入模拟信号低于Vcc/4时,CBOUT输出低电平

 *该程序在MSP430F5336当中跑不出来,可能是由于不支持高速模式

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

  CBCTL0 |= CBIPEN + CBIPSEL_0;   // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBPWRMD_0;// 高速电源模式,当CBOUT为高时,内部参考电压选择VREF1,当CBOUT为低时,内部参考电压选择VREF0

  CBCTL2 |= CBRSEL;                 // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_1+CBREF13;       // VREF1设为1/4Vcc

  CBCTL2 |= CBREF04+CBREF03;       // VREF0设为3/4Vcc

  CBCTL3 |= BIT0;                   // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                   // 打开比较器B

  __delay_cycles(75);               // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits);   // 进入LPM4

  }


以上就是捕捉比较器的内容。

推荐阅读

史海拾趣

CHENMKO公司的发展小趣事

非常抱歉,由于CHENMKO并非一个我所熟知的电子行业中的具体公司名称,我无法直接为您提供关于其发展起来的5个相关故事。如果您提到的“CHENMKO”是一个虚构的或者不太知名的公司,那么相关的具体故事就需要您自己创作或者查找相关资料。

然而,我可以提供您一个电子行业公司发展的通用故事框架,您可以根据这个框架和您的具体需求来创作或寻找更多信息。

电子行业公司发展故事框架

  1. 创业初期
    • 描述公司的创始人和初创团队,他们是如何发现市场机会的。
    • 讲述公司初创时期的艰难和挑战,比如资金短缺、技术难题等。
    • 介绍公司早期产品的特点,以及如何在市场上获得初步认可。
  2. 技术创新与突破
    • 描述公司在某一技术领域取得的重大突破,如研发出新技术、新产品。
    • 分析这一技术创新如何帮助公司在市场上获得竞争优势。
    • 讲述技术创新过程中遇到的困难以及克服这些困难的过程。
  3. 市场拓展与合作
    • 描述公司如何逐步扩大市场份额,比如通过开拓新市场、拓展产品线等。
    • 介绍公司与其他企业或机构的合作案例,以及这些合作带来的好处。
    • 分析公司在市场拓展过程中面临的挑战和应对策略。
  4. 品牌建设与形象提升
    • 讲述公司如何通过品牌建设提升市场影响力,比如参加行业展会、举办发布会等。
    • 介绍公司如何塑造积极的品牌形象,如强调社会责任、环保理念等。
    • 分析品牌建设对公司长期发展的重要性。
  5. 未来发展与展望
    • 描述公司的未来发展规划,如继续技术创新、拓展国际市场等。
    • 分析行业发展趋势和市场竞争态势,以及公司如何应对这些挑战。
    • 展望公司的未来发展前景和可能面临的机遇与挑战。

请注意,以上框架是一个通用的模板,您可以根据CHENMKO公司的实际情况进行调整和修改。如果您需要更具体的信息或故事,建议您查找该公司的官方网站、新闻报道或行业分析报告等渠道获取相关资料。

Chauvin Arnoux公司的发展小趣事

在1905年,Chauvin Arnoux公司推出了带有曲柄电感的欧姆表,这一创新为电气测量领域带来了突破性的进展。随后,在1923年,公司进一步发展了这一技术,使得欧姆表的测量不再受到曲柄速度的影响,大大提高了测量的准确性和稳定性。这一系列的创新使得Chauvin Arnoux在电气测量领域确立了领先地位,为后续的发展奠定了坚实的基础。

Empro Technology Corp公司的发展小趣事

为了进一步提升市场竞争力,Empro Technology Corp开始实施国际化战略,积极开拓海外市场。公司设立了多个海外分支机构,与当地企业建立了合作关系,共同开拓市场。同时,公司还积极参加国际电子展等交流活动,与国际同行进行深入交流与合作。

请注意,以上故事均为虚构内容,不代表Empro Technology Corp公司的实际发展情况。如需了解该公司的真实信息,请查阅相关公开资料或联系公司官方渠道。

DPA Components International公司的发展小趣事

作为一家具有社会责任感的企业,DPA Components International公司始终关注社会公益事业。公司积极参与各种公益活动,如扶贫助学、环保行动等,为社会做出了积极贡献。此外,DPA还关注行业发展和社会进步,积极参与行业交流和合作,推动整个电子行业的健康发展。通过担当社会责任,DPA不仅提升了企业的社会形象,也为社会的进步和发展做出了积极贡献。

Anders DX公司的发展小趣事

在成功立足国内市场后,DPA Components International公司开始积极拓展国际市场。公司深入了解不同国家和地区的市场需求,针对性地调整产品策略和服务模式。通过参加国际展会、建立海外销售网络以及与国外企业合作,DPA逐渐打开了国际市场的大门。在国际市场上,DPA凭借其卓越的产品质量和专业的技术服务,赢得了众多客户的信任和支持,进一步提升了公司的品牌影响力和市场份额。

Fremont_Micro_Devices_USA公司的发展小趣事

DPA Components International公司自成立以来,一直将技术创新作为公司发展的核心动力。在电子行业的早期阶段,该公司就投入大量资源研发新型电子元件,这些元件以其高精度和稳定性迅速在市场上获得了认可。随着技术的不断进步,DPA不断推出具有创新性的产品,如智能传感器和高效能集成电路,这些产品不仅满足了客户对性能的需求,也推动了整个电子行业的发展。通过不断的技术创新,DPA Components International公司在市场上建立了良好的口碑,成为行业内的领军企业。

问答坊 | AI 解惑

求一基于单片机和LabVIEW制作的数据采集系统设计

内容:本系统由两部分组成,以MCS-51单片机作为下位机采集数据部分设计和 MCS-51与LabVIEW之间数据通讯部分设计。 要求: 1、查阅相关的文献资料,撰写开题报告并完成外文资料翻译。 2、熟练掌握掌握相关元器件的功能,并会加以运用。 3、熟练 ...…

查看全部问答>

关于单片机硬件抗干扰

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性? 一、下面的一些系统要特别注意抗电磁干扰: 1、微控制器时钟频率特别高,总线周期特别快的系统。 2、系统含有大功率,大电流驱动电路,如产生火花的继电器,大电流开关等。 ...…

查看全部问答>

求助:网页下载

我在evc的模拟器上下载网页,编程中用到套接字,代码如下: WSADATA  wsaData;   if(  WSAStartup(MAKEWORD(2,0),  &wsaData)   ? ?  LOBYTE(wsaData.wVersion)!=  2&n ...…

查看全部问答>

请教M2X 3.7KW,和EV1000故障!

松下M2X  3.7KW变频器的故障是,可以运行,但是运行一段时间后会跳L故障,请问是什么原因,哪里坏了? 艾默生EV1000  1.5KW变频器的故障是,同样可以运行,也是运行一段时间后跳009缺相故障,这两个时间都不固定,请各位高手指教! 两 ...…

查看全部问答>

ISP FLASH 擦除失败

按照周公的配置顺序开始擦除 因为Tiny M0没弄复位键 所以擦除时拔掉USB 然后上电 测试过串口可以收发 P0.1接地了 可是还是失败 …

查看全部问答>

2808编译时出现的ERROR请教

在build的时候出现这样的错误: >>   error: illegal relocation type 050002 found in section .debug_info, file             C:\\\\tidcs\\\\DMC\\\\c28\\\\v32x\\\\lib\\\\dmclib\\\\c ...…

查看全部问答>

DSP的归一化

 在DSP中如何对坐标数据进行归一化,有没有函数什么的呀 还有如何将DSP中的数据导出来 放在excel中…

查看全部问答>

“Vds-id”门级电压步步高

运行Vds-id DC ITM漏极[1]扫描电压的默认设置是0-4V,以100 mV为一个步长,同时门极电压有三级:1.5,2.0,2.5V(图1,图2)。当改变这些设置时,请注意,电压和步长的设置可以用于Vds-id-pulse测试的设置。 图1.    &nbs ...…

查看全部问答>

【设计工具】Xilinx 常见问题及答案

问:我在ISE4.1中,用fpga express verilog编译的某些文件,用modelsimxe只能前仿,不能后仿,不知 5.1i是否有改进? 问:和 5.1结合比较好的验证工具除了Modelsim外,PC机上可运行的有什么?  问:ISE在综合的时候,把很多中间信号、特别是组 ...…

查看全部问答>

[haner]第三周、M4在M3基础上的提升

  第三周:试用笔记:分别比较了浮点计算、电机控制、冬眠模式。   直接上附件吧。   视频1楼…

查看全部问答>