“新年”是橘子,奥利维尔,周末,当然还有礼物。
您可能已经猜到了,我突然成为CANNY 3 Tiny微控制器的所有者。 没错,我并不是特别喜欢DIY电子产品,并且我上一次尝试将东西连接到控制器大约是七年前,当时我
使用Arduino克隆为欧芹做背光照明。 但是,美好的事物不会消失吗? 我们仍然必须看看这是哪种野兽。
因此,根据开发人员的网站,他们的产品被广泛使用,甚至安装在参加达喀尔拉力赛的KAMAZ中。 同时,它们的控制器的主要功能是编程时无需编写任何代码。 整个程序以框图形式开发。 作为一个远离DIY世界的人,我很感兴趣。
一切都会好起来的,但是有一个障碍。 去年,老实说,我想买一双Dakarovsky KAMAZ卡车,但在黑色星期五没有打折。 因此,我们必须以某种方式简单而优雅地摆脱这种局面。
在本文中,我们将把按钮和红色的食人鱼LED连接到控制器,然后对它们进行编程,以便通过按下按钮来打开和关闭LED。
想要加入我猖ramp的新年快乐吗? 那么,在猫之下,欢迎您。

顺便说一下,在哈布雷(Habré)上已经有
一篇关于CANNY控制器的
文章 ,但是首先是那里有另一个控制器,其次,从那时起,用于开发程序的软件已经过时了。 结果,我花了一个小时才弄清楚如何使控制器中的绿色LED闪烁。 这就是为什么我决定与您分享“遏制”控制器的尝试的部分原因。
部分原因是我有空的时候喜欢写Habr的书。在我们进行下一步之前,我认为警告读者是我的责任。 尽管本文以“教程”的形式提供,但我不是微电子学或编程专家。 为了节省您的时间,我只会分享我设法弄清楚的内容。
这是本文将要讨论的内容:
第一部分:打开包装并熟悉第二部分:连接电路第三部分:编程第四部分:结论第一部分:打开包装并熟悉
首先,必须对我们的文章英雄说至少几句话。 CANNY 3微型控制器是最小的CANNY控制器系列。 哥哥CANNY 3 tiny-CANNY 7和CANNY 5系列的控制器可以与汽车的CAN总线配合使用。 我们的弟弟,还有我的旧日古里汽车,对CAN总线一无所知,生活在和平中。
有关控制器的更多信息,请参见相应的
Wiki部分 。 开发人员在
论坛上也有一节,最后,我终于找到了如何配置控制器寄存器以进行输入和输出的部分。
但是,我们稍后将返回编程问题。 最后,让我们看看一个意想不到的礼物。

打开盒子,我感到一种短暂的温柔。 控制器真的很小。 原谅球迷原谅我的不当比较,但他几乎像“婴儿尤达”。

根据在线商店,控制器具有两个配置选项:不带端子块和线束,以及带它们的配置。 考虑到我在“焊接某些东西”方面的曲率,我很高兴获得带接线端子和线束的版本。
我将在扰流板下再隐藏一些控制器和线束的照片。
第二部分:连接电路
就像我说的,我们将一个LED连接到控制器(在我们的例子中是“食人鱼”),但是任何一个都是可能的(我只是没有另一个)。 我们将使用按钮控制LED。 操作算法如下:按下按钮且LED亮起,再次按下则熄灭。
让我们简要介绍一下本案例中重要的控制器的功能:
- 我们将通过microUSB充电器为控制器供电(在我的情况下为5V,1 A);
- 控制器具有6个可编程引脚,以及引脚“ +”和“-”;
- 可编程输出可以配置为“输入”或输出。
- 受控端子输出端的最大电流为100 mA;最大输出为100 mA。
- 结论有不同的模式,包括PWM,但今天我们不会深入。
我试图做到这一点,以便您可以理解我的简单想法,甚至让KiCad至少绘制一些草图。
老实说,我在这类事情上并不擅长,而且我是一生中第一次(或第二次)看到KiCad,因此,如果您发现错误,请务必告诉我,以便我解决。

如您所愿,我们从图中了解到我们将在项目中使用:控制器本身,面包板,80欧姆的限流电阻,类似于KLS7-TS6601-5.0-180的按钮和类似于BL-FL7600UEC的LED,但实际上您可以用指尖取而代之。
连接逻辑如下:
- 控制器的输出“-”连接到负总线。
- 输出“ 2”将充当我们的“加号”,将其连接到面包板上的相应总线;
- 结论如果按钮关闭电路(按下时),“ 1”将在输入端工作并接收信号;
- 输出“ 4”将由我们的LED供电,为方便起见,我将其连接到试验板上的另一个“ +”总线,但这不是必需的。
- 圣诞树是新年的属性,并以各种方式证明了本文的标题。
第三部分:编程
要对控制器进行编程,我们需要CannyLab开发环境,您可以从开发人员的站点下载它。 在撰写本文时,当前版本为1.41。 开发环境不需要安装,您只需要将存档解压缩到某个文件夹中即可。
在为电路编写代码之前,让我们确保所有内容对我们都有效。
就我而言,要做的第一件事是将系统软件写入控制器。
我们通过microUSB电缆将控制器连接到计算机。 就我而言,在Windows 10上,我不必单独安装任何驱动程序。
我们确保控制器已连接,如果未连接,请单击“连接”按钮(看起来像链中的两个链接)
接下来,您需要在“设备->系统软件->写入”地址处调用对话框,并选择适当的文件(在我的情况下为“ c3tinyv00108.ccx”)。 为了以防万一,我将在下面保留屏幕截图。

现在,您可以配置程序了。
该程序是通过将左侧的元素拖动到工作区的白色字段中,然后将这些元素连接在一起而形成的。
为了使内置LED在PWM模式下闪烁,我们需要3个常量,一个PWM信号生成器模块和一个写寄存器。
如图所示,我们将一切连接起来。

如果用LMB双击常量和寄存器的值,则可以设置它们。
这些常数的神秘值是什么?
- “ 3000”-3秒钟;
- “ 1500”-告诉我们,三秒钟的LED只会发光一个半;
- “ 1”-刚启动发电机。
为了长时间不搜索寄存器的期望值,请在“过滤器”窗口中输入“ LED”行我们将程序写入控制器存储器。

接下来,断开控制器与计算机的连接,并将导线切换为USB充电。
绿灯闪烁三秒钟,因此一切正常。

关于开发环境的几句话,首先,它在将图上载到控制器之前检查图中是否有错误,这意味着存在“防止傻瓜的保护”。 其次,如果单击“错误”形式的按钮,则将打开图表的仿真器,但在其他时间会更多。
让我们继续该电路的程序。
如图所示组装图。

为了长时间不查找寄存器和常量的名称,请与屏幕截图类似地使用过滤器。

简要解释这些块。
« / » - . . 2»
它将我们的输出2设置为提供+ 5V电源,类似于第四通道
由于通道2实际上用作“ + 5 V”,因此我们只需在其中写入常数“ 1”(我认为任何数字都可以大于零)。
注意:控制器输出端的电压取决于电源电压,并且可能取决于电源方式。但是这里的通道4提供+ 5V,然后它不提供,这取决于按下一个按钮。
默认情况下,通道1已配置为输入,不需要单独配置任何内容,我们使用以下块获取其输入值:
« . . 1»
然后我们进入逻辑否定块(“ Not”)。
需要“ Not”块,以便在默认情况下在打开电路时,我们的LED立即发光。 如果删除了该块,并且通道寄存器1直接连接到前沿检测器,则默认情况下LED将关闭。
当我们按下按钮时,前沿检测器被触发,直到我们决定再次按下它时,才会发出更多信号。
为了保存当前状态,使用了“ T”触发器。 如果将一个信号馈入输入“ T”,并将一个脉冲从检测器输出馈入输入“ C”,则我们的触发器将在输出处交替显示状态“ 0”和状态“ 1”。 正是我们需要的。
接下来,来自触发输出的信号进入通道4输出寄存器,后者又为LED供电。
这两个图表都可以从
GitHub下载。
第四部分:结论



下面的图片显示一切正常(我的手指仍然可见)。
在本文的开头,我提到了止血带,但是我懒得剥去止血带和锡,所以现在我使用了在Craftduino的实验中仍然得到的单独的电线。“那么跨平台呢?”-您问。 我试图通过Wine在Linux上运行开发环境,从而向控制器编写代码。 结果,开发环境开始了,但是控制器本身看不到计算机(也许您需要用Wine来“联想”它)。 因此,尚不可能立即讨论跨平台解决方案。
控制器的另一个缺点是与Arduino的某些“中国”假货相比,成本较高,但这在一定程度上被质量所抵消。 控制器很容易握在手中,并且所有物品都非常小心地装在盒子里。 控制器甚至跌落一次,但到目前为止一切正常。
是的,在控制器的评估中,我可能有点主观。 我很高兴看到该产品是国产产品,开发人员(即使只有一点儿)也参与了达喀尔拉力赛中KAMAZ的胜利。
总的来说,我对礼物很满意,编程的视觉风格对我来说很不寻常,但同时也有其优势。 我认为,即使是从苏联教科书中学习电子工程和计算机科学的人,也最了解寄存器,触发器,多路复用器等的人,都会最喜欢他。
UPD:朋友们,我有点落后,并且略微违反了Habr规则,因此我删除了指向控制器开发者网站的直接链接,以使该文章看起来不会做广告,也不会遵守规则。 我认为您可以轻松找到下载CannyLab开发环境的链接以及您自己关于KAMAZ的“证明”。