搜索
bottom↓
回复: 124

usbasp制作汇报

[复制链接]

出0入0汤圆

发表于 2007-3-20 01:50:40 | 显示全部楼层 |阅读模式
昨天下午5点收到了网友xiaobendan赠送的USBASP板10块(非常感谢了)。



晚上就开始做功课,仔细看了相关的资料,以及USB的标准。感觉上公板(即德国人的)USB的物理层(电特性)与标准不附,可能是造成不稳定的主要因素之一。



接着准备器件和材料。今天自己动手做了2快。第1快做好不成功,主要是PC认不出USBASP设备,驱动程序根本不能装。先放着,再做一块,还是同样问题。



开始进行改动,将PC的USB口5v串了2个4007二极管,这样到USBASP上为3.6v。这次PC认出了USBASP的设备,进入了安装驱动程序的过程,看到了成功的希望。



然后经过3个小时,调试、测试等,最后2块USBASP都可以初步的进行下载编程了。



使用环境如下:

1。ASUS笔记本(双核),Win-XP,USB2.0的口4个。



2。自己制作的USBASP2块,使用1米长的USB延长线,从本本的USB连接到USBASP。



3。Windows下的USBASP设备驱动使用德国人06/12/29提供的程序,并根据网友xiaobendan的提示进行了修改(再次感谢xiaobendan),就是将USBASP.INF文件的倒数第3行的内容改为"USBasp"=LIBUSB_DEV, USB\VID_03eb&PID_c7b4



4。使用M8L的芯片,12M。程序采用网友zhifeng提供的直接下载的HEX文件(谢谢zhifeng),见http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=726705&bbs_page_no=1&bbs_id=1000。HEX文件在http://www.ouravr.com/bbs/bbs_upload4327/files_6/armok01146501.rar



5。下载工具软件还是使用网友zhifeng的最新版progisp-1.65。(再次感谢网友zhifeng)。



6。笔记本的USB提供5v到USBASP板上,经过2个二极管作为USBASP的Vcc(3.6v)。目标板(就是使用的AVR-51板)使用5v,单独供电。



7。多次烧写了M8、M16、M48。测试过程中无明显故障出现,没有出现USB通信不畅,需要重新拔插的现象。



8。手头还有M128、M8515、M88等芯片,等有时间再做测试。



9。家里还有3台PC和另外的2台笔记本,有W2K,也有W-XP,有USB1.1口和USB2.0口,有时间也测试一下。



10。学生已经组成了4个组,我可以指导他们做了,同时也就有更多的测试了。目前只是发给他们资料学习。板和器件还没发。但我已经提出了严整的警告:当心你PC的USB口!!烧毁了我不负责:)





有几个问题还需要解决和弄清楚:



1。网友zhifeng的progisp-1.65有两个选择:USBASP和New USBASP。它们的区别是什么?我只能使用USBASP,而不能使用后者。为了采用progisp-1.65,所以我使用了zhifeng提供的HEX,但好象是配合USBASP的,不支持New USBASP。



2。progisp-1.65中有速度调节控制条,根据zhifeng介绍,原版上的速度选择跳线可以不用了。那么这个功能是zhifeng所提供的HEX所支持的吗,公板的HEX支持吗。在progisp-1.65中,是否所有的下载过程都可以利用界面上的速度调节来控制吗?



3。网友xiaobendan的提示的对USBASP.INF的修改是针对公板提供的HEX,还是针对zhifeng提供的HEX?



4。烧写M8和M48的速度还是非常快的,但烧写M16就比较慢(比使用并口ISP明显的慢),不管HEX代码多大,编程需要17秒,校验也需要17秒(M16配置为内部RC/1M),当配置使用内部RC/8M时,速度就很快了。而使用并口ISP下载时,不管芯片使用的时钟如何,下载的速度没有这样大的区别。



=======================================================

以上几点请做过该USBASP的网友介绍一下,特别是zhifeng和xiaobendan,如果方便和合适的话,请能仔细介绍介绍。在本站有不少USBASP的帖子,提供的下载资料和程序也多,我多次上翻下查,还是感到有点乱。有些已经过时了,为旧的版本了。



我会在网友的支持下,再进行一些测试和比较。如果能得到比较满意的结果,则会将整个实现过程,包括修改的电路设计、使用的软件等全部提供,供大家参考。



实际上,如果这款USBASP工作稳定,能够支持多数的常规AVR芯片的话,就可以象并口ISP一样,成为一款好的开发工具了。而且,掌握了其USB软内核的原理,那么开发比较简单的USB设备的话,使用AVR就可以了,及方便又经济实惠。



最后,再一次的向zhifeng和xiaobendan表示感谢!

出0入0汤圆

发表于 2007-3-20 07:46:59 | 显示全部楼层
大部分问题可能需要zhifeng来回答了。我先说下自己的理解。

问题1:zhifeng提供的HEX文件就是公版的快速版本。NEW USBASP里面的HEX文件实际上是一样的,和旧版本的不同之处就是USB的地址不同。安装驱动时不要去修改那个内容,就可以选择NEW USBASP了,当然此时应把HEX文件也更换为新版本里的,否则会提示找不到设备。

问题2:根据我的理解,速度调节仅支持zhifeng自己的那个线。

问题3:zhifeng提供的那个HEX就是公版的,我提供的也是(M48),但是高速会慢一半(可以比较快的速度写1M的M48)。

问题4:这个问题我无能威力了,因为我只有M48一个芯片,没有测试其他的。

其实我做的工作都很简单,zhifeng才是高手!

出0入0汤圆

发表于 2007-3-20 08:10:46 | 显示全部楼层
马老师真是勤奋呀,工作到这么晚.就我制作和使用的情况来看,答复马老师的问题

问题1:可以直接使用官方网站的hex,烧进去就是newasp了

问题2: 所有的烧写都可以使用那个速度条调节

问题3: USBASP.INF,相当于换了一种驱动方式而已,改了一下显示名字,其实没啥区别

问题4: 与目标板的速度有关,使用8M频率肯定比1M频率快

出0入0汤圆

发表于 2007-3-20 08:36:54 | 显示全部楼层
当心你PC的USB口!!

-----------------------------

    马老师几次提到烧毁usb口,其实只要不电流倒灌,应该没有问题,因为usb规范里规定,usb芯片要能承受四根线任意两根短路24小时以上。

    如果加了降压用的二极管,那么同时也有繁殖电流倒灌的作用。D+和D-上有68-100殴的限流电阻,问题也不大。



    当然,学生实验还是需要小心一些,比如焊接、跳线操作失当不小心绕过了这些保护。

出0入0汤圆

发表于 2007-3-20 08:50:12 | 显示全部楼层
台式机 usb 口结实些,短路也不要紧;笔记本 就 容易烧了。



马老师 串两个 二极管的做法 使我更加确定:电脑usb 应该是 3.3v 系统。

出0入0汤圆

发表于 2007-3-20 09:35:37 | 显示全部楼层
多谢xiaobendan夸奖,其实我的水平一般般。

   楼上几位网友基本解释完马老师提出的问题(我需要回答的),我也就没有啥要讲的了,但马老师点了我的名我还是要说两句。

   问题1:新版与老版仅仅是pid不同。

   问题2:我提供的hex支持自动速度调节,progisp设为默认自动即可,不用手工调节速度,progisp会根据目标板的时钟选择下载的速度,目标板低于1.5mhz会慢速下载否则高速下载。

   问题3:donkey 知秋解释得非常好

   问题4:看问题2解释。

   另,我还想说一句USB软内核的工作是很稳定的,不像有些人说的那样不稳定,可能与硬核有点差别,也主要差别在速度上。如果将软硬件设计的好,其性能不比硬核差(不谈速度)。对于usbasp的优缺点我不便多说。其一,现在我对usbasp的研究少了,了解也就少了,所以不便多说。其二,我对新版下载编程器的内核进行了重构,所以也不便多说(免得找骂)。

   如果有问题,尽管提出来,我能解说的一定解说(能力所能及的)。

出0入0汤圆

发表于 2007-3-20 12:43:01 | 显示全部楼层
部份本本的USB口做的不好没有保护电路的。我的破联想的本本到有这功能,一短路,机子就会断了电源。

出0入0汤圆

发表于 2007-3-20 12:44:05 | 显示全部楼层
呵呵,我希望阿莫提供USBASP的成品。DIY对个人来说有点烦,要买零件太累人。

出0入0汤圆

 楼主| 发表于 2007-3-20 20:28:34 | 显示全部楼层
根据以上各位的解释,我进行总结,看对不对:



目前最新的软件(可能是最新的)有:



1。HEX文件2个。

    公版HEX----德国人06/12/29提供的HEX(不支持自动速度调整)临时称为G版

    网友zhifeng提供的HEX文件,临时称为Z版。(07/3/14帖在站上,支持自动速度调整,http://www.ouravr.com/bbs/bbs_upload4327/files_6/armok01146523.rar)



2。PC上针对USBASP的的驱动程序,德国人06/12/29提供:USBASP.INF。

   USBASP.INF(G):表示没有改动。

   USBASP.INF (Z) :表示要对USBASP.INF文件的倒数第3行的内容改为"USBasp"=LIBUSB_DEV, USB\VID_03eb&PID_c7b4



3。上位机软件为zhifeng的最新版progisp-1.65,里面有2个选项:

   USBASP

   NEW USBASP



组合方式为3种,分别为:



1。Z版HEX《---》USBASP.INF(Z) 《---》 选USBASP。支持速度自动调节(我安装成功)



2。Z版HEX《---》USBASP.INF(G) 《---》 选NEW USBASP。支持速度自动调节(我试过,不行,装不上驱动,提示没有硬件信息)



3。G版HEX《---》USBASP.INF(G) 《---》 选NEW USBASP.不支持速度自动调节(没试过)



以上理解对么?


-----此内容被machao于2007-03-20,21:17:41编辑过

出0入0汤圆

发表于 2007-3-21 10:37:33 | 显示全部楼层
小弟刚刚入门,刚刚焊了一块用74HC244做的并口下载线,但是我要对M8编程的时候是那个10针的接线是如何接M8的呢?Reset,MOSI MISO SCK已经知道如何接了,但是我对那个J1的2脚和8脚有疑问.是不是就是用外接电源连上这两只脚并和M8的VCC,GND接上呢?烧写时如何设置M8的熔丝位?

出0入0汤圆

发表于 2007-3-21 20:05:13 | 显示全部楼层
请问后面10针的接口同目标板是怎么连接的呀!TXD、RXD同目标板上什么接口连接呀!





在写入时出现这样的问题是什么意思???



出0入0汤圆

 楼主| 发表于 2007-3-21 21:14:45 | 显示全部楼层
不建议新手自己制作,就是照葫芦画瓢的做好了,你也没有任何的收获和长进!!。别看使用的器件少。电路也简单,但涉及的知识范围非常广。不要想一口气就能成为“高手”。天上不可能掉馅饼的,只有踏踏实实的一步一个脚印的刻苦学习才行。



    不熟悉的网友请先不要询问这些问题,上面的问题可能只有zhifeng等少数人才能给出标准的答案。等我全部整理完毕后,会将详细的制作过程贴上,提供大家参考和自己制作。



    目前已经在对公版的电路图设计进行了改动(增加3.6v的稳压芯片,不提供目标板电源等),并且已经安排设计新的PCB,一旦测试下来比较稳定,我会公布全部的制作资料和相应的软件的。

出0入0汤圆

发表于 2007-3-21 22:03:28 | 显示全部楼层
收到板后,我今天也做成功了,我没做任何改动,固件和PC驱动都是用zhifeng的,我是在台式机WINXP2通过的

感谢xiaobendan,zhifeng
-----此内容被lcfcl于2007-03-21,22:04:43编辑过

出0入0汤圆

发表于 2007-3-21 23:03:10 | 显示全部楼层
其实我的问题就是和10楼的一样

出0入0汤圆

发表于 2007-3-21 23:03:18 | 显示全部楼层
目前已经在对公版的电路图设计进行了改动(增加3.6v的稳压芯片,不提供目标板电源等),并且已经安排设计新的PCB,一旦测试下来比较稳定,我会公布全部的制作资料和相应的软件的。------------------

马老师你注意没有,如果用3.6v(什么芯片是3.6v稳压的?)供电,可能应用在5v系统会有点问题.

我自己作了一个就是用3.3v供电的,可以使用,在5v系统也行,就是有时很慢,还有就是挑板(是挑板,不是挑芯片,即使同一电路,有的板行,有的板不行).

原电路图制作的,也有挑板现象,但是不严重.

如果用hc244作的,没有发现上诉问题

出0入0汤圆

发表于 2007-3-21 23:07:24 | 显示全部楼层
我的:(G)版06/12/29HEX + (G)06/12/29USBASP.INF  选NEW USBASP  ok!

出0入0汤圆

 楼主| 发表于 2007-3-21 23:42:27 | 显示全部楼层
14楼,准备用HT7536(3.6v/100mA),该电源仅提供M8和2个LED工作,够了。根据USB的协议,3.3v有点低了。



目标板自己供电,这样不管目标板是5v还是3.3v,应该都没问题的。另外就是考虑要确保PC的USB口安全,减少M8电源的波动。



今天同同事讨论过这个问题,最好在M8和下载口之间加一片HC244,由目标板供电。最后放弃了,认为M8可以了,烧片子的电流不是由USBASP提供,应该没问题。当然,该改动的设计要等我做好并经过测试没问题时再正式告诉大家。



PCB准备全部使用贴片封装的器件,去掉M8的插座以及跳线,减少受干扰的部分。12M晶体并上1M电阻,尽量保证它的工作稳定性。USB对时序要求比较严格,如果12M时钟有偏差,肯定会不稳定的。



15楼的帖子,证明我的第3组合分析对的,但没有自动速度调节功能。

出0入0汤圆

发表于 2007-3-22 07:32:38 | 显示全部楼层
我也没有试过,但是我认为自动速度调节是zhifeng的东西才有的。其实双龙的东西可能也只是改了设备的PID和名称而已,就和新的公版差不多。我在调试程序的时候一般不打开目标的电源而是直接使用USB的电源,当然一些大的耗电外围要先断开而使用一个LED代替。如此300MA的电流对于大部分应用都够了。

出0入0汤圆

 楼主| 发表于 2007-3-23 00:52:54 | 显示全部楼层
看给谁使用了。



学生在实验中经常会将Vcc与Gnd短接,他们根本不会考虑什么“一些大的耗电外围要先断开而使用一个LED代替”。



烧了我的实验板不要紧,烧了学生本本的USB口我可赔不起:)

出0入0汤圆

发表于 2007-3-23 09:05:57 | 显示全部楼层
唉,现在的学生都笔记本了。

出0入104汤圆

发表于 2007-3-25 00:37:19 | 显示全部楼层
USBASP-ISP -> STK500v2 conpatible (direct from AVR-Studio useable)



http://www.ullihome.de/index.php/USBAVR-ISP

出0入0汤圆

发表于 2007-3-25 10:35:46 | 显示全部楼层
咦??

红日老大又出现啦??

好像好久没见啦

出0入0汤圆

 楼主| 发表于 2007-3-25 14:44:54 | 显示全部楼层
谢谢20楼提供信息。有时间试试看。

出0入0汤圆

 楼主| 发表于 2007-3-25 16:27:10 | 显示全部楼层
根据andy 红日提供的线索,直接下载了“USBASP-ISP -> STK500v2 conpatible (direct from AVR-Studio useable)”的HEX文件。然后烧在M8中,使用原USBASP的硬件进行了测试,结果比较满意。



1。USBASP-ISP在Windows中模拟了一个串口。

2。在AVR-Studio中可以使用,属于STK500 or AVRISP设备(我使用的是最新版AVR Studio 4.13)下图是使用AVR Studio工具栏中的自动连接,认到USBASP-ISP后的操作窗口



3。在STUDIO中表现良好,可以在STUDIO中调节速度,没有发现掉线情况。

4。同时在ICC、CVAVR、BASCOM和zhifeng的下载软件中进行测试(这些软件都有STK500的选项),发现zhifeng的下载软件基本不支持,其它的软件能有动作,但非常不稳定,经常掉线,基本不能使用。



准备再做些测试,如果在AVR-Studio中能稳定使用的话,也是不错的了。




-----此内容被machao于2007-03-25,16:47:12编辑过

出0入0汤圆

 楼主| 发表于 2007-3-25 17:37:41 | 显示全部楼层
各位想测试USBASP-ISP的注意:



如果你的板采用了USBASP公板电路,请使用avrisp_usbasp.hex。这里的与USBASP兼容是指硬件兼容。



如果你使用了USBASP-ISP的电路图,就使用avrisp.hex。



经过测试和分析,两个HEX基本上是相同的,都是在AVR Studio下使用(STK500v2 conpatible) 。区别在于avrisp.hex的电路比avrisp_usbasp.hex多用了一个led目标板表示状态,并对目标板的电压进行检测。驱动LED的引脚有变化。

出0入0汤圆

发表于 2007-3-25 21:59:40 | 显示全部楼层
USBASP-ISP -> STK500v2 conpatible (direct from AVR-Studio useable)

怎么下载呀!





外文看不懂啊!
-----此内容被wj414于2007-03-25,22:20:40编辑过

出0入0汤圆

发表于 2007-3-25 22:36:08 | 显示全部楼层
是啊,是看不懂,这个网站有些英文,又有些类似德语和法语的(具体是什么,也不认识,反正肯定不是英语)!

出0入0汤圆

 楼主| 发表于 2007-3-25 22:59:42 | 显示全部楼层
http://www.ullihome.de/index.php/USBAVR-ISP



是德语。

出0入0汤圆

发表于 2007-3-25 23:54:02 | 显示全部楼层
USB的D+、D-应该是3.3-3.6V,阻抗我记不准了,好象是几十欧到510欧,范围较宽。我开始做的USBASP没有限压,结果认机器,按一些网友的做法,调换电阻,结果这台机器认了,另外的机器就不认了。把D与GDN之间加了3.6V稳压管后都能正常安装。

这是网上的一张图,是加了3.6V稳压管的。



这是我做的USBASP,线路板是热转印做的,省了晶振的两个接地电容。秀一下。

出0入0汤圆

发表于 2007-3-26 10:03:28 | 显示全部楼层
哇,好久没看到 红日 了!

出0入0汤圆

发表于 2007-3-26 12:05:56 | 显示全部楼层
烧了我的实验板不要紧,烧了学生本本的USB口我可赔不起:)









可以买一个usb扩展器,学生们做的isp先在扩展器上实验,没问题了再接到本本上试,一个扩展器很便宜的

出0入0汤圆

发表于 2007-3-26 12:52:35 | 显示全部楼层
28楼的外壳很好啊

出0入0汤圆

发表于 2007-3-27 00:19:37 | 显示全部楼层
呵呵,自我感觉也不错,逛电子市场偶然发现的,一块五一个。做了三个,一个送人了。手里另有一个是在淘宝网上买的,外壳稍比这个大点,电路中没有稳压管,有的笔记本电脑不认,我给加上了,使用很正常,这个现在不用了,有需要的朋友可以联系我,邮费可不能让我掏啊,22元EMS费即可,呵呵,济南的朋友可以直接找我拿。goto1480@163.com

出0入0汤圆

发表于 2007-3-27 09:40:54 | 显示全部楼层
你的外壳的开口是自己开的吗?

出0入0汤圆

发表于 2007-3-27 10:21:59 | 显示全部楼层
电钻+美工刀,什么样的口,孔的都能开出来。



PS:http://www.ullihome.de/index.php/USBAVR-ISP 这个东西好啊,谢谢andy 红日

出0入0汤圆

发表于 2007-3-27 12:47:30 | 显示全部楼层
自己开的,壁纸刀、小钢锔、小平锉。

出0入0汤圆

发表于 2007-3-27 13:45:39 | 显示全部楼层
原来不需要USB transceiver也可以实现USB通讯啊。估计协议处理复杂吧。

出0入0汤圆

 楼主| 发表于 2007-3-28 00:53:52 | 显示全部楼层
前几天得到网友xiaobendan赠送的USBASP板10块,接下来在网上进行了一翻查找,参考了很多网友的制作经验,并进行了一定的测试和对比,最新的进展情况如下。



1。利用xiaobendan赠送的USBASP板制作了6个USBASP,全部成功。电路为最新的带2个3.6v稳压二极管的公板图(在USB的D+、D-与地之间)。



2。已经重新做50块PCB板,电路使用5v转3.6v电源芯片,全部采用贴片形式。目前还没到到手,待到后再进行测试和验证。因为目前我的班上学生大约有20人使用手提。



3。软件可以使用2种方案:

   avrisp_usbasp.hex + AVR Studio

   网友zhifeng的 usbasp.hex + progisp.exe



    以上两种方案各有长处,但最大的不足是ICCAVR、CVAVR和BASCOM等都不支持,或支持的不好。没有并口的STK200/300方便和可靠,但对于解决本本上没有LPT口及学习和一般的使用应该还是不错的。



    不知道其它的网友是否还有更好的方案提供,做到便宜、性能稳定和使用方便。



    如果顺利,将在下周将制作的全部资料上帖在我的讨论组里。



    再一次感谢xiaobendan、zhifeng、andy 红日等提供的各种帮助和信息,同时也感谢阿莫提供的交流园地。

出0入0汤圆

 楼主| 发表于 2007-3-28 13:46:44 | 显示全部楼层
使用网友xiaobendan赠送的USBASP板制作的USBASP实物图:

1。整套全图





2。USBASP正面





3。USBASP反面





增加了2个3.6v稳压二极管,去掉了速度调节和对目标板提供电源的跳针。M8的RESET与旁边的跳针焊点在反面短接,用于向本板上M8写程序。



不好意思,直接将数码相机中的图片贴上了,太大了。
-----此内容被machao于2007-03-28,14:09:29编辑过

出0入0汤圆

发表于 2007-3-28 14:47:01 | 显示全部楼层
不错,即使经过改装也蛮美观

出0入0汤圆

发表于 2007-3-28 15:40:05 | 显示全部楼层
我也查过一些资料,多得我头都昏了

有资料说这款usbasp不能对at89s51等系列单片机进行isp下载,不知道有没有对这方面进行过测试呢?如果对全部型号具有isp接口的mcu不兼容,我觉得是挺可惜的。

出0入0汤圆

发表于 2007-3-29 11:35:46 | 显示全部楼层
37楼:能否上传一个 avrisp_usbasp.hex and schematic??

出0入0汤圆

发表于 2007-3-29 12:08:17 | 显示全部楼层
有个担心,如果拿他直接接笔记本电脑,会不会出现损坏本本USB口的可能啊?如果会的话损失就大了。

出0入0汤圆

发表于 2007-3-29 12:17:07 | 显示全部楼层
如果操作不当很可能会烧坏本本的usb口的,所以这种小制作不专业不实用

出0入0汤圆

发表于 2007-3-29 19:59:06 | 显示全部楼层
哈哈,图片是大了点,看起来不太方便。

马老师的那两只电阻够经典了啊!

出0入0汤圆

 楼主| 发表于 2007-3-29 23:17:01 | 显示全部楼层
新改板的50块PCB板到手,电路使用5v转3.6v电源芯片,全部采用贴片形式,所以比上图的小了一半。完全是正式产品了,就是外包装不好解决,先用起来。



    马上将器件贴上,做了2个,下了程序,马到成功。已安排备50套的料,下星期制作。



    完成后会将全部资料公开的。

出0入0汤圆

 楼主| 发表于 2007-3-30 19:17:43 | 显示全部楼层
新板的USBISP-ASP实物图:





这次图处理过了,不会太大:)

出0入0汤圆

发表于 2007-3-30 21:19:10 | 显示全部楼层
哪个红红的东西是啥?照片有点蒙哦

想看看制作50只的结果

出0入0汤圆

发表于 2007-3-31 08:51:06 | 显示全部楼层
我做了几个,上传protel文档,接口是6pin排针,目标版可以设计成6pin的排孔,

这样直接插入用手弯紧就可以下载了,本人使用非常方便(下载4000片/天)

pcb板上

R7是给目标板限流供电的,可以是10--120欧姆(pin1)

R3-R6是目标板短路保护,可以是220欧姆

点击此处下载armok01148658.rar

usbasp 的代码(1.5M失败自动用32k的下载速度)

点击此处下载armok01148659.rar

usbisp(stk500)的代码

点击此处下载armok01148660.rar

win98下的驱动是更改了ID的cp210x的驱动

现有pcb空版20余块,可以免费赠送(快递到付)

有兴趣的请mail to zhuxingyin@sina.com





-----此内容被zhuxingyin于2007-03-31,09:45:16编辑过


-----此内容被zhuxingyin于2007-03-31,09:53:41编辑过

出0入0汤圆

发表于 2007-3-31 08:54:18 | 显示全部楼层
那红色的明显是一个发光二极管呀。那下面还有D2的字样呢!!

出0入0汤圆

发表于 2007-3-31 10:03:02 | 显示全部楼层
48楼上的再加上AvrUSBboot,上电时短接pin5与pin6

点击此处下载armok01148667.rar

出0入0汤圆

发表于 2007-3-31 15:02:54 | 显示全部楼层
暂时用热缩套管套起来安全些。

出0入0汤圆

 楼主| 发表于 2007-3-31 15:06:58 | 显示全部楼层
想法一样。已经在找透明的热缩套管了。

出0入0汤圆

发表于 2007-3-31 18:43:45 | 显示全部楼层
我用在D+和D-上用120殴的限流电阻,延长线>2.5m,在多台计算机上用,都正常

出0入0汤圆

 楼主| 发表于 2007-4-1 15:02:11 | 显示全部楼层
从USB口的5v降到3.6v后提供M8工作,这样USBASP的硬件系统就完全符合USB的电特性标准了,D+、D-串的2个电阻标准为90欧,偏差10%。



   我试过3种方式:(1)使用了2个二极管降压;(2)使用3.6v稳压模块降压;(3)以及不降压,但必须在D+D-上加上两个3.6v的钳位二极管。这3种方式都非常稳定,对D+、D-的电阻要求不高,不必细调了。



   到现在为止,已经做了17个,5个采用方式3,10个采用方式2,2个采用方式1,都成功的。且在多台手提上试过了,加延长线或不加延长线都工作,没有不能识别的情况发生。



   另外,原制作的德国人,将USBISP-ASP的M8核又更新了,最新的版为07_3_28。上一版是07_3_23。更新还挺快的。



下面是正式的新版USBASP实物,发光二极管采用小的管子了,上面发的图中使用了一个大二极管(红色),是因为配件未到,顺便手边拿了一个装上了,见笑。


-----此内容被machao于2007-04-01,15:17:10编辑过

出0入0汤圆

发表于 2007-4-1 17:16:56 | 显示全部楼层
马老师真是一个很严谨而无私的学者,我获益良多

有个问题我还是想提出来讨论一下:

为什么usb的D+作者一定要用PD2(INT0)和PB1呢?如果不用PORTB口,只用PORTD口,直接用PD2,将D-的PB0改为PD3不是能省一根口线吗?
-----此内容被donkey于2007-04-01,17:30:10编辑过

出0入0汤圆

 楼主| 发表于 2007-4-1 19:23:20 | 显示全部楼层
到目前为止,我还没有时间仔细研究M8软USB内核的实现过程。我主要的目的是为那些选了我的课程,使用本本的学生解决程序下载的困难。



USB时序要求比较严格,M8是通过软件方式来接收USB HOST下发的信息,所以它必须要(1)紧紧的跟踪D+D-的变化(采用INT0)中断;(2)严格的定时记数(采用PB0,其实是TC1的ICP,输入捕捉);(3)使用12M晶体。



使用T/C的输入捕捉方式,可以实现精确的定时和计数,(比一般的采用2个T/C或一个外部中断加一个T/C要精确的多),所以要用PB0。而INT0作为最高的中断,则肯定是及时的跟踪D+的变化了。



以下是ATMAL的应用笔记309的硬件说明部分,其硬件同USBASP:

-----------------------------------------------------------------------------

USB数据线 DATA- 和 DATA+ ,连接到AVR单片机的管脚 PB0 和 PB1 上。这个连接关系不能被修改,因为固件使用了一个AVR技巧来快速接收信号:从数据线(PB0)捕捉位信号并右移,结果保存到接收寄存器中。PB1用作输入信号,因为在8引脚的Attiny单片机中,这个引脚可以用作外部中断(INT0)。此时不需要再连接信号到INT0 – 8引脚的AVR单片机目前是引脚数最少的AVR单片机了。对于其他型号的AV单片机,连接 DATA+ 到 INT0 引脚是必要的,这样对于不同型号的AVR单片机就不需要修改固件程序了。

------------------------------------------------------------------------------



可见,使用AVR软USB可能是参考了ATMEL的例子,只不过ATMEL给出的是汇编代码,而其它的人则采用C来实现了。但硬件是相同的。



这个例子充分说明了AVR的优点和性能,到目前为止,我没有看到用其它的8位机实现的软USB能进入具体的应用。前段时间我用一个51内核的MCU做过一个1.1低速的USB设备,但那块芯片本身内部集成有USB的底层硬件接收和发送接口的(ups32xx)。



这个USBASP尽管硬件比较简单,但是涉及到了很多的技术层面,不仅是对AVR本身使用的熟练掌握、同时还需要了解USB的协议,PC上WINDOWS的驱动,AVR的编程协议,PC上层软件的编写等等。由于所有的代码资料都开放的,所以这个东西是非常值得深入学习和探究的。尤其是对那些有了一定的基础,想上更高层次发展的工程师。

出0入0汤圆

发表于 2007-4-1 20:25:02 | 显示全部楼层
我做过各种,还是双龙的稳定好用



毕竟是个公司,太差不好意思拿出来吧

出0入0汤圆

发表于 2007-4-9 09:52:52 | 显示全部楼层
顶一下

马老师说过把制作的资料上传,是不是忘了?

期待了N多天了...

出0入0汤圆

发表于 2007-4-9 21:12:49 | 显示全部楼层
是啊

我也帮你顶一下。

......

出0入0汤圆

发表于 2007-4-9 22:20:34 | 显示全部楼层
怕燒USB的話,不要用usb供電,用電池供電



把USB兩端的VCC,GND串上10K限流,跟電池並聯,一起供電如何..

..

實際上USB只負責提供等電位,電流由電池提供





==

PS.請較是否能給一份可行的USBASP 的 PROTEL DDB檔

出0入0汤圆

 楼主| 发表于 2007-4-9 22:37:23 | 显示全部楼层
59楼:双龙的东西我有,USBCOPYA。双龙的东西USB部分也是采用M8,用5V,不符合标准,在我的ASUS本本上也认不出来。我手头有2个,打开后并上2个3.6v的稳压管,全都认了。就怎么简单。



60楼:新版加旧版共做了25个,在我的本本上都能用的。本周四发给学生使用,要等批量使用情况出来,如果都能使用再把资料上帖。

出0入0汤圆

发表于 2007-4-9 23:33:18 | 显示全部楼层
期待马老师的资料哦,我也想搞个USB下载线。

出0入0汤圆

发表于 2007-4-10 01:42:42 | 显示全部楼层
请问

把usb的电源和地都断开。不加3.6V稳压管,用外部的3.3V电压可以吗??

出0入0汤圆

发表于 2007-4-10 13:08:38 | 显示全部楼层
马老师,我的板没有加3.6稳压管,D上可测到4V,加了后测到2.xV,不过加没加稳压管电脑认都很正常,不知道你的板电压是不是也一样?

出0入0汤圆

发表于 2007-4-10 22:46:10 | 显示全部楼层
说双龙的好主要是它的软件支持好,使用起来顺手,也能稳定写51



双龙硬件确实有问题(后来应该改进了),改起来也很简单,但是他的有缓冲,有不好好处,隔离了,低压支持了



你留个邮件我发你看看就知道了

出0入0汤圆

 楼主| 发表于 2007-4-11 01:28:48 | 显示全部楼层
ma-chao@online.sh.cn



没说双龙的东西不好,手头就有2个。我为一个公司开发的产品(烧片量10K/月),原来他们使用PC+并口ISP,去年我给他们买了5个双龙的USBCOPYA使用,不仅效率提高N倍,而且随便一个人都能操作了。



USBCOPYA我拆开看过,使用了M8作为USB的接口,增加了45db041和隔离驱动,以及电源管理等。他们公司的技术人员,还是花费了精力,在掌握M8的USB软核基础上,增加了许多功能,应该是好事。所以我认为,USBASP、USBISP值的认真学习和研究,因为都是开放的。



存在的问题就是硬件的问题,可能不是所有的电脑都会出现,但我的华硕笔记本就不认。我手头的两个USBCOPYA,全部都并接了3.6v的稳压二极管后才能正常使用的。现在许多本本的USB口是2.0的,所以对低层硬件要求更高了。



网上有个日本人的硬件设计,我认为更合理些:USB口的5V经过3.6v稳压,为M8供电,这样M8的D+、D-都为3.6v,符合USB标准。另外增加一片驱动片,使用USB口的5v供电。



做产品不是自己使用,所以要考虑的更加完善和可靠。尤其电源部分,要尽量保证不能把PC的USB口损坏。



昨天,听说我的一个学生本本的USB口坏了,他拿表棒直接插到本本的USB口内去量电压。有2个同学这么做,一个保护关了机,没出事。我批评说怎么能这样做。学生回答:没事,在保。晕!看来,我落伍了,跟不上时代发展了。

出0入0汤圆

发表于 2007-4-11 07:43:53 | 显示全部楼层
昨天,听说我的一个学生本本的USB口坏了,他拿表棒直接插到本本的USB口内去量电压。有2个同学这么做,一个保护关了机,没出事。我批评说怎么能这样做。学生回答:没事,在保。晕!看来,我落伍了,跟不上时代发展了。



-----------------------------------------

这种人实在太多了,也对产品设计提出了更苛刻的要求,要不多遇到几个这种人得赔死

出0入0汤圆

发表于 2007-4-11 08:31:50 | 显示全部楼层
"网上有个日本人的硬件设计,我认为更合理些:USB口的5V经过3.6v稳压,为M8供电"



不要崇洋媚外,双龙的产品早就这样设计了,并且加了USB口保护

出0入0汤圆

发表于 2007-4-11 08:38:42 | 显示全部楼层
哪位老师能回答一下

弱弱地问一下哈

USB不能用万用表量电压吗?

出0入0汤圆

发表于 2007-4-11 08:55:51 | 显示全部楼层
to:【70楼】 xieyuanyuan

  这些改进,好像真是日本人先搞出来的,不知能不能说说双龙的usb口保护的原理?

出0入0汤圆

发表于 2007-4-11 09:13:13 | 显示全部楼层
To 71楼xuepeng2000: 偶不是老师哈. 可以测,但是那学生测的时候短路烧了~

出0入0汤圆

 楼主| 发表于 2007-4-11 09:14:38 | 显示全部楼层
哈哈,来了。



USB当然可以用表量电压的,关键是,你将表棒伸到USB口内量电压的方法不对,USB口的外围有一圈金属,它是接地的,表棒伸进去时,将正电压和外壳地短路了!!就这么简单。



70楼,其它方面我没有发言权,在电子领域,不谈什么核心技术、芯片了,就是一般的设计方面,我们的确不如人家。这里不涉及政_治,但可能的一个重要原因,就是心态问题,我们都染上了“浮躁”病。不谈什么类似交大的“龙芯”事件,就拿USBASP这样的东西,也不是国内技术人员先做出来的。双龙也是参考这样的设计后,再加上自己的东西。这点你不能否认吧。



看看71楼的问题,这是我们目前培养的工程师提出的问题。



我上星期刚从双龙拿了一个USBCOPYA,也是并上3.6v的二极管才能在我的本本上用。没说双龙的不好,优点归优点,不足归不足。

出0入0汤圆

发表于 2007-4-11 09:23:20 | 显示全部楼层
to zhifeng

你自己买个抄一下板就知道了啊 哈哈

感觉是马老师的号被人盗用了

出0入0汤圆

发表于 2007-4-11 09:31:57 | 显示全部楼层
我还是不抄了,有时用自己的思路更可靠,我只是站在技术的角度看待这个问题,保护也莫过于过流,过压保护,用个358之类的运放就解决了。可能最关键的还是倒灌。

出0入0汤圆

发表于 2007-4-11 11:49:47 | 显示全部楼层
应该从另外的角度说,本本的USB接口设计也有问题,不然在其他电脑能用的,为何在本本上不能用

出0入0汤圆

 楼主| 发表于 2007-4-11 13:01:30 | 显示全部楼层
不否认可能是本本的问题。但很明显,德国人最原始的设计D+、D-的最高电压为系统5v,这明显与USB的协议不符。就在去年底,德国人在他的电路上增加了两个3.6v的稳压二极管。你可以到他的网站看看。



75楼,我的什么号被人盗用了?值多少钱?值钱的话,我多申请几个号,然后买号:)

出0入0汤圆

发表于 2007-4-11 13:13:17 | 显示全部楼层
感觉也是马老师的被盗

要不是就马老师心情极佳 

谢谢楼主各位

我上baidu查了一下也可以测USB的电压

我以为我前两测的不对呢

呵呵原来是表笔给短路了哈.

吓了一跳

谢谢!

出0入0汤圆

发表于 2007-4-19 09:08:28 | 显示全部楼层
怎么这么长时间没下文了啊,呵呵

支持一下

出0入0汤圆

 楼主| 发表于 2007-4-19 09:36:04 | 显示全部楼层
昨天了解一下,20个使用有个别的出现问题,晚上回来查了查,发现是M8的焊接问题。因为年纪大了,眼睛有些花,做的不如以前了。



昨天有做了几个,再等几天,看看情况。

出0入0汤圆

发表于 2007-4-19 10:58:13 | 显示全部楼层
估计machao的帐号被盗了,不然就是马老师返老还童了,哈哈

出0入8汤圆

发表于 2007-4-19 11:33:06 | 显示全部楼层
真的佩服马老师——真学者也!

我也自制过一个,大多数时间都很好用,很少有不稳定。下载新板时就因为某一次的不成功要花很多时间去找原因,结果发现是USBASP的原因!换成并口的ISP就能下载了。非常恼火!扔了USBASP!

用CP2102 + M16自制了一个,非常稳定,所有机器都能识别,下载的软件STUDIO是ATMEL的,又快又可靠!成本上大概要贵15元,但我认为作为开发工具这根本不算什么。

因此我认为没必要在这上面花太多精力!稳定可靠才是第一位的!

出0入0汤圆

发表于 2007-4-19 13:15:13 | 显示全部楼层
楼上的,

usbasp的范例,精髓不在于实际做了什么东西,而在于芯片的潜能挖掘到了什么程度,以及各种技术的原理和组合.

再说了,15元能搞定的东西,你花了30元实在不算什么本事,做民品恐怕得赔死.

再说了,原来没稳压管,usbasp不稳定,加上稳压管,就非常稳定了,这种改进很好呀.也许再改进一下算法或者电路什么的,小瑕疵的没有了,那才是真本事呀,才是一个工程技术人员应该有的精神,而不是什么东西都是现成的,那样只能永远刷盘子.

出0入8汤圆

发表于 2007-4-19 18:50:34 | 显示全部楼层
TO:donkey 知秋

可能是我们理解不一样:我是站在一个开发人员、开发工具的使用者来考虑此等问题!

如果一个开发工具不稳定、不成熟,对于绝大多开发人员是不要去考虑的——浪费精力!自制就更是如此!

所谓术业有专攻,开发人员认真地做好自己的产品才是最重要的!

出0入0汤圆

发表于 2007-4-19 22:39:52 | 显示全部楼层
我自己做了一个,电路自己进行了改造,同时将软件进行了部分改造,本来想加个自动调节速度的功能,可是没能成功,能否请各位帮个忙?我做的电路图在http://www2.ouravr.com/bbs/bbs_content.jsp?bbs_sn=741891&bbs_page_no=1&bbs_id=1000里面就不重复上传了。以下是我对原来的ISP.C里面代码的部分修改。

#include <avr/io.h>

#include "isp.h"

#include "clock.h"



#define spiHWdisable() SPCR = 0





static uchar        ispspeed = ISP183KHz;//默认速度为183KHz





//void spiHWenable()

//{//这里是硬件ISP操作,原来设计用375KHz,一般不成功,因为我们的单片机一般采用的是1MHz,所以不能超过250KHz,这里进行了修改,现在高速是187KHz





  /* enable SPI, master, 375kHz SCK */

//        if (ISP_HISPEED)

/*

        {//375KHz  12MHz/32

                  SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1);

                  SPSR = (1 << SPI2X);

        }

*/

//        {//187KHz  12MHz/64

//                  SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1);

  //                SPSR = 0;

//        }

//        else

//        {//93KHz  12MHz/128

  //                SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0) | (1 << SPR1);

  //                SPSR = 0;

//        }

//}



void ispSetSCKOption(uchar option)

{

/*

          if (option == 0)

        {



                    ispTransmit = ispTransmit_sw;

    //            spiHWdisable();



          }

        else

        {//如果是高速则使用硬件ISP



                    ispTransmit = ispTransmit_hw;



          }

*/

        uchar tmp;

        if(ispspeed < 8)//采用硬件方式工作

        {

                    ispTransmit = ispTransmit_hw;

                onspeedled;

                SPCR = (1 << SPE) | (1 << MSTR) | (ispspeed >> 1);

                if(ispspeed & 1)

                {

                          SPSR = 0;

                }

                else

                {

                          SPSR = (1 << SPI2X);

                }

                //这里加入一句对SPDR访问的语句,程序可能在这里未消除标记

                tmp = SPDR;

        }

        else

        {

                    ispTransmit = ispTransmit_sw;

                offspeedled;

        }

}

  

void ispDelay()

{//延时时间1US

        uint8_t starttime = TIMERVALUE;

        while ((uint8_t) (TIMERVALUE - starttime) < 12);

}



void ispConnect()

{



  /* all ISP pins are inputs before */

  /* now set output pins */

          ISP_DDR |=  (1 << ISP_SCK) | (1 << ISP_MOSI);

          RST_DDR |= (1 << ISP_RST);



  /* reset device */

          RST_OUT &= ~(1 << ISP_RST);   /* RST low */

          ISP_OUT &= ~(1 << ISP_SCK);   /* SCK low */



  /* positive reset pulse > 2 SCK (target) */

          ispDelay();

          RST_OUT |= (1 << ISP_RST);    /* RST high */

          ispDelay();               

          RST_OUT &= ~(1 << ISP_RST);   /* RST low */



          if (ispTransmit == ispTransmit_hw)

        {

//                    spiHWenable();

                ispSetSCKOption(0);//这里调用速度设置模块不用原来的部分了。

        }

}



void ispDisconnect()

{

  

  /* set all ISP pins inputs */

          ISP_DDR &= ~( (1 << ISP_SCK) | (1 << ISP_MOSI));

          RST_DDR &= ~(1 << ISP_RST);

  /* switch pullups off */

          ISP_OUT &= ~( (1 << ISP_SCK) | (1 << ISP_MOSI));

          RST_OUT &= ~(1 << ISP_RST);



  /* disable hardware SPI */

          spiHWdisable();

}



void sckdelay(void)

{//专用于SCK速度调整的延时模块

        uchar starttime = TIMERVALUE;

        uchar        waittm = (ispspeed - 7);

        while(waittm--)

        {//这里速度相当于每次增加一微秒,这样最慢可以达到近2KHz。

                while ((uchar) (TIMERVALUE - starttime) < 12);

                starttime += 12;

        }

}



uchar ispTransmit_sw(uchar send_byte)

{//这里采用的是软ISP操作模式,其实可以在这里加入速度调整。按照现在的速度大约是250KHz。



          uchar rec_byte = 0;

          uchar i;

          for (i = 0; i < 8; i++)

        {//每个循环完成一位收发。



                    /* set MSB to MOSI-pin */

                    if ((send_byte & 0x80) != 0)

                {

                              ISP_OUT |= (1 << ISP_MOSI);  /* MOSI high */

                    }

                else

                {

                              ISP_OUT &= ~(1 << ISP_MOSI); /* MOSI low */

                    }

            /* shift to next bit */

                    send_byte  <<= 1;



            /* receive data */

                    rec_byte <<= 1;

                    if ((ISP_IN & (1 << ISP_MISO)) != 0)

                {

                              rec_byte++;

                    }

                //这里控制了SCK的速度,现在是每位近三微秒(没细算)

                    ISP_OUT |= (1 << ISP_SCK);     /* SCK high */

                sckdelay();

//                    ispDelay();

                    ISP_OUT &= ~(1 << ISP_SCK);    /* SCK low */

                sckdelay();

//                    ispDelay();

          }

   

          return rec_byte;

}



uchar ispTransmit_hw(uchar send_byte)

{

          SPDR = send_byte;

  

          while (!(SPSR & (1 << SPIF)));

          return SPDR;

}

   

uchar ispEnterProgrammingMode()

{//程序在这里试验32次来准备进入编程模式,如果出现错误则返回1,正常返回0.可以在此加入速度自动调整功能。

          uchar check;

          uchar count = 32;



          while (count--)

        {



                ispTransmit(0xAC);

                    ispTransmit(0x53);

                    check = ispTransmit(0);

                    ispTransmit(0);

   

                    if (check == 0x53)

                {

                              return 0;

                    }



                    spiHWdisable();

   

                    ISP_OUT |= (1 << ISP_SCK);     // SCK high

                    ispDelay();

                    ISP_OUT &= ~(1 << ISP_SCK);    // SCK low

                    ispDelay();



                //这以下是插入的自动调整速度的部分,

                if((count & 7) == 1)

                {//重试四次如果不成功就会自动进行一次降速

                        if(ispspeed < ISP46KHz)

                        {//因为软ISP的高速实际上比硬件低速ISP还快,所以在这里跳过超过硬件ISP的部分。

                                ispspeed++;

                        }

                        else if(ispspeed > ISP46KHz)

                        {//如果是软SPI则每次增加4微秒。

                                if(ispspeed < 250)

                                {

                                        ispspeed += 4;

                                }

                        }

                        else

                        {//这里是硬SPI,则每次是上次的一半速度。

                                ispspeed += 9;//4;

                        }

                        ispSetSCKOption(ispspeed);//新的自动调整模块里面不使用传入的参数!

                }

//因为上面的设置模块里面已经可以自动打开SPI了,所以下面的部分不再需要了。



/*                    if (ispTransmit == ispTransmit_hw)

                {

                              spiHWenable();

                    }

*/

          }

  

          return 1;  /* error: device dosn't answer */

}



以下是ISP.H里面加入的部分定义,其余就是原来的程序。

#define onspeedled                PORTC &= ~(1 << PC3)

#define offspeedled                PORTC |= (1 << PC3)





#define ISP_DELAY 1

#define ISP_SCK_SLOW 0

#define ISP_SCK_FAST 1



//以下定义一些用硬件执行的ISP的速度。数值越大速度会越慢

#define        ISP6MHz        0

#define        ISP3MHz        1//这个速度一般用不上

#define        ISP1500KHz        2

#define        ISP750KHz        3//这个也够快的了,所以不用

#define        ISP375KHz        4//

#define        ISP183KHz        5//现在考虑是基本都是1MHz的频率,所以默认的是这个速度。

#define        ISP92KHz        6

#define        ISP46KHz        7



可我不知道怎么回事,进入编程模式的时候会失败,同时死在这个部分。

出0入0汤圆

发表于 2007-4-19 22:51:34 | 显示全部楼层
我现在不能完全用原来的HEX文件,因为外部引脚为了布线方便,我自己进行了改变,现在就想加个速度调整功能,我想在进入编程模式里面利用原来的检测,如果四次检测都不通过的话,就将速度下调一档,接上目标板还可以,但不接目标板不知道为什么就会死掉了,本来应该是调整几次最多显示不能进入编程状态啊

出0入0汤圆

发表于 2007-4-20 01:00:52 | 显示全部楼层
自己找到原因了,现在终于完成了自动调整速度的功能了。最低速度支持到5KHz,程序不重新上电会记录这个速度的,如果换了目标板想重新恢复速度可以将USB电源停一下再送上,就是让这个板子复位一下。暂时内部最高速度设定为187KHz。

出0入0汤圆

发表于 2007-4-21 13:28:05 | 显示全部楼层
请看这里的介绍。注释很详细。

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=740501&bbs_page_no=1&bbs_id=1000

出0入0汤圆

发表于 2007-4-24 10:14:36 | 显示全部楼层
【45楼】 machao

积分:1866

派别:

等级:------

来自:

     新改板的50块PCB板到手,电路使用5v转3.6v电源芯片,全部采用贴片形式,所以比上图的小了一半。完全是正式产品了,就是外包装不好解决,先用起来。



    马上将器件贴上,做了2个,下了程序,马到成功。已安排备50套的料,下星期制作。



    完成后会将全部资料公开的。   

   

2007-03-29,23:17:01   资料  邮件         编辑  删除

出0入0汤圆

发表于 2007-4-24 12:18:42 | 显示全部楼层
马老师还没有试制完成啊?期盼公布完成的资料,谢谢先,期待ing....

出0入0汤圆

发表于 2007-4-24 14:16:50 | 显示全部楼层
弱弱的问一下,ASP,ISP是哪些单词的缩写(没搜到满意的结果)

in system program?  xxx  serial program?

出0入0汤圆

发表于 2007-4-25 10:21:52 | 显示全部楼层
ISP在系统编程

出0入0汤圆

发表于 2007-5-22 09:55:46 | 显示全部楼层
呵呵,我的USBASP放到我的手提电脑上无法识别,后来一气之下,把USB供电的线弄断,用一个发光二极管搭过去,嘿嘿,现在我的手提电脑可以认得是USBASP了,驱程也装好了。

出0入0汤圆

 楼主| 发表于 2007-5-22 15:13:38 | 显示全部楼层
全部公开了。请查看全部资料

出0入0汤圆

发表于 2007-5-24 11:12:21 | 显示全部楼层
根据ATmega8的数据手册:ATmega8的工作电压是4.5V~5.5V,速度0~16MHz。而ATmega8L的工作电压是2.7V~5.5V,速度0~8MHz。所以ATmega8不能工作在3.6V电压下,而ATmega8L不能使用12MHz晶振。但是这里使用ATmega8及3.6V电压、12MHz晶振,这怎么解释?

出0入0汤圆

发表于 2007-5-28 22:21:39 | 显示全部楼层
为什么我的USBASP下载的时候要一分钟,软件里不是说明改进后的USBASP只要两秒吗,怎么我的这么慢啊,我的USB是1.1的,不影响吗

出0入0汤圆

发表于 2007-5-30 09:53:50 | 显示全部楼层
占用一个地方啊,我说各位有时间在这里说这么长时间,怎么就没有人好好看一下源代码,人家外国人公布了源代码了呀,另外有人问为什么不能只用两个引脚来读取USB信号,那是你没有好好看一下内部的程序,现在新的版本已经可以做到只用两个引脚了,因为新版本的程序在汇编里面进行了修改。其实一旦我们自己读一下源代码就能尝到很多的东西,我不想全部照搬,我认为(只是自己的观点)这样的话,我们只能做到仿造,根本就不明白为什么这么做!所以从开始就自己重新做电路(当然要先看一下源代码),现在电路我自己重新做了,包括内部的代码我也重新做了,并且也在这里共享了,可非常遗憾的是就没有几个人去详细看一下里面的内容,不过无所谓,至少现在我学到了内部的不少东西,非常感谢原作者。现在我的程序也支持自动调整速度,支持指示灯动态指示。我这里面的自动调整速度不仅仅是调整通讯速度,另外还有自动检测空白代码的功能,所以对于小程序(用16和M8测试)完全可以在一秒内完成(软件自己显示),里面自动调整速度的范围非常宽!其实只要明白原理完全可以自己进行修改。建议大家还是不要求多,而是自己做过的东西要明白为什么。另外硬件上我直接用的是3.3V电压,只在自己的台机和笔记本上测试过正常。所以不能说的太多,也许是我幸运吧。对于软件方面其实代码做的非常好。另外通过代码我感觉也可以直接使用C语言来完成原来用汇编做的功能,大家不要都随着别人跑,都跟着说什么时间哪、响应啊,因为仔细看过代码发现其实在进入中断前还是有足够的时间的,当然内部还是要用汇编,也许这才是真正的原因。原作者真的是算计到家了,呵呵,佩服啊。

出0入0汤圆

发表于 2007-5-30 10:18:15 | 显示全部楼层
97楼是不是把单片机的分频功能打开了,频率选得很低吧,我之前也是这样,改了不分频就OK了

出0入0汤圆

发表于 2007-7-30 13:17:33 | 显示全部楼层
汇报我的USBasp实验:

时间:2007年07月28-29日两天(28日下午到29日凌晨6点,29日10点到下午19点)

地点:家里

方式:用了个自己搭建的“万用实验板”

实验过程:

   1、先按照http://www.fischl.de/usbasp/的usbasp.2006-09-16.tar.gz (116 kB) New VID/PID!搭建USBasp电路,

   2、再参考“绝对完整的 Usb ISP 的下载线制做过程和资料!!!! ---“我们的AVR”技术论坛(主坛)”——Eudemon守护使“USB ISP 制做和使用过程记录”来烧写程序。

      但是,电脑始终认不了USBasp,不断找原因,时间就很快过去了。到了凌晨不知道什么时间了,后来仔细看了原作者Thomas Fischl (不知道对吗)的usbasp.2006-09-16里



的Readme.txt才发现用usbasp.2006-09-16.hex熔丝要“You have to change the fuse bits for external crystal, e.g. high byte = 0xc9and low byte = 0x9f.”(惭愧没用



过ATmage)。

   Eudemon守护使的“USB ISP 制做和使用过程记录”里的熔丝是用他的main.bin。另外驱动也要用他的!!!为次,我花掉了好几个小时去找原因。希望发表文章的作者,最好



说明这样的“关键”注意事项。

   3、解决了上面的问题后,终于在天亮前完成了USPasp的制作实验,但是应用它下载程序又始终不行。

      先用的Eudemon守护使的“USB ISP 制做和使用过程记录”里的progisp.ExE,后来用的是AVRStudio 4.12(总是显示“Reading FLASH input file.. OK

      Setting mode and device parameters.. OK!

      Entering programming mode.. FAILED!

      Leaving programming mode.. FAILED!”),没有办法,天都亮了,只好先睡觉了。

   4、29日10点过开始有继续找不能下载程序的原因,硬件方面主要考虑是说的最多的USB的信号D+、D-的电压的问题(实际上我做的CP2102是D-为3.6V,但不知道USBasp为什么是



D+上拉为3.8V)。软件、硬件原因找了无数,都不行,快18点了,才决定目标MCU换为ATmega16,原来我的目标MCU是AT89S52,我一直都想到这点,是不是也要AVR?。果然目标MCU



换为ATmega16后,终于可以下载了!!!

   5、但是在AVRStudio 4.13(找软件原因时,也将原来的4.12升级了),选择“programming mode”的“Verify Device After Programer”,则Reading Flash时会FAILED。按



照马潮老师说的将“Board”里的ISP速度降低也没用,不知道原因是什么,是不是我用“万用实验板”搭建的,性能不好?

   6、AT89S52不能下载的原因可能是复位RESET,ATmega16是低电平,而AT89S52是高电平复位???

   有愿意交流的请和我联系,QQ:1881003

   下面是实验的有关图片























出0入0汤圆

发表于 2007-9-7 16:37:31 | 显示全部楼层
马老师,我按你的电路做了一个usbasp,只有电源部分不同,我原本是用LM1117ADJ可调的稳压电源,可布线工程师加封装时用的LM11173.3V的封装,于是我在电路里也就用的是3.3V电压,应该没什么问题,电脑可以识别,驱动安装也没有问题,就是不用progisp编程,出现10楼的那个现象,不知道该怎么解决。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 18:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表