- néha kezdetben, amikor rádugom a kakaót, akkor nem állítódnak a jelzők, rosszul indul el a rendszer
- vagy néha elfelejti átállítani a jelzőket akkor, amikor elmegy a vonat az ellenőrzőpontnál
Apró hibáknak tűnnek, de a javításuk 10 óra volt mindenestül együtt. A probléma ugye az, hogy néha megy, néha nem megy. Ezek a legrohadtabb fajtából vannak. Több hónap kellett, hogy végre leüljek és rááldozzam azt a 10 órát, mert helyette idáig inkább szórakoztam, netezgettem és hagytam az egészet a fenébe.
Hiba 1: amikor időnként nem indul el a rendszer
- a rendszerre kötött TLC5940-es IC-k számát úgy határozom meg, hogy kiküldök SPI-n egy csomó 0xFF byte-ot, kiküldök utána egy 0xA5 bájtot és utána addig tolom az 0xFF bájtokat, amíg a 0xA5 vissza nem jön. Ez a chip shift regiszternek felel meg. Ha egy TLC van, akkor 24 küldés után jön vissza, amit beraktam. Ha 10 TLC van, akkor 240 után. Mi volt a probléma? Az, hogy egy TLC sem volt rákötve. Ilyenkor elvileg küldöm az adatokat, de mivel nincs IC rákötve, semmi sem jön vissza. Ezt programból detektálni lehet. Amit eltoltam, hogy a MISO láb lebegett, nem raktam rá pull-up-ot. Ebből kifolyólag Időnként megérkezett a 0xA5, anélkül is, chip lett volna mögötte, mikor éppen úgy támadt kedve lebegni. Itt pedig szétszállt az egész.
Hiba 2: amikor kimarad a jelző frissítése
- az I2C adat interruptban jön, a jelző a fő szálban fut. Hiányzó volatile és szinkronizáció (cli). Jó szórakozás AVR alatt szinkronizációs problémák vadászata. Pláne, hogy azt sem tudtam, hogy elküldi-e a másik IC, ezért analizátorral kellett kimérni. Utána láttam, hogy el is küldi, meg is kapom, csak valamiért elveszik. Ekkor szinkronizálás + volatile és lám megjavult.


