CAMPac / ClonePac 16K a 64K



CAMPac je výměnný paměťový modul určený k rozšíření základní paměti vysílačů Futaba. Nejen k rozšíření, ale i k zálohování nastavení modelů v případech, že, nedej bože, musíme poslat vysilač do opravy, nebo potřebujeme skopírovat model do druhého vysilače. Bohužel jen do stejného typu. Je to logické, protože čím je vysilač složitější, umožní nastavit ke každému modelu více parametrů a tím každý model potřebuje více paměti. Podle typu vysilače a velikosti paměti je tak počet modelů patřičným způsobem rozšířen. Dnes již považována základní pamět 16K pojme jedenáct modelů u FC-18, kdežto u FF-9Super jen šest.

Pokud se rozhodneme, že si 16K pamět pořídíme jako originál, budeme muset sáhnout asi dost hluboko do kapsy. Tento přístup výrobců mě stále více a více rozčiluje. Vyrobit si 16K paměť není pro zručného laika nic složitého. Modul obsahuje celkem 4 součástky.

  • sériovou paměť EEPROM 24LC16
  • odpor 10k
  • kondenzátor 100n nebo podobný a dá se vynechat
  • dutinkový konektor s roztečí 2mm

    [Klikni pro plné rozlišení]
    600 dpi
    Pouze konektor je netypická součástka, protože standartní rozteče jsou 2,54mm. Dají se však relativně běžně sehnat ve větších prodejnách s elektronickými součástkami. Celkové náklady na součástky jsou zlomkové, zbývá jen vyrobit plošný spoj. Paměť samozřejmě můžeme použít jak v klasickém provedení DIL8 nebo lépe v SMD provedení, ale i ta se dá při troše praxe zapájet hrotovou pájkou.


    Kdo by se ale spokojil s 16K pamětí a nechtěl větší?

    16K modul je však jediný, který se dá tímto "amatérským" způsobem vyrobit. Nejdříve jsem se pídil po Internetu po nějakém zapojení nebo popisu komunikačního protokolu. Bohužel jen s polovičním úspěchem. Nalezl jsem na ruských stránkách popis modulu MEMPAC64 s mikroprocesorem Atmel ATTiny15L. Úžasně jednoduchý procesor v pouzdře s osmi vývody a 1K paměti. Tento procesor má ale jednu nevýhodu. Ze zkušeností, které s ním mám je kalibrační konstanta vnitřního oscilátoru od výrobce dost vysoká a procesor se tak nedá přinutit k vyšší frekvenci.

    Procesory jsou vždy taktovány nějakým kmitočtovým normálem. Zprvu to byl externí krystalový oscilátor ve spojení se dvěmi keramickými kondenzátory. Později byly procesory vybavovány vnitřními oscilátory, případně kombinací obou, kdy se v procesu programování zvolí vhodný oscilátor. Protože se oscilátor nedá vyrobit vždy zcela stejný, provádí výrobce při výrobě každého kusu kalibraci. Tuto konstantu pak zapíše do paměti procesoru. Tato konstanta pak nastaví všechny procesory na stejný kmitočet. Zvětšení hodnoty konstanty dojde ke zvýšení kmitočtu. Uložený program tedy běží rychleji.

    Najít protokol se mi ale nepodařilo. Nezbývalo tedy, než protokol někde odkoukat. Měl jsem dvě možnosti. Připojit se přímo do vysilače nebo se podívat jak komunikují programy pro čtení a zálohování těchto modulů. Ten druhý je samozřejmě bezpečný způsob. Stačí vyrobit nějakou čtečku CAMPac modulů a jednoduchým logickým analyzátorem se připojit na 2 dráty. Komunikace s vysilačem probíhá po dvou drátech v protokolu I2C (jednosměrné hodiny a obousměrá data) a to samé mezi procesorem a vlastní 64K pamětí. Nejdříve je nutné dokonale pochopit jak komunikuje čistá paměť, pak se ponořit do analýzy výstupu logického analyzátoru a potrápit šedé buňky mozkové.

    Základním kamenem bylo zjistit, jak je adresována větší paměť než základní 16K. Jedná se o osm bitů adresy, která přijde hned po startovací sekvenci (přechod SDA z 1->0 při SCL=1). Adresaci ilustruje následující tabulka.
    paměť7 6 5 4 3 2 1 0
    24C161 0 1 0 B2 B1 B0 R/W
    24C640 0 A12 A11 A10 A9 A8 R/W
    Po několika dnech byl základ na světě. Pak to honem naprogramovat a vyzkoušet. Očekával jsem samozřejmě problém. Problém v tom, že délky hodinového signálu nejsou totožné přes externí čtečku a přímo ve vysilači. Bylo to asi 16 naprogramovaných procesorů přímo do vysilače a čas byl na světě. ATtiny má totiž další úžasnou vlastnost, že má i vnitřní paměť EEPROM, kam se dá naměřená hodnota uložit a poté v programátoru vyčíst. Mít-li nějaký emulátor, šlo by to jistě rychleji ale tady lze ještě vystačit s primitivními ladícími prostředky. Nakonec program vyšel na 480 bajtů.

    [Klikni pro plné rozlišení]
    600 dpi
    Jako procesor jsem ale použil trochu větší ATtiny2313. Hlavně kvůli rychlosti. Při vyšší rychlosti se dá program napsat složitější a tím úspornější. Pokud mě bádání na tomto poli bude ještě chvíli bavit, přepíši program z assembleru do "Cčka".
    V poslední verzi jsem modul upravil do definitivní podoby, kdy je frekvence stabilizována externím krystalem a odpadá tak nutnost případné kalibrace vnitřního oscilátoru.


    Máte-li zájem, kontaktujte mě a já jsem schopen modul pro Vás vyrobit.