使用Atmega 16/16A制作Arduino复制板
使用Atmega 16/16A制作Arduino复制板
早期的Arduino主控芯片使用的是Atmega 8,在UNO R3时改成了Atmega 328,存储空间由8k增至32k,其它都是相同的。
如果使用Atmega8/328“裸片”复制Arduino,就比较简单,因为Arduino IDE原生就支持它们。
我初时学习Arduino时,原想着一道学习AVR,因为不熟悉底层,就会被Arduino的封装阻隔提升的空间。
今天碰到一篇文章,用Atmega 16复制Arduino,一时兴起,但那文章错误太多,或者什么原因,总之是无法继续。
正确且易于实践的步骤,记录一下。因为这件事情比先前研究的Attiny13A/85/LilyPad更有意义——如果不怕麻烦,以后可以不用再买Arduino板了,体积也小了。
1、在板卡管理器里安装MightyCore。
在首选项里填写
https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
2、把Arduino UNO作为编程器
把Examples/ArduinoISP烧写到Arduino中;
3、接线
Arduino UNO | Atmega16 |
---|---|
5V | 10(VCC) |
GND | 11(GND) |
10 | 9(RESET) |
11 | 6(MOSI) |
12 | 7(MISO) |
13 | 8(SCK) |
4、烧录Blink
把两只LED串联,正极引脚接Atmega16引脚20,修改Blink.ino:
int pin=14;//注意这句
void setup() {
pinMode(pin, OUTPUT);
}
void loop() {
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);
}
5、烧录Atmega16
Tools菜单里设置板卡:Atmega16,内部时间8MHz,BootLoader为Yes,编程器为Arduino as ISP。
在Sketch菜单里使用upload Using Programmer上传,Atmega16引脚20上的两个LED间隔8秒闪烁一次(为什么?因为时钟慢了。)
6、总结记录
⑴很多资料写的使用AVR烧录器等做法,不用那么麻烦,而且还不保证。
⑵很多资料太过古老,不许IDE版本高于1.6,手动设置熔丝位等等,MightyCore库全部解决掉了,不必理会。
⑶Atmega16有不少资料里的引脚图与Arduino引脚不对应,不能正确执行ino代码。Atmega16有40个引脚,而Atmega328只有28个引脚,相当于功能增加了。