三个月的时间内,除了大致弄清楚了LED电灯、闪烁,SWITCH按键动作和防抖动处理外,我就停滞不前了。
我在工作日报中记录到,从2016年9月22日开始,串口阵列单元学习,我尽可能查阅了RENESAS的英文相关文档和例程,但到今天2016年10月26日,也就是在一个月内仍然不能理解UART串口通信,无法写出一句处理代码,我不能理解自动生成的那些串口发送接受的代码,似乎对于时钟什么的都完全没有理解。
我想通过杨旭教我几个课程,也许结合什么代码讲解会更好,结合实际的开发环境更是必需的,但这似乎又不是我愿意接受的方式。我还是希望自己把问题搞定。
于是今天早上,我在RENESAS管网上搜索中文“串口通信”、“时钟”,然后我发现了“LET′S TRY“嵌入式编程” 单片机入门(2) LET′S TRY“嵌入式编程” 单片机入门(2)”,以及RL78 Clock Generator (Chinese)。RENESAS E-LEARNING我知道很好的学习材料,可是一直没有使用,而LET′S TRY“嵌入式编程” 单片机入门(1)系列似乎是我必须经历的过程了,慢也许是慢了点,领导可能也是希望那种快餐式的思维,但现实总是狠狠地教训那些朝秦暮楚、欲速不达之流,只有坚持和重复才是最终制胜的法宝。
单片机的基本构成和工作原理、以及外围功能电路,然后,挑战一个实际单片机的运行。######
单片机是控制电子产品的大脑
其实,原来有这样一个学习的地方。这里是RENESAS工程师学校。
单片机的外围功能电路######
单片机是控制电子产品的大脑,大脑里面的记忆单元保存了处事方法(程序),这些方法都是胎教、学前、上学、工作中逐步学习得到的,客观环境(外围设备)可以教会大脑处理方法,或者说大脑可以自主学习,这样的能力与生俱在,但是机器想要学习,那必须给训练它学习方法。
先来考虑一下外围功能,延伸到外围的功能都必须通过硬件电路来实现。
动力部分,电源电路,人体来讲的话,动力来源于气血、心肺、肠胃。
“总指挥”―振荡电路
正如数字电路入门③中所讲的那样,时序电路是按时钟信号(CK)的上升沿(信号从L→H的变化)或下降沿(信号从H→L的变化)同步工作的。单片机是由时序电路构成的,所以,要在外部连接一个振荡电路提供时钟信号。象这样从单片机的外部输入的时钟信号称为“外部时钟信号”。
图3是单片机(RL78/G14)接连一个振荡电路的例子。晶体振荡器被连接在X1和X2之间。从图上可以看出一个外部时钟信号可以驱动单片机内部中的2个时钟振荡器。
主时钟振荡器主要用作CPU的工作时钟
子时钟振荡器主要用作外围电路和实时时钟的工作时钟
-
PWM(Pulse Width Modulation:脉宽调制
伺服马达控制,单片机定期发送不同需求的“H”输出时间的脉冲。
- A/D转换
在A/D转换中,以固定的时间间隔(分辨率)将模拟信号进行分割“①采样”,接着将所分割的信号大小捕捉为数值进行“②量化”,然后将所读取的数值进行“③符号化”(图2)。也就是说,以每秒10次(10Hz)以及1024等级(10bit)来读取模拟输入信号,并转换为二进制数(数字数值)。
周期(帧)的长度规定为16~23ms。脉宽最大为2.1ms,最小为0.9ms(图4)。当此帧的“H”电平为1.5ms时,伺服马达保持在中间的位置(图5)。要顺时针旋转60度时,将“H”电平减到0.9ms;要逆时针旋转60度时,将“H”电平置为2.1ms。
通过上述内容我们知道了在进行伺服马达的控制时需要在固定周期内输出所需宽度的脉冲的“时间”概念,单位是ms(=msec),即1/1000秒单位。为了以如此细小的时间单位来精确地实现控制,GR-SAKURA的单片机内置了高性能的定时器功能。
目前虽然还不知道心拍数传感器输出的是什么样的信号,也没有决定判断心拍的方法。但是请记住:需要通过如此细小的时间和规定来控制输入(心拍)和输出(伺服控制脉宽)。
- 电子制作分硬件制作和软件编程
首先,进行编程准备。编程听起来似乎是一项非常辛苦的工作,但是只要使用GR-SAKURA,即使没有专业知识也没问题。由于有编程的云端环境,所以大家能在Web浏览器上轻而易举地编程。
- initializes the CPU
(1) CPU initialization*
Sets up the peripheral I/O redirection function.
Sets up the I/O ports.
Sets up the CPU clock.