关于AVR单片机IO口配置转换的问题?
在(高阻态)三态({DDxn,PORTxn}=0b00)输出高电平({DDxn,PORTxn}=0b11)两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}...
在(高阻态)三态({DDxn,PORTxn}=0b00)输出高电平({DDxn,PORTxn}=0b11)两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}=0b01)或输出低电平({DDxn,PORTxn}=0b10)这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样子,可以通过置位SFIOR寄存器的PUD来禁止所有端口的上拉电阻。
在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn}=0b00)或输出高电平({DDxn,PORTxn}=0b10)作为中间步骤。
端口引脚配置:
DDxn PORTxn PUD I/O 上拉电阻 说明
0 0 X INPUT No 高阻态
0 1 0 INPUT Yes 被外部电路拉低时将输出电流
0 1 1 INPUT No 高阻态
1 0 X OUTPUT No 输出低电平(吸收电流)
1 1 X OUTPUT No 输出高电平(输出电流)
谁能帮我详细的解释一下最上面那段话的意思,我搞了半天也没理解透!!!
0 0 X INPUT No 高阻态
0 1 1 INPUT No 高阻态
如果是配置成这个状态,那么读入PINx的值会不会随外部电路输入高低电平变化而变化啊? 展开
在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn}=0b00)或输出高电平({DDxn,PORTxn}=0b10)作为中间步骤。
端口引脚配置:
DDxn PORTxn PUD I/O 上拉电阻 说明
0 0 X INPUT No 高阻态
0 1 0 INPUT Yes 被外部电路拉低时将输出电流
0 1 1 INPUT No 高阻态
1 0 X OUTPUT No 输出低电平(吸收电流)
1 1 X OUTPUT No 输出高电平(输出电流)
谁能帮我详细的解释一下最上面那段话的意思,我搞了半天也没理解透!!!
0 0 X INPUT No 高阻态
0 1 1 INPUT No 高阻态
如果是配置成这个状态,那么读入PINx的值会不会随外部电路输入高低电平变化而变化啊? 展开
2个回答
展开全部
做试验啊,这个没别的更好的办法。
入PINx的值会随外部电路输入高低电平变化而变化,因为它此时属于输入状态,能读入引脚电平;而所谓的高阻态只是相对于输出来说的,输出进入高阻态,并不影响输入,即PINx的读入。
一次我搭了一个键盘电路,没有使用上拉电阻,且DDRx、PORTx分别配置为0、0,发现PINx的值由于外界干扰而不停地改变;而DDRx、PORTx分别配置为0、1发现PINx的值不再受外界干扰(内部上拉电阻使能了),而是受键盘的正常控制。综上所述,读入PINx的值会随外部电路输入高低电平变化而变化。
入PINx的值会随外部电路输入高低电平变化而变化,因为它此时属于输入状态,能读入引脚电平;而所谓的高阻态只是相对于输出来说的,输出进入高阻态,并不影响输入,即PINx的读入。
一次我搭了一个键盘电路,没有使用上拉电阻,且DDRx、PORTx分别配置为0、0,发现PINx的值由于外界干扰而不停地改变;而DDRx、PORTx分别配置为0、1发现PINx的值不再受外界干扰(内部上拉电阻使能了),而是受键盘的正常控制。综上所述,读入PINx的值会随外部电路输入高低电平变化而变化。
展开全部
上面话的意思是在你的引脚为高阻态时是不能直接变到输出高电平的,需要一个中间的过渡状态,即先选中DDRX为输出,然后再让输出为高,如果不这样做会出现不可预计的错误。
至于在高阻态时PIN是否能够随外部变化,答案是可以的,因为PIN是始终检测外部引脚的电平状态的,不过不建议这样使用,即使出了问题,ATMEL也不会承担任何的后果,因为你没有按照人家的操作规范进行操作,你是把高阻的状态强行拉高或拉低,这样对引脚有致命的损伤
至于在高阻态时PIN是否能够随外部变化,答案是可以的,因为PIN是始终检测外部引脚的电平状态的,不过不建议这样使用,即使出了问题,ATMEL也不会承担任何的后果,因为你没有按照人家的操作规范进行操作,你是把高阻的状态强行拉高或拉低,这样对引脚有致命的损伤
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询