2015-11-03 84 views
2

我认为这是之前可能已经解决的问题,如果我有适当的数学词汇,我可能只是谷歌它。我正在编写一个应用程序,为Arduino等微控制器生成代码,此过程的一部分将传感器等设备所需的连接映射到微控制器本身。映射连接算法

问题并非所有的微控制器上的连接都是同样的能力,有的只能做数字IO,有的可以做数字IO +模拟输出,有的可以做数字IO +模拟,有的可以做数字和模拟IO。因此,如果例如我要用完纯数字IO连接并需要更多,我仍然可以使用例如数字IO +模拟输入引脚。但如果这是引脚中唯一的数字IO +模拟,然后我真的需要另一个连接的功能,那么我需要将它移动到不同类型的引脚。

所以基本上我需要一个算法,可以创建这种映射,如果一个是可能的。这个问题有点像孩子们玩造型块和相应洞的游戏,有些形状可以放在多个洞中,有些是不可以的,你能想出如果你能把所有给定的块放入洞中吗?

+0

看起来你对这种情况提出了满意的答案,但总的来说,你需要的Google术语是“作业问题”。 –

回答

0

好吧,它没有我想象的那么糟糕,我自己解决了它。

因此,我们有四类功能(DIO + AIO,DIO + AI,DIO + AO,DIO只)

1)指定的任何要求为功能最全引脚(DIO + AIO)连接,如果那里有不够的,它不会工作

2)尽可能多的请求连接分配给只提供所需功能的引脚,最终会有3组溢出。 (第四个溢出是失败)

3)AI连接不能使用AO引脚,反之亦然,所以它们都在竞争自由AIO引脚,如果有更多溢出AI & AO连接然后可用AIO引脚,其失败,否则将溢出的AI连接分配给AIO引脚。

4)将任何溢出的数字连接分配到空闲的AI和AO引脚,如果这些引脚没有足够的故障。

5)如果你到了这里,你应该有连贯的连接图!