od zdeno » pát 19 kvě, 2017 7:17 am
je zajimave, ze vyresenim jednoho problemu se objevi problem dalsi, kolikrat i dva. Ted jsem narazil na zradu jmenem priority na sbernici Loconet.
---
Sbernice Loconet je nerizena a pristup na sbernici je urcovan rozdilnym casem, ktery ma kazdy ovladac jiny. Obvykle byva 512 priorit v rozdeleni po 2uS. Muze jich byt i vic, ale to nebyva zvykem.
Zakladni cas je 1560uS od posledni zmeny na Loconetu a k tomu se pripocitava individualni cas kazdeho ovladace. Tim je zajisteno, ze se postupne vsechny ovladace prihlasi.
Problem nastane, kdyz maji dva ovladace stejny cas priority a oba dva se prihlasuji opakovane ve stejny cas. Toto se stava pri zapnuti centraly a je pripojeno mnoho ovladacu.
Potom se stane, ze se zablokuje Loconet a jedine reseni je, ze se musi ovladace odpojit a zase pripojit individualne.
---
Trosku odbocim a protoze jsem si nastudoval problematiku, tak neco o tom napisem. Co myslite, kolik lidi je potreba na to, aby se ve skupine lidi vyskytlo stejne datum narozeni u dvou lidi ?? Teda ne konkretni datum, ale proste to, ze maji v te skupine dva lidi stejny datum narozeni. Nebudete tomu verit, ale pry staci 15 lidi a je 50% sance, ze nekteri dvaja maji stejne datum narozeni. Pri 20 lidech je uz sance az 80% a pri 30 lidech je to sance az 98%.
Teda pri pouziti mnoziny 365 je opravdu velka sance, ze pri 20 lidech se najdou dva stejne datumy narozeni.
A to same plati i pro priority na ovladacich Loconetu, cim vice je pripojovanych ovladacu, tim je vetsi sance, ze se nektere ovladace setkaji na stejne priorite a neprihlasi se. Zrada je v tom, ze tyto dva ovladace zablokuji Loconet.
Ten sice funguje, ale opravdu dost pomalu.
---
A ted proc o tom pisem, pokud jsem mel ovladace rizene internim oscilatorem, tak ten mel toleranci 5% a tim padem se casy na prihlaseni rozdelovali z 512 priorit na dalsi podskupiny v ramci tech 5% a prakticky nedochazelo k setkani stejnych priorit. Pouzitim krystalu se to ale velmi tvrde omezilo a krystaly maji toleranci 30ppm, to je presne 0.000 03 = 0.003 % a proto se tolerance v tomto intervalu neskutecne omezily. Prakticky nedochazi k casovemu posunu a ovladace se stejnou prioritou se proste nedokazou prihlasit, protoze se chovaji naprosto totozne a nedokaze jeden druheho predbehnout.
---
Tento problem ma reseni a to se jmenuje vicnasobna priorita, teda nejen zakladni priorita, ale i zmena priority, pokud dojde ku kolizi na sbernici Loconet.
Teda ovladace musi umet dynamicky a hlavne rozdilne menit prioritu, pokud dojde ku kolizi na sbernici.