m16 转arduino小结(cp2102 成功控制arduino 复位)

Atmega16L-8PU的芯片,想搭建最小系统试试,查了一些资料,也多亏论坛各位兄弟的帮忙 ,终于能跑起来了,分享一些资料在这里,同时也有一些问题没弄完,抽空继续弄好了,再分享出来

参考网址https://github.com/MCUdude/MightyCore#wiring-reference

添加板子https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json

选择m16 按照C:\Users\Administrator\AppData\Local\Arduino15\packages\MightyCore\hardware\avr\1.0.8 \boards.txt中你选择的板子设置熔丝和用usbasp烧录对应bootloader,切记烧录时候如果usbisp报错,重启动机器,再烧录。不要怀疑程序,肯定烧录成功,多烧录几次。

打开blink工程,设置led引脚29(PA5),然后点上传,按住reset按键,在程序马上上传完成后松开。100%成功,现在还没有解决DTR自动程序控制重启动。应该是cp2102的问题。郁闷中。。。。

今天终于解决了问题,原来是2102驱动能力不够,在官方电路中去掉104电容,改为4.7k上拉,和4.7k下拉。目的是限制2102的dtr电压在2.5v左右。因为2102下拉电平只能在1.8v左右,要保证正常的时候,dtr电压大于2v,下拉的时候小于1.8v,这样就能可靠复位。m16 转arduino小结(cp2102 成功控制arduino 复位)_第1张图片

今天又改进了复位电路,把电容修改为100uf,上拉100k,下拉56k,目前正常复位。

m16 转arduino小结(cp2102 成功控制arduino 复位)_第2张图片

总结一下,要cpu可靠复位的条件是,rst脉冲宽度和高低电压,由于ttl电压是2v以上是高电平,1.8以下是低电平。所以保证正常的时候,rst上是大于2v的,可靠点2.5v比较好。重启动时候要拉低到1.8v,这个电压可以通过R1和R2来调整分压。

R1和R2的选择大小,决定了脉冲宽度,要根据电容的充电曲线来决定,小了,脉冲宽度不够。开始我选择的是10k,发现脉冲宽度不够,调整到100K就好了。

m16 转arduino小结(cp2102 成功控制arduino 复位)_第3张图片

电容决定脉冲高度,电容要选100UF,而不是官方提供的104电容,开始我选择104电容,示波器上看到脉冲高度只有0.2v,根本不能复位,所以增大电容,提供脉冲高度,脉冲高度可以到1.8v。

官方原理图

m16 转arduino小结(cp2102 成功控制arduino 复位)_第4张图片

M16引脚图

m16 转arduino小结(cp2102 成功控制arduino 复位)_第5张图片

你可能感兴趣的:(arduino,arduino)