专注电子技术学习与研究
当前位置:单片机教程网 >> Arduino >> 浏览文章

ATmega128开发板转为Arduino

作者:佚名   来源:本站原创   点击数:  更新时间:2014年04月03日   【字体:

还在读书的时候,一次课程设计用到了ATmega128的片子,感觉还不错。后来玩单片机就收藏了两块mega128的核心板。在玩Arduino以后,一直想把这两块闲置多年mega128的板子也用起来。趁着过年这几天比较闲,简单搞了一下。

一、制作属于ATmega128bootloader

      源代码需要在Arduino IDE自带的通用bootloader修改几处,当然也可以直接使用已经编译好的boot_mega128.hex文件。
 
二、硬件连接
用杜邦线连接USBtinyISP JP1ISP6)和开发板的ISP接口(暂时只测试了 USBtinyISP)。
 
三、Arduino开发环境设置
参考: 
进入Arduino IDE目录
修改 /hardware/arduino/boards.txt 1.0.5在该路径下)
在最后添加:
###############################################################
atmega128A.name=Custom ATmega 128A_8MHz
 
atmega128A.upload.using=avrispmkii
 
atmega128A.upload.maximum_size=126976
 
atmega128A.bootloader.low_fuses=0xFF
 
atmega128A.bootloader.high_fuses=0xCA
 
atmega128A.bootloader.extended_fuses=0xFF
 
atmega128A.bootloader.path=mega128
 
atmega128A.bootloader.file=boot_mega128.hex
 
atmega128A.bootloader.unlock_bits=0x3F
 
atmega128A.bootloader.lock_bits=0x0F
 
atmega128A.build.mcu=atmega128
 
atmega128A.build.f_cpu=8000000L
 
atmega128A.build.core=arduino
 
atmega128A.build.variant=mega128
 
##############################################################
 
设置后可在Arduino IDE 菜单“工具”—> “板卡下看到对应的“Custom ATmega 128A_8MHz”选项。 
 

 
三、设置Arduino引脚定义
/hardware/arduino/variants文件夹下新建一个文件夹mega128
mega128里面新建一个pins_arduino.h,内容略,可根据实际开发板资源调整。
目前所用atmega128arduino pin mapping 定义如下:
 
arduino io
主芯片 IO 口
外部资源 1
外部资源 2
外部资源 3
外部资源 4
0
PA0/A/D0
流水灯(D1)
数码管(位 1)
LCD1602(D0)
LCD12864(D0)
1
PA1
流水灯(D2)
数码管(位 2)
LCD1602(D1)
LCD12864(D1)
2
PA2
流水灯(D3)
数码管(位 3)
LCD1602(D2)
LCD12864(D2)
3
PA3
流水灯(D4)
数码管(位 4)
LCD1602(D3)
LCD12864(D3)
4
PA4
流水灯(D5)
数码管(位 5)
LCD1602(D4)
LCD12864(D4)
5
PA5
流水灯(D6)
数码管(位 6)
LCD1602(D5)
LCD12864(D5)
6
PA6
流水灯(D7)
数码管(位 7)
LCD1602(D6)
LCD12864(D6)
7
PA7
流水灯(D8)
数码管(位 8)
LCD1602(D7)
LCD12864(D7)
8
PB0/SS
步进电机
 
 
 
9
PB1/SCK
步进电机
 
 
 
10
PB2/MOSI
步进电机
 
 
 
11
PB3/MISO
步进电机
 
 
 
12
PB4/OC0
直流电机
PWM(D9)
 
 
13
PB5/OC1A
LCD1602(RS)
LCD12864(RS)
 
 
14
PB6/OC1B
LCD1602(RW)
LCD12864
 
 
15
PB7/OC1C
LCD1602(EN)
(RW)
 
 
16
PC0/A8
数码管(段 A)
LCD12864(EN)
 
 
17
PC1
数码管(段 B)
 
 
 
18
PC2
数码管(段 C)
 
 
 
19
PC3
数码管(段 D)
 
 
 
20
PC4
数码管(段 E)
 
 
 
21
PC5
数码管(段 F)
 
 
 
22
PC6
数码管(段 G)
 
 
 
23
PC7
数码管(段 dp)
 
 
 
24
PD0/SCL/INT0
矩阵键盘(行 1)
按键 K17
AT24C02(SCL)
 
25
PD1/SDA/INT1
矩阵键盘(行 2)
按键 K18
AT24C02(SDA)
 
26
PD2/RXD1/INT2
矩阵键盘(行 3)
按键 K110
PSII(DAT)
红外线接收
27
PD3/TXD1/INT3
矩阵键盘(行 4)
按键 K20
PSII(CLK)
 
28
PD4/ICP1
矩阵键盘(列 1)
 
 
 
29
PD5/XCK1
矩阵键盘(列 2)
 
 
 
30
PD6/T1
矩阵键盘(列 3)
 
 
 
31
PD7/T2
矩阵键盘(列 4)
 
 
 
32
PE0/RXD0/PDI
串口(RXD)
 
 
 
33
PE1/TXD0/PDO
串口(TXD)
 
 
 
34
PE2/XCK0/AIN0
DS1302(SCLK)
 
 
 
35
PE3/OC3A/AIN1
DS1302(I/0)
 
 
 
36
PE4/OC3B/INT4
DS1302(RST)
 
 
 
37
PE5/OC3C/INT5
空闲
 
 
 
38
PE6/T3/INT6
DS18B20
 
 
 
39
PE7/ICP3/INT7
蜂鸣器
 
 
 
40
PF0/ADC0
ADC 输入
 
 
 
41
PF1/ADC1
数码管段选锁存
 
 
 
42
PF2
数码管位选锁存
 
 
 
43
PF3
流水灯锁存
 
 
 
44
PF4
JTAG(TCK)
 
 
 
45
PF5
JTAG(TMS)
 
 
 
46
PF6
JTAG(TDO)
 
 
 
47
PF7
JTAG(TDI)
 
 
 
48
PG0/WR
空闲
 
 
 
49
PG1/RD
空闲
 
 
 
50
PG2/ALE
空闲
 
 
 
51
PG3/TOSC2
空闲
 
 
 
52
PG4/TOSC2
空闲
 
 
 
引脚定义参考开发板为博科电子的BK-AVR128,实物图片如下:
 
 
 
实际手里用的是这块:
 
 
 
通过Arduino IDE 把准备好的 bootloader 写入mega128。使用 USBtinyISP 好处是不需要选择连接端口,直接写就行了。
写好bootloader以后,你的单片机开发板就变为 Arduino 了。虽然官方的FAQ里仍然强调 Arduino “只是一块AVR开发板”…… 
 
四、
测试
    测试程序:  
int ledPin =12;
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin,OUTPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(ledPin,HIGH);
  delay(1000);
  digitalWrite(ledPin,LOW);
  delay(1000); 
}
点击  ,下载完成后则在开发板上有一个led开始闪烁。程序中 ledPin 12定义的是PB4 引脚,需要在对应引脚上接一个LED才能看到闪烁。
好吧,现在可以用ATmega18A开始Arduino的玩弄时间了。

PS: avrdude 真心不会用,avrdude-GUI 也不会!
关闭窗口

相关文章