应广单片机(PADAUK) 微控制器的特点
分析应广单片机(PADAUK)芯片的模型范围,可以识别以下特征:
各种外壳中的微控制器,从SOT 23-6 u(PMS150,4个输入/输出端口)到SOP28(PFC460,到26个委托/输出端口),值得注意的是,对于同一微控制器,船体有各种版本;
程序的内存容量从512到4096个字,RAM从64到256字节的量;
时钟速度高达16 MHz(来自内部时钟发生器),大多数处理器命令在一个时钟中执行;
微控制器缺乏硬件接口(UART,I2C,SPI等),内置在IDE代码生成器中,以用软件实现它们;
有具有闪存(MPT)和一次可编程(OTP)的模型;
一些微控制器配备了所谓的“程序处理器阵列”(FPSPA),关于它是什么以及如何使用它,我们将在下面讨论。
制造商的官方网站有英文和中文所有控制器型号的文档。全功能的FPPA IDE开发环境可供下载(我们稍后将讨论安装并与之配合)。程序可以写在经典的汇编上,但制造商还提供了C语言的变体 - Mini.C,我认为这非常有趣。
为实验开发了调试费。微控制器PFC161的文档说,微控制器支持架构内编程模式。为此,使用了五条程序员线:ICPCK、LASPA、VDD、GND和ICVPP。它们分别连接到微控制器的引脚:PA3、PA6、VDD、GND 和 PA5。
符号“星”可以指电阻器和电容器。它们用于将程序信号的导线与外围电路隔离。电阻应约为10 kO,如果使用容量,则应约为220 pF。
使用电压限制编程(低伏编程),而:
- 不要在电压小于5.0 V的电压下连接VDD和GND稳定器,程序员本身为可编程MK供电,因此悬挂在饮食上的所有东西都不应消耗超过20mA;
- 不连接容量超过500μF的容量在VDD和GND之间;
- PA3、PA5 和 PA6 编程线不应用于为任何负载供电。
一般来说,这样的要求是相当可以理解的。以防万一添加一个DIP开关,将编程中使用的微控制器线与电路板的其余部分断开。
事实证明,这是一种绑带微控制器的方案:
XS5(IDC-6)连接器实际上用于连接到程序员。在板上还增加了一对用于负载切换的H桥(目标费用中的微控制器将控制双极步进器)。
这是一个如此美丽的模型:
这就是实施:
信号和电源路径,厚度为0.25毫米,仅用于测试LUT技术的能力。有趣的是,获得了微型接触指定(在印刷电路板的形式上很高)。起初我以为它们会在转移图纸或蚀刻时消失得无影无踪,但没有,保存!符号线的厚度为0.07毫米。
组装和检查调试板后,您可以继续创建项目并编写固件
FPPA IDE 中的第一个项目
如上所述,开发环境完全免费,可在制造商的官方网站上下载
下载并拆包存档后,它将拥有唯一的exe文件。我们开始它,并观看安装的惊人程序的工作,这不会问你绝对没有什么,但只会报告成功安装。几个图标将出现在桌子上。
FPPA IDE是开发环境。Writer 是与程序员一起工作的实用工具,它也可以从 IDE 获得。
启动IDE。最后一个项目或文件打开,如果我们第一次运行,应用程序注意也可以从顶部面板获得。以下是处理器命令上的文档,mini.C编程语言的描述,代码生成器的描述。
一切看起来熟悉和标准。在文件管理器的左侧,在编译器消息的底部,在代码编辑器窗口的中央部分。顶部面板上有一个工具包。
创建项目: 文件 / 新项目
我们设置项目名称,在指定地点将创建一个文件夹,其名称为项目。选择一个系列和一个微控制器模型。其余的设置还没有触及,我们稍后会处理。单击确定并查看生成的项目。
现在,您可以将我们的微控制器连接到前面板。由于我们将对内部程序进行编程,因此您需要一根连接调试板上的连接器和程序员前面板上的夹紧面板的导线。我们将制作另一个适配器,连接适当的引脚,在调试板上到程序化器的连接器。在程序员的屏幕上将有一个铭文“IC ready”,这意味着微控制器已准备好固件。
在"写入器"窗口中,按软件本身的自动程序图标或程序按钮。加载固件的程序将开始。之后,在屏幕上,我们将看到一个关于成功操作的消息。
现在,您可以断开程序员并连接调试板的电源。
事实是问题所在,我们的固件什么也不做。
Mini.C 上的编程
首先,我尝试实现一个简单的算法,使用位于PCB上的驱动程序来控制步进电机。通过点击其中一个按钮,它应该在给定的步骤上向一个方向旋转,通过按下另一个按钮 - 在相反的方向上采取相同数量的步骤。由于我在C上为大多数项目编写固件,因此对于这些控制器,我选择了Mini.C,希望它更容易习惯它。
关于这种语言和编译器的特性,该怎么说呢?的确,语法作为C语言。编译器不支持将参数转移到函数。此外,该函数不能返回值。但有迹象和全球变量。
这里的数据类型在名称上有些不同,但一般来说,它们的含义与经典的SI相同。不支持浮点计算。所有算术都只是整数。
开发环境不喜欢评论中的西里尔字母。不,你可以正式写评论。编译时,他不会给出一个错误。但是,出于某种原因,当保存文件并重新打开时,一些字符会更改为问号。好吧,这很好,但是!当你尝试执行编译器时,回收器会挂起,介质会飞出。我痛苦了很久,不明白是什么原因。错误是浮动的。也就是说,包含包含西里尔语注释的新创建文件可以是“重新组装”,并且没有重新打开。奇迹......
#include "extern.h"
// H桥引脚
#define AP 7
#define AN 5
#define BP 3
#define BN 6
// 电机工作模式
#define STOP 0
#define FORWRD 1
#define BACKWARD 2
#define DEADTIME 30
#define PHASE_DEL 3000
BYTE motorDirection = STOP;
BYTE stepperPhase[10];
WORD pntStart, pntEND, phaseCounter;
WORD delCounter;
WORD delValue = 0;
WORD stepCounter = 0;
void delay_tick (void) {
while(delValue > 0) {
delValue -= 1;
nop;
}
}
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/8, Init_RAM;
//电机步进相位
stepperPhase[1] = (0< stepperPhase[2] = (0< stepperPhase[3] = (0< stepperPhase[4] = (0< stepperPhase[5] = (0< stepperPhase[6] = (1< stepperPhase[7] = (1< stepperPhase[8] = (1<
// 之前的stepperPhase[phaseCounter]
// поэтому используем указатели
pntStart =&stepperPhase[0];
pntEND=&stepperPhase[9];
相位计数器 = pntStart+1;
删除计数器 = 1;
PA = 0b00000000; // AP强烈建议您在进行配置更改之前清除端口数据寄存器。
PAC = 0b11101000;
PB = 0b00000000;
PBC = 0b00000000;
同时(1)
{
// 按钮控制
如果(PA.4 == 0)
{
电机方向 = FORWRD;
步数计数器 = 50;
}
如果(PB.0 == 0)
{
电机方向=向后;
stepCounter = 50;
}
while(stepCounter > 0)
{
if(motorDirection == FORWRD)
{
phaseCounter += 1;
delCounter += 1;
}
else if(motorDirection == BACKWARD)
{
phaseCounter -= 1;
delCounter -=1;
}
// 相位控制
if(phaseCounter == pntStart)
{
phaseCounter = pntEND - 1;
}
else if(phaseCounter == pntEND)
{
phaseCounter = pntStart + 1;
}
// 延时控制
if(delCounter == 0)
{
delCounter = 2;
}
else if(delCounter == 3)
{
delCounter = 1;
}
// 当前步骤在引脚上发送
PA = (PA & 0b00010111) | (*相位计数器);
/* 为避免使PA.4数据寄存器的值混乱,
* 首先阅读内容,
* 应用掩码,然后才插入当前引擎阶段
*/
delValue = PHASE_DEL;
if(delCounter == 1)
{
delValue = 死区时间;
}
延迟滴答();
/* 是的,这里可以不用手写功能,
* 只需使用命令 .DELAY 4000
*(同样不能传递变量),
* 但我想知道它是如何工作的
*/
步数计数器 -=1;
}
// 禁用步进器
电机方向=停止;
PA = (PA & 0b00010111);
}
}
void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{ // T16 触发
// 用户可以添加代码
Intrq.T16 = 0;
//...
}
popaf;
}
结论
最后能说什么。在遇到应广单片机(PADAUK)生态系统后,我留下了愉快的印象。以低成本的微控制器 - 不是那么糟糕的事情。如果我们与其他8个金库微控制器(如Tiny13或Tiny10或PIC10)进行比较,这些微控制器在更广泛的方面是无与伦比的,那么PFC161在性能上都不逊色于这些同志,也不逊于这些同志的程序的内存量,也不逊色于外围的丰富性。但它在价格上获胜,甚至具有可重写内存的模型。此外,源代码可以很容易地在PMS152下移植(带有OTP内存),基于它的产品已经可以复制(前提是您不需要特定的外围,例如触摸按钮控制器)。
当然,也有特点。我得买一个专有的程序员。好,或者收集自己的,好是一个开放的项目。开发环境和Mini.C编译器,当然,具有...
很快,我将尝试将我的项目转移到这些微控制器上,我将看到这将会发生什么,并分享工作的结果
如需更详细的电路原理图或代码示例, 若对以上说明有不清楚之处或仍有其他疑问 请与 逐高电子技术方案开发部 sales11@zicoic.com 0755-88364040 联络 获取官方开发包。