HSI
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 HSI
二、HSI结构图 HSI结构图
第六章 HSI
三、FIFO队列(先入先出队列) FIFO队列(先入先出队列) 队列 (1)结构 FIFO队列:8*20位寄存器,保存HSI的事件记录 FIFO队列:8*20位寄存器,保存HSI的事件记录 队列 位寄存器 HSI
HSI.3
HSI.2
HSI.1
第六章 HSI
(3)HSI-STATUS(HSI状态寄存器)和HSI-TIME(HSI时 HSI-STATUS(HSI状态寄存器) HSI-TIME(HSI时 HSI 状态寄存器 间寄存器) 间寄存器)
保持寄存器 D7 D6 D5 D4 事件发生时刻T1计数值
HSI_STATUS和HSI-TIME的 和 的 读取方式 先读取HSI_STATUS,后读 , 先读取 取HSI_TIME,因为一旦读 , HSI_TIME后,HSI_STATUS 后 的数据自动消失。 的数据自动消失。
第六章 HSI
六、HSI.0中断 HSI.0中断
HSI.0中断是8098的一个外中断, INT-MASK的第4位为1 HSI.0中断是8098的一个外中断,当INT-MASK的第4位为1时,HSI.0的 中断是8098的一个外中断 的第 HSI.0的 输入端出现正跳变是将引起中断(假如允许中断的话) 输入端出现正跳变是将引起中断(假如允许中断的话)。因此它与 HSI方式寄存器中设置的触发条件以及IOC1寄存器中设置的HSI中断 方式寄存器中设置的触发条件以及IOC1寄存器中设置的HSI HSI方式寄存器中设置的触发条件以及IOC1寄存器中设置的HSI中断 条件无关。HSI.0中断的发生并不记录在FIFO中 中断的发生并不记录在FIFO 条件无关。HSI.0中断的发生并不记录在FIFO中。实际上我们可以 HSI.0作为一个正跳变触发的外中断来使用 作为一个正跳变触发的外中断来使用。 将HSI.0作为一个正跳变触发的外中断来使用。 HSI.0中断和HSI的唯一联系是HSI.0中断的输入引脚借助于HSI的输入 中断和HSI的唯一联系是HSI.0中断的输入引脚借助于HSI HSI.0中断和HSI的唯一联系是HSI.0中断的输入引脚借助于HSI的输入 脚 问题:若信号从HSI.0输入, HSI.0输入 问题:若信号从HSI.0输入,设上升沿为触发条件 IOC1:D2= HIS数据有效中断允许 D4= 数据有效中断允许、 HSI.0中断允许 IOC1:D2=1,HIS数据有效中断允许、D4=1,HSI.0中断允许 INT-MASK:D2=1、 INT-MASK:D2=1、D4=1 同时产生HSI.0中断和HIS时间中断,因此若程序处理不当时, HSI.0中断和HIS时间中断 同时产生HSI.0中断和HIS时间中断,因此若程序处理不当时,将导致 系统混乱。若使用HSI.0 HSI.0时 不要同时开放HSI HSI数据有效中断和 系统混乱。若使用HSI.0时,不要同时开放HSI数据有效中断和 HSI.0中断 HSI.0中断。
第六章 HSI
HSI分辨率 七、 HSI分辨率
HSI的事件检测逻辑每个状态周期对其引脚的状态采样一次 的事件检测逻辑每个状态周期对其引脚的状态采样一次, 1、HSI的事件检测逻辑每个状态周期对其引脚的状态采样一次,为此 要求输入信号的高或低电平的持续时间不小于一个状态周期。 要求输入信号的高或低电平的持续时间不小于一个状态周期。 事件发生的时刻是以定时器T1作为时间基准的,由于T1 T1作为时间基准的 T1每 2、事件发生的时刻是以定时器T1作为时间基准的,由于T1每8个状态周 期计数一次,因此就同一输入引脚而言,8 ,8个状态周期内发生的事件 期计数一次,因此就同一输入引脚而言,8个状态周期内发生的事件 只能记录一次。 只能记录一次。
2、中断法
通过IOC0 HSI输入 IOC0选 A、通过IOC0选HSI输入 IOC1设定中断条件 B、IOC1设定中断条件 通过HSIMODE HSI触发方式 HSIMODE选 C、通过HSIMODE选HSI触发方式 D、设置中断屏蔽 E、开中断
ORG DCW ORG
H: ; HSIINT: LDB LD ORB RET
4位 16位
7个
4位
16位
保持寄 存器
第六章 HSI
四、和HSI有关的寄存器 和HSI有关的寄存器 (1)IOC0:控制HSI的哪个引脚可接入HSI IOC0:控制HSI的哪个引脚可接入HSI HSI的哪个引脚可接入
(2)HSI方式寄存器,设定每个输入通道的触发条件 HSI方式寄存器, 方式寄存器
第六章 HSI
HSI分辨率 七、 HSI分辨率
HSI的事件检测逻辑每个状态周期对其引脚的状态采样一次 的事件检测逻辑每个状态周期对其引脚的状态采样一次, 1、HSI的事件检测逻辑每个状态周期对其引脚的状态采样一次,为此 要求输入信号的高或低电平的持续时间不小于一个状态周期。 要求输入信号的高或低电平的持续时间不小于一个状态周期。 事件发生的时刻是以定时器T1作为时间基准的,由于T1 T1作为时间基准的 T1每 2、事件发生的时刻是以定时器T1作为时间基准的,由于T1每8个状态周 期计数一次,因此就同一输入引脚而言,8 ,8个状态周期内发生的事件 期计数一次,因此就同一输入引脚而言,8个状态周期内发生的事件 只能记录一次。 只能记录一次。
第六章 HSI
ORG
2080H LD LDB LDB CLV: ANDB JBC ORB LDB LOOP1: LDB LD DJNZ SJMP
ORG SP,#0FFH IOC0,#01H HSIMODE,#01H IOPROT2,#0FEH IOS1.6,CLV IOPORT2,#01H CX,#8 AL,HSISTATUS BX,HSITIME CX,LOOP1 CLV
HSI-STATUS D7 D6 D5 D4 D3 D2 D1 D0
HSI-TIME 事件发生时刻T1计数值 T1
HSI.3
HSI.2
HSI.1
HSI.0
HSI引脚的当前状态
有事件发生( ),事件发生时 的值为0AAAAH,且保持寄存 例:HSI.0有事件发生(上升沿触发),事件发生时 的值为 有事件发生 上升沿触发),事件发生时T1的值为 , 器为空。在如图所示的时刻读HIS_STATUS和HIS_TIME,问:HSI_STATUS和 器为空。在如图所示的时刻读 和 , 和 HSI_TIME的内容。 的内容。 的内容 HSI_STATUS:X0X0X011B HSI_TIME:0A 位)
表明事件发生在哪一个通道 上,有事件发生置1,否则为0.
第六章 HSI
(2)存储和读取过程
记录存储过程:HSI有事件发生, 记录存储过程:HSI有事件发生,若保持 有事件发生 寄存器是空,事件首先存入保持寄存器, 寄存器是空,事件首先存入保持寄存器, 若保持寄存器不空, 若保持寄存器不空,事件按发生的顺序 存入空闲的FIFO单元。若存满八个, FIFO单元 存入空闲的FIFO单元。若存满八个,再 有事件发生,不再记录。 有事件发生,不再记录。 读取过程: 读取过程:程序只能通过特殊功能寄存器 读取保持寄存器的内容,而其他FIFO FIFO寄 读取保持寄存器的内容,而其他FIFO寄 存器不能直接读取。 存器不能直接读取。若保持寄存器中数 据读出,按事件发生顺序排列, 据读出,按事件发生顺序排列,处于第 二位FIFO FIFO单元内容会自动存入保持寄存 二位FIFO单元内容会自动存入保持寄存 第三位FIFO FIFO单元内容会自动存入第 器,第三位FIFO单元内容会自动存入第 二位FIFO单元,以此类推。 FIFO单元 二位FIFO单元,以此类推。
2004H HSIINT 2080H LD LDB LDB LDB LDB ANDB EI SJMP
SP,#0FFH IOC0,#01H IOC1,#00H HSIMODE,#01H INTMASK,#04H IOPROT2,#0FEH H AL,HSISTATUS BX,HSITIME IOPORT2,#01H
八、使用HSI应注意事项 使用HSI应注意事项 HSI
读取HSISTATUS HSITIME前 应设置读取条件(查询或中断)。 HSISTATUS、 )。查 1、读取HSISTATUS、HSITIME前,应设置读取条件(查询或中断)。查 询时先拷贝IOS1再测试,因为IOS1读取后本身内容发生变化。 IOS1再测试 IOS1读取后本身内容发生变化 询时先拷贝IOS1再测试,因为IOS1读取后本身内容发生变化。 读取HSISTATUS HSITIME时 先读HSISTATUS 后读HSITIME HSISTATUS、 HSISTATUS, HSITIME。 2、读取HSISTATUS、HSITIME时,先读HSISTATUS,后读HSITIME。因为 在读HSITIME HSITIME时 HSISTAUS内容会消失 内容会消失。 在读HSITIME时,HSISTAUS内容会消失。 不要同时开放HSI.0中断HSI中断,以免产生麻烦。 HSI.0中断HSI中断 3、不要同时开放HSI.0中断HSI中断,以免产生麻烦。 几个HSI同时开放中断,先读HSISTATUS HSI同时开放中断 HSISTATUS以确定是哪个输入端产生中 4、几个HSI同时开放中断,先读HSISTATUS以确定是哪个输入端产生中 然后再读HSITIME HSITIME。 断,然后再读HSITIME。
读取时刻
第六章 HSI
五、HSI应用方法 HSI应用方法 1、查询法
根据IOS1.6来确定FIFO是否满 根据IOS1.6来确定FIFO是否满 IOS1.6来确定FIFO 根据IOS1.7 IOS1.7来确定保持寄存器是否装入 根据IOS1.7来确定保持寄存器是否装入 前者专用于多个连续快速变化事件。后者专用于单一输入缓慢变化事件。 前者专用于多个连续快速变化事件。后者专用于单一输入缓慢变化事件。 FIFO满查询方法 (1)FIFO满查询方法 通过IOC0 HSI输入 IOC0选 A、通过IOC0选HSI输入 通过HSIMODE HSI触发方式 HSIMODE选 B、通过HSIMODE选HSI触发方式 测试IOS1.6 C、测试IOS1.6 D、读HSISTA E、读HSITIME (2)查询保持寄存器 通过IOC0 HSI输入 IOC0选 A、通过IOC0选HSI输入 通过HSIMODE HSI触发方式 HSIMODE选 B、通过HSIMODE选HSI触发方式 测试IOS1.7 C、测试IOS1.7 D、读HSISTA E、读HSITIME
第六章 HSI
一、HSI的工作原理 HSI的工作原理 共有四个输入通道,当接入HSI HSI输入端的外部信号发 (1) 共有四个输入通道,当接入HSI输入端的外部信号发 生的变化和设定的触发条件相一致时, 生的变化和设定的触发条件相一致时,就叫发生一个事 触发电路会将此事件发生时刻T1 T1定时器的计数值自 件,触发电路会将此事件发生时刻T1定时器的计数值自 动装入FIFO FIFO中 先入先出寄存器队列) HSI一次可自动存 动装入FIFO中(先入先出寄存器队列),HSI一次可自动存 储八个事件的T1定时器的计数值。 T1定时器的计数值 储八个事件的T1定时器的计数值。 上升沿、下降沿、每次跳变、每八个上升沿( (2)上升沿、下降沿、每次跳变、每八个上升沿(触发条 件) 不仅能检测某输入线上的状态变化, (3)不仅能检测某输入线上的状态变化,同时还能记录事 件的发生时刻HSI内部设有FIFO寄存器和保持寄存器一起, HSI内部设有FIFO寄存器和保持寄存器一起 件的发生时刻HSI内部设有FIFO寄存器和保持寄存器一起, 可以同时记录8 可以同时记录8个事件 (4)通过软件可设置触发条件 适合于检测输入信号的周期,频率, (5)适合于检测输入信号的周期,频率,占空比等
CLV:
2080H LD LDB LDB ANDB JBC ORB LDB LD SJMP
SP,#0FFH IOC0,#01H HSIMODE,#01H IOPROT2,#0FEH IOS1.7,CLV IOPORT2,#01H AL,HSISTATUS BX,HSITIME CLV
第六章 HSI