历史上的今天
返回首页

历史上的今天

今天是:2025年03月15日(星期六)

2020年03月15日 | PIC16模拟串口以及采样正弦波

2020-03-15 来源:eefocus

最近两周用了两个IC(PIC16系列与STM8S系列)做了个产品,首次接触,遇到些问题,总结如下:


1:PIC16模拟串口发送数据,一定要在中断服务函数中执行


static void interrupt SystemISR(void)

{

if(TMR0IE && TMR0IF)                   //32MHz  104us

{

  if(txCount) //检测数据是否发送完毕

  {

    TXD=(txData&0x01); //输出数据

    txData=(txData>>1); //移位数据

    --txCount;

  }

  else  //发送完毕后进行停止位发送

  {

    if(txFlag)

    {

    TXD=1;

    txFlag=false;

    }

    else 

    {

    TMR0IE=0;  //发送完毕后关闭定时器中断

    }

  } 

TMR0 = 0xcf; //初值

  TMR0IF=0;

}


//模拟串口发送一个byte

void emulatedUardSendChar(unsigned char data)

{

while(TMR0IE);//等待上一次数据发送完毕

TXD=0;   //发送起始位

TMR0 = 0xcf;  //初始值

TMR0IF = 0;   //清零定时器中断

TMR0IE = 1;   //定时器0中断使能

txData = data;  //转移数据到发送缓存

txCount = 8;  //预置需要发送的位个数(8位数据)

txFlag = true;  //数据发送完毕标志

}


2:ADC采样50HZ的正弦波


ADC时时采样,50HZ就是20ms一个周期,可以连续采样2个周期,40ms采样300次,找出其中最大值与最小值计算出有效值,这是不太精确的方式,暂时这样解决。


上述方法不是很精确,找到一种更精确的方法。


20ms一个周期内采样40个点,500us一次,对40个值平方求和再开方就能求出真实有效值,不只是对于正弦波,进而求出电压值。


3:STM8S FLASH大小只有8K,代码编译经常超出其大小。


其一:尽量少用库函数,直接写寄存器


其二:IAR都有其优化级别,选最高。


其三:代码尽量不要冗余。

推荐阅读

史海拾趣

ELESTA GmbH公司的发展小趣事

ELESTA GmbH的前身可以追溯到1952年ELESTA Elektrotechnik AG的成立。在成立初期,该公司就开始在电子领域进行一系列的创新和研发。到了1996年,ELESTA已经成功开发出光学传感器、测量和控制系统以及继电器等关键产品,这些产品奠定了公司在电子行业中的坚实基础。

Etco Inc公司的发展小趣事

自1947年成立以来,Etco Inc公司一直致力于电子连接技术的研发与创新。在20世纪70年代,公司成功研发出一款新型的高性能连接器,该产品凭借其卓越的性能和可靠性,迅速在汽车电子行业中占据了一席之地。这一技术突破不仅为Etco带来了可观的市场份额,还奠定了其在电子连接器领域的技术领先地位。

EZchip Technologies Ltd公司的发展小趣事

在激烈的市场竞争中,产品质量和客户服务是企业赢得客户信任的关键。EZchip一直秉承“质量第一、客户至上”的理念,注重产品的质量控制和客户服务体验。公司采用严格的生产流程和质量控制标准,确保每一件产品都符合高标准、高质量的要求。同时,EZchip还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些措施不仅提升了产品的竞争力,也赢得了客户的广泛赞誉和信任。

Dolphin Interconnect Solutions Asa公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,Dolphin Interconnect Solutions ASA面临着前所未有的挑战。为了应对这些挑战,公司积极调整战略方向,加大在人工智能、物联网等新兴领域的投入。同时,Dolphin还加强了与产业链上下游企业的合作,共同推动产业链的转型升级。这些努力使得Dolphin在激烈的市场竞争中保持了稳健的发展态势。

Geo Semiconductor Inc公司的发展小趣事
引入智能算法,如模糊控制、神经网络控制等,以实现更精准、更灵活的控制策略。
FutureWafer公司的发展小趣事
通过定期巡检、保养和更换易损件等措施,及时发现并处理潜在故障隐患。

问答坊 | AI 解惑

扫描和中断思想

由于每次键盘扫描都会浪费10ms的时间,所以,我想用中断(将按键的各行通过与门连接到中断口0上),但是怎样可以设计出既可以让CPU不去扫描按键,又能正确的处理按键按下时的程序呢?…

查看全部问答>

VHDL学习很有用的100例

不知道论坛里有没有人发过,全当交流交流了。…

查看全部问答>

在新一代智能家电中采用 FPGA 实现节能电机控制

家电是现代生活方式的核心。消费者希望家电产品不但 “智能”、“绿色”,当然还要价格合适。所有这些 需求都促使当今的家电设计人员推出真正的高技术产品。 多年以来,智能家电采用微控制器单元(MCU)和数字信号处理(DSP)模块等通用电子器件来管 ...…

查看全部问答>

wince下混音器编程mixer函数的一些问题

wince下希望通过程序控制录音的音量,使用mixer一组的函数,遇到了一些棘手的问题: 1,mixerGetNumDevs的返回值竟然是0,不解; 2,mixerOpen执行总是失败,返回值为MMSYSERR_BADDEVICEID; 我用的是EVC4.0,在wince5.0下运行。 请问大家是否 ...…

查看全部问答>

Wince + S3C2440休眠唤醒问题

1,我的Wince+2440休眠唤醒后系统运行明显变慢,直至渐渐死机,请各位大侠推测下可能是什么原因; 2,能否设置休眠唤醒源为多个?比如我是否能设置EXTINT0,EXTINT1均能把系统从休眠中唤醒; 3,电源管理项是如何取得空闲时间的,目前我设置1分钟 ...…

查看全部问答>

用模拟器开发,文件怎么读(100分求解)

        开发PDA上的程序,读文件的路径就应该是设备上的路径,PC上的路径就没用了。 模拟器上是没文件的,不知道怎么办了?     有人告诉我保持读文件路径与部署路径的一致就可以了。我照做了仍然不行, ...…

查看全部问答>

救命,USB-RNDIS编程

接到紧急任务:需要在pc上做一个和USB-RNDIS设备通讯的程序,由于小弟之前没接触过,不知如何下手,请各位大虾指条明路,最好有源码,万分感激!…

查看全部问答>

430F1611的DVCC引脚断了怎么办?

请问各位同行:MSP430F1611的DVCC引脚断了,可以接到旁边的P6.3引脚,从P6.3引脚给芯片供电吗?如果这样对芯片的正常工作有什么影响吗?望各位同行给新手指导啊,我感谢个位同行的回答,不管是否有用都很感谢你们发表意见!!…

查看全部问答>

能到M级以上开关频率mosfet的型号有什么啊 ?

想用耐压500v以上,耐流几十A的   频率1M以上 的mosfet有什么型号啊  能推荐几个么…

查看全部问答>

TI 最新版标准线性指南 下载

TI 指南囊括了各种标准模拟产品,其具有封装尺寸小、性价比高等优异特性, 能够全面满足客户广泛的应用需求。 新版标准线性指南包括:器件详情及相关参数表关键产品信息封装选项及定价 现在下载 …

查看全部问答>