打印
[AVR单片机]

请教关于JTAG引脚做通用接口的问题

[复制链接]
4959|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjj2010|  楼主 | 2010-8-4 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编程时用JTAG,实际运行时JTAG接口就不用了,要用它做IO口用想请教几个问题
手册上说禁止JTAG就可以,但是把JTAGEN位清零不是好办法(我的板子挂了),
JTD置1也可以禁止JTAG,/RESET拉低后就能清除JTD。
问一下高手2个问题,
JTD置1时JTAG的4个引脚能做IO用吗?
/RESET拉低后JTAG能编程吗?

相关帖子

沙发
宇容创行| | 2010-8-4 09:40 | 只看该作者
此题可以作为斑竹竞选必答题

使用特权

评论回复
板凳
粉丝| | 2010-8-4 10:22 | 只看该作者
这个是网上中文手册的内容:
-----------------------------
通过 JTAG 对 AVR器件进行编程仅需要使用 JTAG 端口的四个引脚—TCK, TMS, TDI 和
TDO(除了电源引脚)。编程不需要额外的12V电压。使能JTAG测试访问端口需要首先编程
JTAGEN 熔丝位,同时保证 MCUCR 寄存器的 JTD 被清零。
-----------------------------
这是原英文手册的内容:
Using the JTAG  Programming of AVR parts via JTAG is performed via the 4-pin JTAG port, TCK, TMS, TDI and
Programming  TDO. These are the only pins that need to be controlled/observed to perform JTAG program-
ming (in addition to power pins). It is not required to apply 12V externally. The JTAGEN Fuse
Capabilities
must be programmed and the JTD bit in the MCUSR Register must be cleared to enable the
JTAG Test Access Port.

-------------------------------------------------------------------------------
must be programmed and the JTD bit in the MCUSR Register must be cleared to enable the
JTAG Test Access Port.

必需编程清零MCUSR 寄存器的JTD位,JTAG 调试口才开启。     

意思讲的就是可以用软件禁止调试功能,禁止后IO口跟平时一样读取。

使用特权

评论回复
地板
xuyiyi| | 2010-8-4 10:28 | 只看该作者
问一下高手2个问题,
答:大多数高手们都很忙,忙于赚钱,有些高手在忙于为争坐正斑竹之位而战,哪位高手会攻击对手会动用马夹会控制场面,哪位高手将获胜,取的正斑竹地位。哪有时间指点你这一菜鸟?
少数高手人虽好很热心,如二姨家的左右两大护法春阳老师和张眉老师,但贴子太多一下子忙不过来回贴,俺这个不懂AVR的搬门弄斧,抄点书上网上的内容来淘淘浆糊,糊弄一下吧!

尊重声明,俺没试过,以下答案仅供参考。

JTD置1时JTAG的4个引脚能做IO用吗?
答:JTD位为0 时,如果JTAGEN 熔丝位被编程则JTAG 接口使能。如果JTD位为1,无论JTAGEN 熔丝位是否被编程则JTAG 接口都禁止。JTAG的4个引脚都能用做IO口。
JTAG 接口禁止后,为了避免无意的应用软件更改(禁止或使能)JTAG 接口,必须通过一个时间序列来改变JTD 位。因此,更改JTD 位时,在应用软件中必须在四个时钟周期内将期望的数值两次写入JTD。

/RESET拉低后JTAG能编程吗?
答:使用JTAG 接口之前首先要编程JTAGEN 熔丝位。芯片出厂时这个熔丝位缺省为编程状态。
此外,MCUCSR 寄存器的JTD 位必须清零。如果JTD 已被置1,则可以将外部reset强制拉低。经过两个时钟周期之后JTD 位就清零了。
因此,在JTAGEN 熔丝位已编程的前提下,无论JTD 位是否已被清0或置1,/RESET引脚拉低两个时钟周期之后,JTAG 引脚即可用于编程功能。

使用特权

评论回复
5
zjj2010|  楼主 | 2010-8-4 10:30 | 只看该作者
谢谢粉丝
要重新编程呢?/RESET拉低可清除JTD位,/RESET拉低后(持续拉低)JTAG能编程吗?
放开/RESET容易又被禁止,不好找时间差啊

使用特权

评论回复
6
xuyiyi| | 2010-8-4 10:33 | 只看该作者
说了那么多,实际上你想将JTAG的4个引脚用做IO口。
只需做到,在应用软件中更改JTD 位,附加条件,更改时必须在四个时钟周期内将期望的数值两次写入JTD。
JTD 位的修改并不影响你通过 /RESET引脚拉低两个时钟周期之后,使用JTAG 引脚下载应用软件(编程功能)。

使用特权

评论回复
7
xuyiyi| | 2010-8-4 10:38 | 只看该作者
另外,补充一条注意事项。
通过在应用软件中将JTD 位置1,则JTAG的4个引脚都能用做IO口。
此时JTAG功能禁止,任何JTAG调试命令将无效!
如想重新连机调试,请复位单片机,即将 /RESET引脚拉低两个时钟周期。

使用特权

评论回复
8
zjj2010|  楼主 | 2010-8-4 10:41 | 只看该作者
是啊

使用特权

评论回复
9
xuyiyi| | 2010-8-4 10:41 | 只看该作者
要重新编程呢?/RESET拉低可清除JTD位,/RESET拉低后(持续拉低)JTAG能编程吗?
放开/RESET容易又被禁止,不好找时间差啊
zjj2010 发表于 2010-8-4 10:30


/RESET拉低后(持续时间大于两个时钟周期),再放开/RESET,完成复位周期, JTAG又能正常编程了,不用找时间差啊~~~

使用特权

评论回复
10
zjj2010|  楼主 | 2010-8-4 10:57 | 只看该作者
没说明白,我程序里应该有禁止禁止JTAG的指令(假设是初始化时JTD置1),放开/RESET后,原来的程序运行后又要执行禁止JTAG的指令了,如果按住/RESET不放,原来的程序不能被执行就不会执行禁止JTAG的指令。
我是这么想的

使用特权

评论回复
11
宇容创行| | 2010-8-4 10:57 | 只看该作者
此轮pk,老许胜

使用特权

评论回复
12
宇容创行| | 2010-8-4 11:02 | 只看该作者
10 楼 你把jtag仿真器的 reset接上就是,仿真器会去控制电平的

使用特权

评论回复
13
zjj2010|  楼主 | 2010-8-4 11:08 | 只看该作者
没找到那个引脚接reset才有问题的,第8脚?

使用特权

评论回复
14
zjj2010|  楼主 | 2010-8-4 11:20 | 只看该作者
查到了,是6脚,谢谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

粉丝