鉴于对于DVD在待机状态的控制能力的限制,以及其干扰的实际存在,我们现在对其门处理作出修改:
1,门由MCU完全控制,门状态也由MCU完全监控
2,同车载不同,组合音响的门检测仅仅依赖开关来实现,没有检测二极管的处理过程
3,系统通电或者从STAND BY(时钟状态)中启动,首先要做出碟机关门的操作,确保开始工作时,门是关闭的。
4,如果系统进入DVD状态,开关门的操作过程,MCU要通知DVD芯片,进行屏幕显示和状态匹配
5,在非DVD状态,用户用按键和遥控开门,MCU进行操作,不影响当前工作状态
6,在非DVD状态,用户用按键、遥控或者推门关门,MCU执行状态切换到DVD的操作
在MCU直接控制门的操作中,要注意,开门和关门到位,从检测到开关变化,至停止动作之间,需要有一个多次检测开关和延时,保证机构稳定锁定,同时这个时间也不能太长,否则会因为堵转,导致烧毁电路。
7,由于门完全由MCU控制,门的动作控制是独立的,系统工作状态切换等操作,不受门状态影响。
组合音响碟机门状态和处理总结:
系统启动时,需要自动进行一次关门操作。
用户按键和遥控开门操作 | 用户按键和遥控关门操作 | 用户推动关闭已经开启的门 | |
系统开启引导期间 | X | X | X |
碟机工作 | 停止旋转,开门 | 关门 | 关门,检查和引导新的碟片 |
USB工作 | 开门,显示 | 关门,进入碟机工作状态 | 关门,进入碟机工作状态 |
CARD工作 | 开门,显示 | 关门,进入碟机工作状态 | 关门,进入碟机工作状态 |
AM/FM工作 | 开门,panel显示门动作 | 关门,进入碟机工作状态 | 关门,进入碟机工作状态 |
AUX工作 | 开门,panel显示门动作 | 关门,进入碟机工作状态 | 关门,进入碟机工作状态 |
时钟待机状态 | 开门,进入碟机工作状态 | X | X |
门的程序处理方法:
1,系统在按键处理程序中处理用户请求和启动门动作。
2,在循环程序中,保持一定间隔时间来监控和调整门的动作。
3,我们设计一个字节变量来记录门的状态,同时设置一个定时保护
--------------------------------------------------------------
变量设置:
当前门状态:无符号字节
常数:
门处于关闭状态
门处于等待碟片刹车状态 (保护定时3秒)
门处于等待开启到达状态 (保护定时4秒)
门处于等待开启到达延时状态 (保护定时300mS)
门处于等待关闭到达状态 (保护定时4秒)
门处于等待关闭到达延时状态 (保护定时300mS)
门处于开启状态
门超时保护定时:无符号字节
门处于等待碟片刹车时间常数 = 3S
门处于等待开启到达时间常数 = 4S
门处于等待开启到达延时常数 = 300mS
门处于等待关闭到达时间常数 = 4S
门处于等待关闭到达延时常数 = 300mS
--------------------------------------------------------------
DoorMonitorPro:
{
如果 当前门状态 = 门处于关闭状态,退出
如果 当前门状态 = 门处于等待碟片刹车状态,转等待碟片刹车处理
如果 当前门状态 = 门处于等待开启到达状态,转等待开启到达处理
如果 当前门状态 = 门处于等待开启到达延时状态,转门处于等待开启到达延时处理
如果 当前门状态 = 门处于等待关闭到达状态,转门处于等待关闭到达处理
如果 当前门状态 = 门处于等待关闭到达延时状态,转门处于等待关闭到达延时处理
如果 当前门状态 = 门处于开启状态,转门处于开启处理
}
等待碟片刹车处理:
{
门超时保护定时到达?
不是,是否已经接收到成功刹车标志
{
不是退出
}
是到达
{
执行马达开门操作
当前门状态 = 门处于等待开启到达状态
门超时保护定时 = 门处于等待开启到达时间常数
}
等待开启到达处理:
{
检测门是否到达?(TRAY_OUT变低)
{
是
当前门状态 = 门处于等待开启到达延时状态
门超时保护定时 = 门处于等待开启到达延时常数
}
没有到达,是否门超时保护定时到达?
是
{
开门操作夭折处理
设置系统有新按键输入标志
设置新按键 = OPEN/CLOSE
}
不是退出
}
门处于等待开启到达延时处理:
{
门超时保护定时是否到达?
没有退出
到达
{
停止马达运动
当前门状态 = 门处于开启状态
清除其他标志
}
}
门处于等待关闭到达处理:
{
检测门是否到达?(TRAY_IN变低)
{
是
当前门状态 = 门处于等待关闭到达延时状态
门超时保护定时 = 门处于等待关闭到达延时常数
}
没有到达,是否门超时保护定时到达?
是
{
关门操作夭折处理
设置系统有新按键输入标志
设置新按键 = OPEN/CLOSE
}
不是退出
}
门处于等待关闭到达延时处理:
{
门超时保护定时是否到达?
没有退出
到达
{
停止马达运动
当前门状态 = 门处于关闭状态
当前系统工作状态是否碟机状态?
是
{
向DVD发开始引导判断碟片命令
}
不是退出
}
}
}如果门处于开启状态,转推门监控子程序
门运动序列监控子程序:
{
是关门监控周期:
是等待门到达周期?
是,门是否到达关闭?
是,设置进入门运动延时周期,启动相应定时
否
{
是否已经超时?(时间由第一次启动门动作的键处理程序付值)
没有超时退出
有超时做门运动夭折处理,启动反方向门运动操作
}
是否门运动延时周期?
是
{
时间是否到达?
没有到达退出
到达,停止门马达操作,设置相应标志,通知DVD系统开始工作。
}
}
门处于开启处理:
{
门检测和抗抖动处理
门开启开关是否已经变化:
不是退出
是:
{
设置系统有新的按键输入标志
设置新按键 = OPEN/CLOSE
}
}
--------------------------------------------------------------
OPEN/CLOSE按键处理程序:
{
如果不是 当前门状态 = 门处于开启状态 和 当前门状态 = 门处于关闭状态,执行马达停止操作
如果 当前门状态 = 门处于关闭状态 或者 门处于等待关闭到达状态 或者 门处于等待关闭到达延时状态,转开门操作处理
如果 当前门状态 = 门处于开启状态 或者 门处于等待碟片刹车状态 或者 门处于等待开启到达状态 或者 门处于等待开启到达延时状态,转关门操作处理
}
开门操作处理:
{
如果系统处于碟片并且碟片播放状态
是
{
门超时保护定时 = 门处于等待碟片刹车时间常数,启动定时
当前门状态 = 门处于等待碟片刹车状态
}
不是
{
执行马达开门操作
当前门状态 = 门处于等待开启到达状态
门超时保护定时 = 门处于等待开启到达时间常数
}
}
关门操作处理
{
执行马达关门操作
当前门状态 = 门处于等待关闭到达状态
门超时保护定时 = 门处于等待关闭到达时间常数
系统工作状态是否处于碟片状态?
是的,退出
不是
{
设置系统有新按键输入
设置新按键 = DVD
}
}
--------------------------------------------------------------
上电初始化门操作:
{
执行马达关门操作
当前门状态 = 门处于等待关闭到达状态
门超时保护定时 = 门处于等待关闭到达时间常数
}
文章评论(0条评论)
登录后参与讨论