|
|
课题2 门开放时间的检测•报警功能的实现 | |||||
| ■ 課題2
2006年4月5日 16:53 更新
|
●课题2的目标作为课题2,完成「门开放时间检测•报警功能的实现」课题的提出。→从这儿提出 基本的实际操作方针如下所示: ・把计数器counter作为TMR1中断的后分频器来利用 ●关于用来检查socket超时的计时器timer(1)概要 中断例行程序内的int_tmr2以TMR1中断(13.1msec)间隔被呼出,紧接着,把用于socket超时检查的计数器timer(寄存器BANK#1)+1。 <中断例行程序int_tmr2标签附近的实际配置>
由于计数器是8bit,在累计256次以后就会溢出,呼出dec_tm。花费在这上面的时间为:
由于timer只是+1,其后已经不使用Wreg,所以比起「MOVLW + ADDWF + Carry标签确认」,「INCF + Zero标签确认」也许能够节约1段字节。 对于ADD(SUB)系列演算命令与INC(DEC)系列演算命令 由于演算后的STATUS标签的变化是不同的(ADD系列为 C,DC,Z, INC系列仅有Z变化),要适当区分使用。 有关详细内容参照下面的数据清单的命令详解。 ADDWF命令: INCF命令: 这样,执行INCF+Zero标签确认的版本只要按照下面这样操作就行了。 <改良方案>
●把timer内的各位作为时间后分频器使用计数器timer的各位(bit0~7)可以看作以TMR1中断间割(大约13.1msec)进行1:2~1:256分频的后分频器。 表1:timer各位的周期
最上位(bit7)周期大约3.36秒。稍微有点过长。Bit5的周期大约是0.84秒,在这时测量门打开时间正合适。 ●实验1:计时器timer的利用作为先前在课题1作成的test4模块的替代,被呼出后,利用计时器timer的bit5的分频比(1:64),进行大约每隔0.84秒,RB4(LED#4)亮灯⇔灭灯的输出。可以作为后分频器的动作确认。 作为PIC单片机的条件分支命令,用AND命令来实行位掩码,在那个领域全部是0的时候,来确认Z图框是否被确定是最简单的方法。 因此,在用timer:bit5的分频比(1:64)进行分支处理的场合,在进行bit5~0是否全是0的确认之后,变更RB4的输出值(H⇔L)就行了。 <特定位值的交换方法H⇔L> 执行XOR演算命令。使位掩码对应如下的话,可以利用一次XOR命令来进行H⇔L值的变更,非常便利。 例:把W寄存器的bit4进行值交换 XORLW B'00010000' <test5模块的实际配置例>
#没有必要再从中断例行程序执行goto test5 试着执行后,能够确认LED#4大约闪烁了1.6秒。 LED的闪烁完全就象心脏的跳动。
●実験2:新建计数器counter1的利用作为借用计时器timer的替代,利用新建的计数器counter(BANK#3),执行与test5模块同样的动作试试看。当然,counter1的添加必须在先前完成。 (变更处) bsf STATUS,RP1 incf counter1,0 ; Wreg <- counter1 + 1 bcf STATUS,RP1 ●実験3:在「门打开状况」超时之后,警报动作利用新建的计数器counter2,进行测量「门打开状态」时间,超时时间设定以及通知处理,制作test6模块。 Counter2是在实验1•2中作成的“心跳”的周期timer(或者是counter1)被累计的。(大约每0.84秒+1) 对于根据门的状态的条件分支处理,参考在课题0•实验4中作成的test2模块。 <规格> ・「门打开状态」在持续一定时间的场合,警报动作 <处理概要> ・门关闭时 : RB7(警报) off ・门打开时 : timer分频处理 <超时时间的计算例> 在打开门时,计数器counter2以TMR1中断间隔的1:64分频的大约0.84秒累计。 例如,思考在要求「打开门后,希望大约在10秒左右警报动作」的场合。 在这种场合,到超时的累计数为10 / 0.84 = 11.90…,counter2从0开始计数,结果,超时的「上限值」=12。 提示之一: 提示之二: 提示之三: ●执行例关门的状态 → 打开门 →(经过10秒钟)→ 超时,警报动作
●课题2的提交
(1)完成实现「打开门状态」超时后,警报动作的test6模块的制作。 (2)利用门传感器状态,web控制画面上的RB5状态变化功能,确认是否按照规格正常动作 (3)变更汇编源代码文件的版本编号为ver1.2.0.7 另外,把web控制换面的封面部分,适当地变更为自己的学籍编号等。 (4)把完成的汇编源程序文件以v1207e2.asm命名保存(全部使用半角英文字母数字•字母用小写,半角日文片假名•绝对不可以使用全角文字命名文件名) (5)从以下的报告提出系统,上传v1207e2.asm ,在接收到报告后进行评分。 <提出方法> 提出的文件,在经过动作确认后,假如有动作不良的场合需要再次提出,动作ok的场合,评判为完了。 报告课题0(课题编号:picnic-exp02)的提出从这儿进入 (6)显示「等待评判」,请稍微等待。评判结果长时间不出来的场合,请发送邮件至这儿。 (7)被评判为再次提出的场合,修改指出的不完善的地方,更改v1207e2a.asm等文件名,再次提出。 (8)不是(7)的场合(评判为完了),报告课题2被受理,完了。
●考察要点在下面举出针对这次的规格与实际操作的考察点。无须作为报告来回答,但是程序完成•报告提出之前,必须自己归纳思考。
[1]假定超时时间设定范围在数秒~数小时的场合,由于这次实际配置的8bit计数器的原因,在后分频器会产生故障。应该如何改善以满足这样的要求? [2]内部时钟本身由于是使用了由水晶振动器产生的外部时钟的分频,精度非常高(与石英表相同)。不是作为开门报警,作为24小时制时钟实际使用,以一定的时间间隔使继电器进行开,闭动作也是很容易的。但是,把时钟(20MHz)以1:2^n分频的场合,原样不变的话,无法成为1秒单位,1分单位,1小时单位的计数器。为了分别以counter1,2,3来计算,使用,应该如何进行分频处理? [3]次数计数器counter2在复位后,在某处应该被设定为初始值=0。这个具体地可以在何处实际操作?
|
|||||
|
wasaki@cs.shinshu-u.ac.jp |