查看: 19231|回复: 15

把ATmega128开发板转为Arduino

  [复制链接]
  • TA的每日心情
    开心
    2014-1-17 23:05
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-7-27 15:01:58 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 东隅 于 2013-7-27 15:04 编辑

    暑假来临,闲来无事,听有同学在玩arduino,挺想尝试看看,但是不想买啊,正好手中有一套ATmege128的开发板。以前听过arduino是由avr封装而成,于是就想把这avr开发板改造下。GOOGLE了下,还是有办法的。        其实Arduino,就是在AVR单片机上烧录了一个bootloader,在通过arduino集成开发环境与单片机进行通讯,继而进行片上编程。
            转载请注明原文地址:
                        http://blog.csdn.net/canyue102/article/details/9451771
             

    AVR环境:
           编译环境: ubuntu + avr-gcc
           烧写工具: avrdude+usbasp
    具体步骤查看上一篇博客。
       avr环境多种多样,在linux下还可以用eclipse集成环境。在window下推荐用WINAVR,其实本质上和linux下一样是用avr-gcc,烧写工具用prgisp.当然有了avr jtag仿真器就更好了,不用usbasp.
    下载arduino工具:
          arduino.cc/en/Main/Software
         我下载的linux 64位版本,下载后解压到主目录下。
    开发板:
           BK-AVR128开发板   


    一、制作属于atmega128的bootloader

           代码主要是arduino工具自带的,编译时有点问题,我改了几处。
            可以直接到我的资源里面下载编译好的hex文件直接烧写到单片机就可以了:
               download.csdn.net/detail/canyue102/5809329
              源代码boot _mega128.c 代码太长粘帖不了,详见博客

    复制代码
    编译:        avr-gcc -mmcu=atmega128 -Wall -Os -o boot_mega128.o boot_mega128.c
           avr-objcopy -j .text -j .data -O boot_mega128.o boot_mega.hex
    烧写:
         用usbasp连接电脑和开发板
          sudo avrdude -p m128 -c usbasp -P usbasp -Uefuse:w:0xff:m -Uhfuse:w:0xca:m -Ulfuse:w:0xff:m -Ulock:w:0x3F:m
          sudo avrdude -p m128 -c usbasp -e -U flash:w:boot_mega128.hex -Ulock:w:0x0F:m
    二、Arduino开发环境设置      参考:
          arduinoexplained.blogspot.com/2012/03/custom-board-programming-on-arduino-10.html
          解压刚才下载的arduino
          进入该目录
          修改/hardware/arduino/avr/boards.txt
           在最后添加:
    1. ###############################################################
    2. atmega128A.name=Custom ATmega 128 Breakout Board using AVRISP
    3. atmega128A.upload.using=avrispmkii
    4. atmega128A.upload.maximum_size=126976
    5. atmega128A.bootloader.low_fuses=0xFF
    6. atmega128A.bootloader.high_fuses=0xCA
    7. atmega128A.bootloader.extended_fuses=0xFF
    8. atmega128A.bootloader.path=atmega
    9. atmega128A.bootloader.file=boot_mega128.hex
    10. atmega128A.bootloader.unlock_bits=0x3F
    11. atmega128A.bootloader.lock_bits=0x0F
    12. atmega128A.build.mcu=atmega128
    13. atmega128A.build.f_cpu=8000000L
    14. atmega128A.build.core=arduino
    15. atmega128A.build.variant=standard


    16. ##############################################################
    复制代码
    三、设置arduino引脚定义
            在网上没有找到atmega128的arduino pin mapping,于是自己写了一个
             在/hardware/arduino/avr/variant文件夹下新建一个文件夹mega128
             在mega128里面新建一个pins_arduino.h
                        代码太长发不了贴,详见原博客


    复制代码
    再将boards.txt的
    atmega128A.build.variant=standard
    改为
    atmega128A.build.variant=mega128


    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
    步进电机





    9PB1/SCK
    步进电机





    10PB2/MOSI
    步进电机





    11PB3/MISO
    步进电机





    12PB4/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)





    18PC2
    数码管(段 C)





    19PC3
    数码管(段 D)





    20PC4
    数码管(段 E)





    21PC5
    数码管(段 F)





    22PC6
    数码管(段 G)





    23PC7
    数码管(段 dp)





    24PD0/SCL/INT0
    矩阵键盘(行 1)
    按键 K17
    AT24C02(SCL)


    25PD1/SDA/INT1
    矩阵键盘(行 2)
    按键 K18
    AT24C02(SDA)


    26PD2/RXD1/INT2
    矩阵键盘(行 3)
    按键 K110
    PSII(DAT)
    红外线接收
    27
    PD3/TXD1/INT3
    矩阵键盘(行 4)
    按键 K20
    PSII(CLK)


    28PD4/ICP1
    矩阵键盘(列 1)





    29PD5/XCK1
    矩阵键盘(列 2)





    30PD6/T1
    矩阵键盘(列 3)





    31PD7/T2
    矩阵键盘(列 4)





    32PE0/RXD0/PDI
    串口(RXD)





    33PE1/TXD0/PDO
    串口(TXD)





    34PE2/XCK0/AIN0
    DS1302(SCLK)





    35PE3/OC3A/AIN1
    DS1302(I/0)





    36PE4/OC3B/INT4
    DS1302(RST)





    37PE5/OC3C/INT5
    空闲





    38PE6/T3/INT6
    DS18B20





    39PE7/ICP3/INT7
    蜂鸣器





    40PF0/ADC0
    ADC 输入





    41PF1/ADC1
    数码管段选锁存





    42PF2
    数码管位选锁存





    43PF3
    流水灯锁存





    44PF4
    JTAG(TCK)





    45PF5
    JTAG(TMS)





    46PF6
    JTAG(TDO)





    47PF7
    JTAG(TDI)





    48PG0/WR
    空闲





    49PG1/RD
    空闲





    50PG2/ALE
    空闲





    51PG3/TOSC2
    空闲





    52PG4/TOSC2
    空闲






    四、 最后启动arduino开发环境:
              sudo ./arduino
       测试程序:
    1. int ledPin =12;
    2. void setup() {
    3.   // put your setup code here, to run once:
    4.   pinMode(ledPin,OUTPUT);
    5. }


    6. void loop() {
    7.   // put your main code here, to run repeatedly:
    8.   digitalWrite(ledPin,HIGH);
    9.   delay(1000);
    10.   digitalWrite(ledPin,LOW);
    11.   delay(1000);


    12. }
    复制代码
    点击upload则在开发板上开始一个一闪一闪的led。第12pin是PB4开发板上正好对应一个LED。
       好吧,可是开始arduino的开发之旅了。要学好arduino还是要花很多精力和时间的。



    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-1-12 22:37
  • 签到天数: 259 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-7-27 19:43:09 | 显示全部楼层
    我想买一块AVR的板子,奈何网上卖的比Arduino的还要贵,那我买一块Arduino的然后怎么改成AVR啊》重新刷写是吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-1-24 13:36
  • 签到天数: 240 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-12 09:12:05 | 显示全部楼层
    我有51-avr二合一的板子,也可以一样做成吗。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-17 23:05
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

     楼主| 发表于 2013-8-15 22:46:12 | 显示全部楼层
    Hayasaky 发表于 2013-7-27 19:43
    我想买一块AVR的板子,奈何网上卖的比Arduino的还要贵,那我买一块Arduino的然后怎么改成AVR啊》重新刷写是 ...

    直接用刷avr的烧写软件烧写AVR程序就可以。progisp
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-17 23:05
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

     楼主| 发表于 2013-8-15 22:47:48 | 显示全部楼层
    yaoliming4325 发表于 2013-8-12 09:12
    我有51-avr二合一的板子,也可以一样做成吗。。。

    可以的,avr芯片可以,51不行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-1-12 22:37
  • 签到天数: 259 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-15 23:15:44 | 显示全部楼层
    东隅 发表于 2013-8-15 22:46
    直接用刷avr的烧写软件烧写AVR程序就可以。progisp

    直接刷程序当AVR用就行了?,怎么连接呢?还是用那个USB的口子?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-17 23:05
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

     楼主| 发表于 2013-8-27 22:28:28 | 显示全部楼层
    Hayasaky 发表于 2013-8-15 23:15
    直接刷程序当AVR用就行了?,怎么连接呢?还是用那个USB的口子?

    一般是ISP接口或者JTAG接口,如果你原来那个usb接口是转串口可能就不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-3-4 21:39:44 | 显示全部楼层
    把ATmega128开发板转为Arduino
    https://www.cirmall.com/bbs/foru ... 8&fromuid=49845


    敢问楼主如何处理 atmega 128  的pins_arduous.h 文件的,里面需要注意些什么。我也有块128 的板子想改一下,但不太懂里面的管脚映射关系,望楼主明示。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-17 23:05
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

     楼主| 发表于 2014-3-7 23:46:18 | 显示全部楼层
    mirssx 发表于 2014-3-4 21:39
    把ATmega128开发板转为Arduino
    https://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=15848&fromuid=4 ...

    引脚映射,我博客里有的:
    http://blog.embbnux.net/category/avrmcu
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-4-1 09:08:36 | 显示全部楼层
    帖子内容很好,简而易懂方便学习,希望能有更多类似贴哟
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 00:42 , Processed in 0.195653 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.