Ear*_*rlz 5 c assembly avr communication freestanding
(如果你的懒惰看到TL的底部; DR)
您好,我打算建立一个处理物理计算的新(原型)项目.基本上,我有电线.这些电线都需要同时读取其电压.每根导线读数之间的差异超过几百微秒就会完全搞砸了.Arduino需要大约114微秒.因此,在延迟会影响读数的准确性之前,我能阅读的最多的是2或3条线.
所以我的计划是让一个Arduino成为一系列ATTinys的"主人".arduino相当狭窄的空间,但它与一个巨大的游乐场相比.ATTiny13A具有1k的闪存ROM(程序空间),64字节的RAM和64字节(非耐用和慢速)EEPROM.(我选择这个价格和尺寸)
我系统中的ATTinys不会做太多.基本上,他们所要做的就是等待来自Master的信号,然后读取1或2线的电压并将其存储在RAM中(如果它变得狭窄,则可能存储在EEPROM中).然后使用1根电线将数据发送给Master.(没有更多空间!).
到目前为止,我所要做的就是实现简单的电压读取代码(使用内置ADC).但这个沟通有点让我担心.您是否认为通信协议(仅使用1线!)甚至可以在这样的约束中实现?
TL; DR:在不到1k的程序空间和64字节的RAM(以及64字节的EEPROM)中,您认为可以实现1线通信协议吗?我是否需要放入装配以使其适合?
我知道目前我的Arduino程序链接到Wiring库超过8k,所以我有点担心.
由于您只需要发送数据(比接收更简单)并且您可以选择自己的协议,因此将代码放入可用内存空间应该不是问题.
我曾经为工业控制面板创建了软件,其中包含8x14段LCD显示屏,一些LED,一些按钮,一个串行(I2C)EEPROM和主机的串行接口.使用了4位处理器.该设备没有任何串行接口,因此RS232C接口和I2C总线都必须用软件实现.最重要的是,有Modbus协议(其中包括需要CRC计算的一些确切时间)和应用程序.
该器件具有128 x 4位RAM和1kW,2kW,3kW或4kW ROM(每字10位).最终节目的大小约为1100字,因此它不太适合最小的设备.当然,我使用了Assembler.
但是,您可以考虑使用硬件解决方案,而不是使用多个微控制器.
您可以使用采样和保持电路.为此,您需要一系列模拟开关和电容以及运算放大器.只需发出触发器即可将所有电压锁存到电容器中.然后,您可以使用尽可能多的时间来读取主处理器的电压.
更新:忘了提到现成的采样保持放大器需要很少或没有外部元件.这可能是最简单的解决方案.