使用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个引脚,相当于功能增加了。

(0)

相关推荐