2020年10月22日更新内容为
1.系统时钟:内部晶振32M,串口波特率9600,RC4->TX,RC3->RX,等
外部中断采用下降沿触发,DS3231的外部触发引脚采用电平中断,定时器2用于PWM
MCC生成的代码,自己做响应的更改和整合
2.外挂RTC和EEPROM的引脚定义
//==========定义DS3231接口===================
#define DS3231_SCL PORTAbits.RA1
#define DS3231_SDA PORTAbits.RA0
#define DS3231_SDA_TRIS TRISAbits.TRISA0
//=========定义AT24C512接口==================
#define AT24C512SCL PORTCbits.RC2
#define AT24C512_SDA PORTCbits.RC1
#define AT24C512_SDA_ TRIS TRISCbits.TRISC1
//主芯片的配置字+pps映射+
单片机时钟的截图
由于代码较多只选择具有代表性的进行截图上传
后续更新》》》》内容如下,设置DS3231定时时间,(暂定1min)一分钟时间到后触发引脚电平变化,并上传数据到串口
按键触发,系统记录时间,存储触发次数到EEPROM中,并通过串口上传到电脑端,借助USB转TTL,和串口调试助手,
更新代码截图,和输出结果
图1 图2
图5 图4
按键利用开发板上的RA5引脚,设置好寄存器,
初始值在截图1上可以看到是10;图二是按键触发后,中断处理函数,
图三是处理函数的具体实现;图4是结果输出,可以看到报文中第三个字节是次数(分别对应11,12 13,)紧接着次数后的是时间(年月日时分秒)0x16,报尾,报尾前是简单的cs校验
2020年11月23号更新内容主要为低功耗设置
根据PIC单片机使用心得,功耗的降低一靠硬件
电路的本身设计,二是对单片机进行低功耗设置,
主要从以下几个方面入手:
(1)关闭不用的外设
(2)不用的IO口设置为模拟输入
(3)数据手册上的ADC的电流相对来说较高,解决的办法需要用到的采集功能的时,使能ADC不用的时候关闭ADC的相关寄存器配置
(4)完成所有功能后采用休眠的方式sleep();
下面上传简单的测量方案
无休眠 休眠后电源指示灯还在
休眠后电源指示灯不在
休眠指令
从以上几张可以看出,功耗在一步步降低,现在的功耗主要来源于ADC采集,
降低功耗可以降低工作电压,和工作频率,我现在用的18系列的 (电池供电)功耗可以做到2ua,现在15324应用场景光伏供电
PIC这种5位数字命名的应该是新片子,功耗低
最后总结下:
16F324适合低成本的应用方案,而我这边主要是做低成本的产品,相对于现在的产品,用熟之后,不太想换厂家,总之这颗物料通过前面的测试满足我的要求,真正需要做低功耗,可能需要自己打板,设计电路。
microchip的产品性价比稍低,但是在工业现场应用比较皮实,对于使用过其他厂家的单片机,转到PIC上稍微有点不适应,比如配置字,中断入口等。
下面分享下自己开发pic系列程序的过程
1,配置字的选择,根据自己的需求选择相应的功能
2,配置字完成后,时钟选择,pic的时钟相对来说比较简单,相应外设功能的初始化话,比较新的单片机还有PMD寄存器,可以关闭外设,以节省功耗,这里有一点要注意,PMD相应外设关闭后重新打开,若要重新使用此功能,需重新初始化
3,让最小系统跑起来,测试定时器,串口(可以很好的测试出系统的时钟是否是自己设定的主频)
4,这个时候,完善外设实现的功能,
5,阅读Datasheet最后的电气性能,优化系统的功耗,可能有些场合不需要特别低的功耗,不极致,但仍要优化点,节能减排
6
写在最后的:感谢
电子发烧友和大联大提供的试用机会,本人文采有限,有些不能完美的表达出来,希望以后多多锻炼!
PIC的原厂技术支持很赞!直接可以电话联系哦
我是PIC的忠实粉丝
`