armok 发表于 2012-4-14 22:52:54

(教程2).LGT编程、编译、烧录、仿真的第一个范例:流水灯,

阅读本教程前,请先阅读: (教程1). LGT开发环境的建立(AVR Studio 4.19 + AVRGCC 20100110)



本实验需要使用的工具:

    1. LGT 专用 JTAG ICE 仿真下载器(不能使用AVR JTAG ICE)
       2. LGT演示板
    3. 外接电源(5V), 也可不接,因为JTAG的USB接口也能为演示板提供电力
    4. 自行焊接8个LED指示器

    LGT头文件可以在这里下载: (教程4) LGT的头文件(原AVR代码,仅需要修改头文件就改成LGT)









一、LGT编程,新建工程项目

AVR STUDIO 4.19里, Project --> New Project 建立新工程


项目类型选择 AVR GCC, 项目名称 test_01 放在 c:\amoLGT目录下


开发工具选择 JTAG ICE,芯片随便选择,无论 ATMELGA16 或 162 ,128 等均可。
(由于ATMEGA8没有JTAG ICE接口,故无法选择它)
点击“Finish”



将以下的代码COPY 到项目的 test_01.c 里。
熟悉AVR的人应该会狂喜: 下面的代码除了 #include <iolgt8f0xa.h>   这句头文件指向LGT外, 其它的所有语句,100%是与AVR相同的。
也就是说,AVR的代码,只需要修改一句头文件,就能立即应用于LGT上。

#include <io.h>                  // GCC的标准io.h
#include <iolgt8f0xa.h>          // LGT的头文件

void delay_ms(int ms){                                                //纯粹是用死循环来实现延时,仅用于测试目的
        int i;
        for( ; ms >=1 ; --ms){
                for(i = 0; i<250;++i){
                        asm("nop");                                                                                //引用汇编指令 "nop"
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                        asm("nop");
                }
        }
}


int main(){                                                                                                        //入口地址
        int i=0;                                                                                                //用来做移动标志

        DDRA = 0XFF;                                                                                        //设置A为输出模式
        PORTA = 0XFF;                                                                                        //A端口全部输出为高电平.
       
        delay_ms(250);                                                                                        //延时一会
       
        PORTA = 0X00;
       
        delay_ms(250);

        while(1){                                                                                                //超级循环
       
                PORTA = 0X01;                                                                                //开始右移.端口输出为OB0000 0001开始
                for(i=0;i<8;++i){                                                                        //循环8次
                        delay_ms(250);
                        delay_ms(250);
                        PORTA = PORTA<<1;                                                                //端口右移一位
                }
                delay_ms(250);
                delay_ms(250);
               
                PORTA = 0X80;                                                                                //开始左移.端口输出为OB1000 0000开始
                for(i=0;i<8;++i){
                        delay_ms(250);
                        delay_ms(250);
                        PORTA = PORTA>>1;                                                                //端口右移一位
                }
                delay_ms(250);
                delay_ms(250);

                PORTA = 0XFF;                                                                                //端口A输出为OB1111 1111
                delay_ms(250);
                delay_ms(250);

                PORTA = 0XF0;                                                                                //端口A输出为OB1111 0000
                delay_ms(250);
                delay_ms(250);
                PORTA = 0X0F;                                                                                //端口A输出为OB0000 1111
                delay_ms(250);
                delay_ms(250);

                PORTA = 0XFF;                                                                                //端口A输出为OB1111 1111
                delay_ms(250);
                delay_ms(250);       
        }

}


二、编译,生成仿真与烧录文件

进入菜单 Project ---> Configuration Options


General 选项中,唯一需要芯片的是芯片选 ATmega164P, 这点非常重要,不要选错,因为这一款LGT芯片(LGT8F08A)的寄存器位置是与 ATMEGA164P 相同的。



顺便检查一下(教程1)中描述的 Include Direcories 是否配置好





也顺便检查一下是否已经取消了 AVR STUDIO 4.19 的 AVR ToolChain, 并且已经重新指定了 avr-gcc.exe, make.exe 的位置:



Build --> Build All 编译



振奋人心的结果出来了!编译通过,生成了 test_01.elf 仿真文件,及 test_01.hex 烧录文件。





三、烧录(下载)

点击工具栏里的 CON(连接)按钮。



选择JTAG ICE 工具,我的电脑是影射到COM2端口(你可以选择 AUTO, 或自行到电脑硬件资料里查看映射的端口,或修改端口编号)


我们准备进行烧录,芯片型号随便选一个就行,不会影响烧录的结果。


烧录的文件指向刚才生成的地方:C:\amoLGT\test_01\default\test_01.hex



点击“Program” 出现烧录成功的信息:



关闭这个窗口, 然后按演示板上的 RESET 按钮, 就能看到流水灯的效果。




四、仿真

点击工具栏上的仿真开始按钮



其它仿真的按钮生效, 可以进行仿真操作!


laign 发表于 2012-4-14 22:57:18

坐等结果

y574924080 发表于 2012-4-14 23:01:10

围观~~~~~~~~~~~

rqiang 发表于 2012-4-14 23:28:47

老大,有没有SSOP封装的,这个单价很诱惑人的。。。现在项目急需要找替代IC,如果单价合理,1-2KK的销量没有问题,方便直接电话联系不?

armok 发表于 2012-4-14 23:33:37

rqiang 发表于 2012-4-14 23:28 static/image/common/back.gif
老大,有没有SSOP封装的,这个单价很诱惑人的。。。现在项目急需要找替代IC,如果单价合理,1-2KK的销量没 ...

抱歉目前只有 SOP28的封装。 我也知道这个封装对很多用户来说有点大。

迟些我们会提供更小的封装。

logicgreen 发表于 2012-4-14 23:37:37

有实物照片吗?

rqiang 发表于 2012-4-14 23:39:56

好,密切留意中。。。

YRHeng 发表于 2012-4-14 23:58:53

有其他独立的下载软件下载程序吗?要是换了其他开发环境,要怎么下载程序到单片机里面?

Rainbow7 发表于 2012-4-15 00:01:42

哈哈,开课了哦!

其实有很多原来AVR的C程序,是不是直接移植甚至烧原来编译好的HEX文件就可以了啊?

zgxcom123 发表于 2012-4-15 00:02:06

以前没学过AVR,但是看了两篇教程,开始爱上AVR了~~
期待套件早日发售

logicgreen 发表于 2012-4-15 00:03:34

YRHeng 发表于 2012-4-14 23:58 static/image/common/back.gif
有其他独立的下载软件下载程序吗?要是换了其他开发环境,要怎么下载程序到单片机里面? ...

会推一个ISP量产工具,请留意。

armok 发表于 2012-4-15 00:08:37

logicgreen 发表于 2012-4-14 23:37 static/image/common/back.gif
有实物照片吗?

实物图片已经更新了。 原演示板没有LED,只好DIY了一个8位的LED指示器插到演示板上。

armok 发表于 2012-4-15 00:11:18

YRHeng 发表于 2012-4-14 23:58 static/image/common/back.gif
有其他独立的下载软件下载程序吗?要是换了其他开发环境,要怎么下载程序到单片机里面? ...

如果你懂AVR的话,不同的开发环境,对你不会是困扰。

如果你是新手的话,就老老实实的跟着我们用GCC吧。

GCC虽然是免费的,但它的性能与效率,并不比收费的差。而且, GCC是目前ATMEL官方首推的,它已经集成到AVR STUDIO 里了,试问一下:你不用GCC, 用其它是不是很傻很天真?

armok 发表于 2012-4-15 00:12:49

Rainbow7 发表于 2012-4-15 00:01 static/image/common/back.gif
哈哈,开课了哦!

其实有很多原来AVR的C程序,是不是直接移植甚至烧原来编译好的HEX文件就可以了啊? ...

原来的AVR程序,你只需要修改一句头文件, 即: 修改成 #include <iolgt8f0xa.h>   然后重新编译,生成HEX码就能用于LGT。

armok 发表于 2012-4-15 00:14:51

zgxcom123 发表于 2012-4-15 00:02 static/image/common/back.gif
以前没学过AVR,但是看了两篇教程,开始爱上AVR了~~
期待套件早日发售

我写的范例你可以放心,超级的通俗易懂的 :)   

lu0718 发表于 2012-4-15 00:20:02

继续跟进

logicgreen 发表于 2012-4-15 00:22:43

结果不重要,我们在乎的是学会使用过程。

logicgreen 发表于 2012-4-15 00:31:02

有一个演示视频更好。

wthzack 发表于 2012-4-15 00:38:39

密切留意中。。。

armok 发表于 2012-4-15 00:49:19

logicgreen 发表于 2012-4-15 00:31 static/image/common/back.gif
有一个演示视频更好。

这类的简单范例不必视频吧。只是几个灯闪来闪去而已,看懂程序就知道如何闪,看不懂的动手试一下也知道。

elecboy 发表于 2012-4-15 07:31:58

不错,不知道支持不支持avrdude和stk500下载工具,或者其它linux版本下载工具软件也行,主要我们现在生产编程都是用linux下的定制gui前端,调用avrdude及stm32loader等下载,好处是生产人员不可能搞错。

goodboy3021 发表于 2012-4-15 07:33:23

以前用的是icc,不过差不多。

armok 发表于 2012-4-15 07:42:23

elecboy 发表于 2012-4-15 07:31 static/image/common/back.gif
不错,不知道支持不支持avrdude和stk500下载工具,或者其它linux版本下载工具软件也行,主要我们现在生产编 ...

需要使用LGT专用的工具。
不过请放心,我们会以很优惠的价格供应。

szxszx 发表于 2012-4-15 09:45:33

很强大,如此简单的转换到LGT

wzyllgx 发表于 2012-4-15 10:14:01

armok 发表于 2012-4-15 00:12 static/image/common/back.gif
原来的AVR程序,你只需要修改一句头文件, 即: 修改成 #include    然后重新编译,生成HEX码就能用于LGT ...

看你还单独写了一个延时程序,应该可以调用库的延时吧,包含#include <util/delay.h>,试试看是否可以调用——_delay_us(100)——_delay_ms(100)之类的?

wzyllgx 发表于 2012-4-15 10:16:06

还有到时候申请到样品,我来调试一下看是否可以调用ATMEL的TOUCH库啊,如果还可以做TOUCH,那就NB了,哈哈。

shaxiao163 发表于 2012-4-15 10:42:05

还在鼓捣AVR的人士 表示木有压力{:titter:}{:titter:}

logicgreen 发表于 2012-4-15 10:46:42

wzyllgx 发表于 2012-4-15 10:14 static/image/common/back.gif
看你还单独写了一个延时程序,应该可以调用库的延时吧,包含#include ,试试看是否可以调用——_delay_us ...

因为LGT指令周期快了,所以延时函数会偏小,请留意。

logicgreen 发表于 2012-4-15 10:49:24

wzyllgx 发表于 2012-4-15 10:16 static/image/common/back.gif
还有到时候申请到样品,我来调试一下看是否可以调用ATMEL的TOUCH库啊,如果还可以做TOUCH,那就NB了,哈哈 ...

已经做了touch的应用,效果不错,抗干扰。

hexenzhou 发表于 2012-4-15 11:02:32

期待出IAR的范例,偶一般都用IAR来开发的。

geshanyou1987 发表于 2012-4-15 11:11:32

128替换了吗

newbier 发表于 2012-4-15 11:21:59

LGT的供货周期和出货稳定性怎么样?这才是最重要的

zwc58 发表于 2012-4-15 11:42:00

期待套件早日发售

Bicycle 发表于 2012-4-15 12:52:42

可惜了还没有5V和TQFP32,继续关注

UNIFAN 发表于 2012-4-15 17:59:30

画了个TQF32封装的板子,看来要画个SOP28的板子了!

curliph 发表于 2012-4-15 18:04:39

不错,有图有真相~

jhdtry 发表于 2012-4-15 18:21:37

啥时候开始供应样片来,

logicgreen 发表于 2012-4-15 19:15:18

jhdtry 发表于 2012-4-15 18:21 static/image/common/back.gif
啥时候开始供应样片来,

已经可以申请样片和工具。

uc_c++ 发表于 2012-4-16 08:21:05

iolgt8f0xa.h
头文件 哪有下载?

Excellence 发表于 2012-4-16 08:31:18

好的。。。。。支持,顶。。。。

wangjiati 发表于 2012-4-16 08:55:41

uc_c++ 发表于 2012-4-16 08:21 static/image/common/back.gif
iolgt8f0xa.h
头文件 哪有下载?

(教程4) LGT的头文件(原AVR代码,仅需要修改头文件就改成LGT)
http://www.ourdev.cn/thread-5467210-1-1.html

pengchhui 发表于 2012-4-16 09:17:20

刚开始学的有机会了

xiaobendan001 发表于 2012-4-16 09:42:39

发现论坛的代码显示很整洁,老大写的很整洁啊

lf582127667 发表于 2012-4-16 10:49:41

片子有点大呀!

armok 发表于 2012-4-16 10:55:10

xiaobendan001 发表于 2012-4-16 09:42 static/image/common/back.gif
发现论坛的代码显示很整洁,老大写的很整洁啊

得益于新论坛的代码粘贴功能。(code)

sleet1986 发表于 2012-4-16 11:03:01

有atmega48的替代品吗?

jhdtry 发表于 2012-4-16 12:20:32

logicgreen 发表于 2012-4-15 19:15 static/image/common/back.gif
已经可以申请样片和工具。

貌似没有申请到啊,有没有具体流程?

nomsg 发表于 2012-4-16 13:26:15

收藏,mark

lxvtag 发表于 2012-4-16 13:34:39

LED焊的很有意思,那个直插1K也换贴片就很整齐了{:biggrin:}

duxingkei 发表于 2012-4-16 14:01:25

看代码源码 很有压力!
论坛对代码的显示能否优化下?

armok 发表于 2012-4-16 14:15:39

uc_c++ 发表于 2012-4-16 08:21 static/image/common/back.gif
iolgt8f0xa.h
头文件 哪有下载?

重复发贴,扣100莫元处理。已经在你发的另一个主题里回复你了。

rqiang 发表于 2012-4-16 14:26:43

newbier 发表于 2012-4-15 11:21 static/image/common/back.gif
LGT的供货周期和出货稳定性怎么样?这才是最重要的

支持!对我们批量用户来讲,这个才是最重要的。

zenith1032 发表于 2012-4-16 15:14:17

cortex m0应该比这个好吧??

logicgreen 发表于 2012-4-16 15:17:04

rqiang 发表于 2012-4-16 14:26 static/image/common/back.gif
支持!对我们批量用户来讲,这个才是最重要的。

稳定压倒一切!

shuimubai 发表于 2012-4-16 17:04:48

在提一个有点过分的建议:能不能后期为用户开发一个初始化自动配置软件 呵呵!{:lol:}

licongdwqx 发表于 2012-4-16 23:19:54

第51行代码的注释好像有问题吧

wangjiati 发表于 2012-4-17 11:32:15

licongdwqx 发表于 2012-4-16 23:19 static/image/common/back.gif
第51行代码的注释好像有问题吧

哥们真是火眼呀!       //复制了一下指令忘记改备注      

HZKJ 发表于 2012-4-17 16:03:53

处女版的教程出来了啊,等待评估。直接替换AVR

zhenglu891028 发表于 2012-4-17 17:12:27

支持,顶。。。。

cumtcmeeczm 发表于 2012-4-18 19:59:37

有点感觉了

yy43102328 发表于 2012-4-19 19:58:55

如果有ssop就好咯都是小东西上面用的,想省板子空间,我每个月都要2K的呵呵   自己工厂。

yy43102328 发表于 2012-4-19 19:59:59

呵呵    龌蹉一句:最好有出没有LOGO的!

guowei681 发表于 2012-4-19 20:29:39

老大,期待TQFP4方形封装的。正在努力学习中。

armok 发表于 2012-4-19 22:27:55

yy43102328 发表于 2012-4-19 19:58 static/image/common/back.gif
如果有ssop就好咯都是小东西上面用的,想省板子空间,我每个月都要2K的呵呵   自己工厂。 ...

建议你可以一次采购2年的数量,然后与我们谈一下,是否能供应没有LOGO的。

niepan 发表于 2012-4-19 22:28:03

yy43102328 发表于 2012-4-19 19:58 static/image/common/back.gif
如果有ssop就好咯都是小东西上面用的,想省板子空间,我每个月都要2K的呵呵   自己工厂。 ...

如果有ssop就好咯都是小东西上面用的,想省板子空间,我每个月都要2K的呵呵   自己工厂。

羡慕ing!

hanhui 发表于 2012-4-20 14:11:40

以前都是用ICC,STUDIO中的编译器还没有用过呢,怎么不能编译呢?

XIVN1987 发表于 2012-4-21 13:34:21

不错,之前一直不太愿意学习AVR,主要是因为:AVR和51一样,都没法设置断点、单步调试(AVR的一个仿真器能买10个JLINK,买不起。。)

现在这个LGT,30块钱就可以使用仿真器单步调试了,,真是非常不错啊,,,可以下决心学习一下了。。。

只是可惜的是:这个仿真器不可以给原来的AVR单片机下载程序——我是不是太贪心了{:lol:}{:titter:}

xinjie1023 发表于 2012-4-21 20:32:16

关注,支持阿莫,偶也是avr的长期支持者了

zhuisuoji 发表于 2012-4-22 08:07:30

老大提及:LGT芯片(LGT8F08A)的寄存器位置是与 ATMEGA164P 相同

我手上没有ATMEGA164P资料,其它型号反而有,能不能也一并放上来方便大家由此对照???

jwc21 发表于 2012-4-22 09:02:39

支持

lxvtag 发表于 2012-4-29 22:51:58

本帖最后由 lxvtag 于 2012-4-29 23:46 编辑

今天玩了一个下午,出现许多问题。(AVR Studio 4.17 + Winavr-20100110)
总结一下:
1.实验板下载完成后按照教程是按RESET键即可运行,我实际测试发现一定要重新上电才行,不知为何(一个更简单的方式是进入仿真模式,再退出,也可以立即运行)。

2.调试过程中有断开过10PIN扁平线的,一定要重新Connect (阿莫教程中的三、烧录(下载)部分),否则无法下载。

3.综合以上两点,调试的时候每次下载测试后都要重新Connect。

4.注意电源滤波,特别是像我一样加了稳压IC的,否则可能下载失败率非常高,而且无法仿真。

5.如果换了条数据线就经常下载不成功,很大可能性是电源滤波没做好。

lxvtag 发表于 2012-4-29 23:10:49

本帖最后由 lxvtag 于 2012-4-29 23:11 编辑

藉此也建议官方演示板还有改版的话增加几个滤波电容,降低对电源的要求。

我买的是空板,串口座之类的都不打算装了,所以直接利用这个空间和电源焊点装个电解电容了。


背后装了两个瓷片电容

加上一个按键和一个LED就是实验板了,可以实验输入输出、PWM、外部中断等,基本足够了。

jianjun42 发表于 2012-5-3 08:05:32

阿莫,对于LGT8和atmega164P寄存器完全相同这点我表示怀疑,我相信I\O端口寄存器是相同的,这个我也测试通过了,但是SPI相关寄存器应该是不同的,我尝试用ICCAVR的代码加上lgt的头文件,SPI方式驱动LCD5110失败了,也尝试过用bascom的代码,硬件SPI方式驱动LCD5110也失败了,证明两个芯片的SPI寄存器是不同的,回头进行ADC、PWM等相关测试,有了结果在汇报

sz_tony 发表于 2012-5-9 06:15:31

{:biggrin:}

yingmin_alex 发表于 2012-5-10 22:03:27

本帖最后由 yingmin_alex 于 2012-5-10 22:06 编辑

我在邮购部买了官方演示板的套件。本想还要买一个下载器的,但是没货了。
下载程序一定要用LGT官方的下载器吗?用AVR的isp下载器不能兼容吗?
如果非要买官方版的。请阿莫建议一下时isp下载器好还是仿真器好?
还要问一下下载器什么时候有货??

麻烦阿莫抽空解答一下。谢谢

wangzhph 发表于 2012-6-5 18:02:55

点击program 后

OK
Reading FLASH input file.. OK
Setting device parameters for jtag programming ..OK
Entering programming mode.. OK
Erasing device.. OK
Programming FLASH ..       FAILED!Leaving programming mode.. OK

怎么回事?

Elechouse 发表于 2012-6-10 09:26:24

我在编程、编译、烧录这几步都没问题,就是仿真的时候,必须要保存并关闭当前的工程,重新打开该工程才能仿真,虽然没多大影响,但会比较麻烦,有没有什么好的解决方法呢?{:smile:}

zhonggp 发表于 2012-12-11 19:17:30

第一眼看焊接的led很强大,很有创意,然后想到好像全部一起亮好像有问题的。然后就是想到做实验不用一起亮的哦。

OYL 发表于 2012-12-17 12:20:17

一直觉得这个很高端。。。阿莫自主品牌。

chenjnh 发表于 2012-12-18 11:31:31

IC设计,代工? 不错

zl_123 发表于 2013-10-22 20:51:57

才看到这个教程,是否有更详细的使用教程呢,

zl_123 发表于 2013-10-22 21:11:05

很期待更多的教程,谢谢

mathison 发表于 2013-10-28 11:34:23

出现的问题 如下
Erasing device.. OK
Programming FLASH ..       OK
Reading FLASH ..       OK
WARNING: FLASH byte address 0x0000 is 0xFF (should be 0x0C).. FAILED!
Leaving programming mode.. OK


mathison 发表于 2013-10-28 16:06:12

mathison 发表于 2013-10-28 11:34 static/image/common/back.gif
出现的问题 如下
Erasing device.. OK
Programming FLASH ..       OK


问题已解决 目标版需要供电才可以

shenggor 发表于 2013-10-28 17:00:09

灰常好。。。。。。。。
页: [1]
查看完整版本: (教程2).LGT编程、编译、烧录、仿真的第一个范例:流水灯,