在线情况
楼主
  • 头像
  • 级别
    • 积分31
    • 经验5985
    • 文章202
    • 注册2006-05-28
    关于USART的发送中断标志UTXIFG的置/复位问题
    关于USART模块的发送中断标志UTXIFG的置/复位问题一直弄得不是很清楚,书上也没有说明白。我想问一下各位大侠UTXIFG在满足什么条件下会置位,又在什么条件下复位。谢谢!
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分20
      • 经验2215
      • 文章164
      • 注册2006-06-05
      当往UTXBUF中写数据的时候,UTXIFG置位,复位条件不太清楚,是否是在异步模式下,
      当TXEPT=1时UTXIFG复位?希望斑竹指教啊
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
         通用串行通讯发送中断标志位UTXIFG是在发生PUC(上电清除)或SWRST信号(串行状态机控制位)清除后使其置位。
         如果中断服务程序已启动或向发送数据缓存UTXBUF进行写操作可以使UTXIFG复位。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      4
      • 头像
      • 级别
        • 积分20
        • 经验2215
        • 文章164
        • 注册2006-06-05
        谢谢斑竹!
        刚才在2400下进行实验,发现置位是在发生PUC(上电清除)或SWRST信号(串行状态机控制位)清除后的,可当进入中断后并执行TXBUF0 = RXBUF0后并没发现UTXIFG复位??
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
          • 积分31
          • 经验5985
          • 文章202
          • 注册2006-05-28
            我研究了一下,发现有三种情况可以置位:上电和SWRST信号后;当把数据送到UTXBUF中时,以及手动置位。在进入中断服务程序以及数据发送完时复位。但还是比较迷惑,象KKKCXF兄说的一样,在发送中断服务程序中,当我把数据送到UTXBUF中时,标志位置位,可是当发送完毕后,标志位仍然不复位。这样一来就麻烦了,中断服务程序一结束后马上又进入中断服务程序,造成了中断的无限循环。可是我若在主程序中发送数据,即在主程序中把数据送入发送缓存UTXBUF时标志位置位,当数据发送完后标志位马上又复位了。两种情况标志位的复位状况不同,不知道是什么原因。
          微控网感谢您的参与
          在线情况
          6
          • 头像
          • 级别
            • 财富1
            • 积分12
            • 经验2535
            • 文章175
            • 注册2006-05-24
            [QUOTE][b]下面引用由[u]kkkcxf[/u]发表的内容:[/b]

            谢谢斑竹!
            刚才在2400下进行实验,发现置位是在发生PUC(上电清除)或SWRST信号(串行状态机控制位)清除后的,可当进入中断后并执行TXBUF0 = RXBUF0后并没发现UTXIFG复位??[/QUOTE]
            那此时的现象如何,有数据从TX脚送出吗?
            微控网感谢您的参与
            在线情况
            7
            • 头像
            • 级别
              • 财富1
              • 积分12
              • 经验2535
              • 文章175
              • 注册2006-05-24
              The UTXIFGx interrupt flag is set by the transmitter to indicate that UxTXBUF
              is ready to accept another character. An interrupt request is generated if
              UTXIEx and GIE are also set. UTXIFGx is automatically reset if the interrupt
              request is serviced or if a character is written to UxTXBUF.
              微控网感谢您的参与
              在线情况
              8
              • 头像
              • 级别
                • 财富1
                • 积分12
                • 经验2535
                • 文章175
                • 注册2006-05-24
                [QUOTE][b]下面引用由[u]tubaozi01[/u]发表的内容:[/b]

                  我研究了一下,发现有三种情况可以置位:上电和SWRST信号后;当把数据送到UTXBUF中时,以及手动置位。在进入中断服务程序以及数据发送完时复位。但还是比较迷惑,象KKKCXF兄说的一样,在发送中...[/QUOTE]
                你这个好象是个很典型的例子,有否在刚进中断程序时把UTX的标志位先软件清一下,然后再试试。
                微控网感谢您的参与
                在线情况
                9
                • 头像
                • 级别
                • 门派
                • 职务总版主
                • 声望+9
                • 财富5
                • 积分3065
                • 经验390701
                • 文章6744
                • 注册2006-03-07
                嗯,关于这个问题。我也不好详细解释。要不要我们请位嘉宾来我们细说下这个问题。
                [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
                在线情况
                10
                • 头像
                • 级别
                  • 积分20
                  • 经验2215
                  • 文章164
                  • 注册2006-06-05
                  我的情况是:当我退出中断后,没发现UTXIFG复位,此时也有数据从TX引脚送出.
                  象release所说的,如果在进入中断后把UTX的标志位先软件清一下,
                  当执行到送数据语句时:
                            while ((IFG1 & UTXIFG0) == 0);//看UTXBUFF是否准备好,只有当UTXIFG0为1时才能执行下去!!
                            TXBUF0 = RXTXBUFF[i];          
                  就会执行不下去,还请release帮帮忙哦,谢谢!!
                  微控网感谢您的参与
                  在线情况
                  11
                  • 头像
                  • 级别
                    • 积分31
                    • 经验5985
                    • 文章202
                    • 注册2006-05-28
                    回release,刚进UTX中断时会自动清掉标志位的,但如果在主程序中手动置位,此时进入中断程序自动复位,当把数据送入缓存准备发送时,标志位又置位了,发送完后不自动复位。应该在此时手动清除掉,避免结束中断程序后又进入中断。
                    微控网感谢您的参与
                    在线情况
                    12
                    • 头像
                    • 级别
                    • 门派
                    • 声望+3
                    • 财富2
                    • 积分6
                    • 经验2093
                    • 文章50
                    • 注册2006-04-02
                    UTXIFGx是一个中断标记,在UTXBUF可以接受新数据时被置位,此时可以认为上一个字节已经完成发送。往UTXBUF写入一字节,将使UTXIFGx清除。复位后,UTXIFGx也将将置位。总之
                    UTXIFGx置位,表示你可以往UTXBUF写数据了。
                    如果采用中断方式发送数据,进入中断子程序后,UTXIFGx将自动复位。
                    如果采用查询方式发送数据,当查到UTXIFGx置位后,就可以往UTXBUF写数据了。
                    UTXIFGx也可以用来触发DMA传送。
                    微控网感谢您的参与
                    Powered by LeadBBS 9.2 .
                    Page created in 0.2656 seconds with 5 queries.