历史上的今天
今天是: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都有其优化级别,选最高。
其三:代码尽量不要冗余。
史海拾趣
|
家电是现代生活方式的核心。消费者希望家电产品不但 “智能”、“绿色”,当然还要价格合适。所有这些 需求都促使当今的家电设计人员推出真正的高技术产品。 多年以来,智能家电采用微控制器单元(MCU)和数字信号处理(DSP)模块等通用电子器件来管 ...… 查看全部问答> |
|
wince下希望通过程序控制录音的音量,使用mixer一组的函数,遇到了一些棘手的问题: 1,mixerGetNumDevs的返回值竟然是0,不解; 2,mixerOpen执行总是失败,返回值为MMSYSERR_BADDEVICEID; 我用的是EVC4.0,在wince5.0下运行。 请问大家是否 ...… 查看全部问答> |
|
1,我的Wince+2440休眠唤醒后系统运行明显变慢,直至渐渐死机,请各位大侠推测下可能是什么原因; 2,能否设置休眠唤醒源为多个?比如我是否能设置EXTINT0,EXTINT1均能把系统从休眠中唤醒; 3,电源管理项是如何取得空闲时间的,目前我设置1分钟 ...… 查看全部问答> |
|
开发PDA上的程序,读文件的路径就应该是设备上的路径,PC上的路径就没用了。 模拟器上是没文件的,不知道怎么办了? 有人告诉我保持读文件路径与部署路径的一致就可以了。我照做了仍然不行, ...… 查看全部问答> |
|
请问各位同行:MSP430F1611的DVCC引脚断了,可以接到旁边的P6.3引脚,从P6.3引脚给芯片供电吗?如果这样对芯片的正常工作有什么影响吗?望各位同行给新手指导啊,我感谢个位同行的回答,不管是否有用都很感谢你们发表意见!!… 查看全部问答> |
|
TI 指南囊括了各种标准模拟产品,其具有封装尺寸小、性价比高等优异特性, 能够全面满足客户广泛的应用需求。 新版标准线性指南包括:器件详情及相关参数表关键产品信息封装选项及定价 现在下载 … 查看全部问答> |




