查询主从机中断同步的方法
while(!flag)若中断标志flag不为1,意味着还没有响应中断,于是一直不停查询
响应中断之后,flag会变为1,退出循环
然后立即将flag清0,接着马上跳转到goto语句指定的地方,用这个来同步。
即:在约定的时间内进行不断查询,查询的单位时间很短,放弃了一个短时间的效果显示来实现长时间的信号同步
过程描述如下:
上电后,主机,从机各自跑相同的效果,由于晶振的原因,会导致执行速度不同。在短时间内这样的速度差异难以被人察觉,但是这样的差异性是一个累加的过程,在运行了很久之后,各个不同的机器之间的差异就很明显了。
因此我们要在差异累加到不能忽略之前,对每个机器进行同步化处理。现在只是一条连线,从主机的IO口到各个从机的外中断口。
即:我们只能用外部中断来实现同步调整。
根据我在另一篇文章http://www.51hei.com/mcu/1168.html中的介绍可知外中断信号是在每一个机器周期都会由硬件自动查询的,所以,一旦有“同时的”中断信号传到各个不同速度的从机的中断口的时候,各个机子都会在第一时间内响应这个中断,,此时各个机器之间的绝对时间差异就只有一个机器周期的差异,设为Td。
假设机器1的晶振实际工作频率为16.001MHz
机器周期为T1=12/(16.001*E6)
机器2的晶振实际工作频率为16.0009MHz
机器周期为T2=12/(16.0009*E6)
他们之间的差异Td=T2-T1=(12/16000900)-(12/16001000)=7.488531279295044*(e-7)=1.1046869434089*(e-9)S
理论上我们能够用视觉发现有不同步的差异时间为10毫秒级别,即
1*(e-2)
所以在这个不可避免的差异累计到我们能够用眼睛觉得到时,需要累加
n=1*(e-2)/1.1046869434089*(e-9)=9052338次
而我们进行同步的时间间隔是1分钟,那么我们依*视觉发现机子不同步的时候,同步系统已经运行了150872.3小时,约等于6286天,大概为17年!
因此只使用一条数据线来实现同步是可行的。我们需要这样的主机:
循环运行6个效果函数,每个效果函数运行10次。最后一个效果函数例外,它要为同步服务,因此它的单次循环时间应当比较短暂,为了可以看到明显效果可以多循环几次,例如循环20次。
在运行最后一个效果函数的第20次的中间发送一次中断同步信号,发送同步信号之后延时一定时间进入事先约定的同步效果。这个一定时间是指信号传输时间,被从机识别、响应的时间总和。可以用试验方法测试取得。
方法如下:主机与从机器使用前一段相同的程序,运行完相同程序后,主机在发送中断信号,而从机开始用计数器计数(建议计数器初值为00,这样好算一些),响应中断后停止计数器。读取当时的计数器值,就可以得到稍微准确的中断响应时间。Ti=(12/f)*n,f为晶振频率,n为所读取的计数器值。获得这个时间之后就可以使用汇编语言来进行主机的延时,这样的效果应该是最好了。
因此我们需要这样的从机:
无论是较主机快的从机,还是较主机慢的从机,都必须在主机发送中断信号之前进入循环查询状态,这样才能一起进入同步效果。因此,从机不运行最后一个效果的第20次,而在运行完第19次之后都进入循环查询状态,这样虽然会有暂时的不同步现象,但是我们可以把最后一个效果的单词循环做得很短暂,这样就可以用短暂的不同步换取长时间的同步。
因此我们需要这样的--最后一个效果函数:
单次循环时间尽量短,但是最好要大于2倍的Ti,与其他效果函数不一样,应当循环多次,如20次
- 基于FPGA的PCM3032路系统信号同步数字复接设计(08-08)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...