Popis sériové komunikace z PC do čipu PICAXE - další
příklady vidláckého programování
Úvod
Vážení čtenáři, to jsem to od vás v uplynulém týdnu schytal :-) Nemohu
každému z vás odpovědět na více mailů, ale přidávám to, oč mě žádáte.
Popis jednoduchého programu pro komunikaci mezi PC a mikropočítačem.
Přestože nemám rád návody, tak zde ty prográmky jsou téměř návody.
Počítačové bakalářství toho má dneska málo společného s technikou.
Část komunikačních programů pro PC
(Windows) jsem už v minulosti popsal. Ale určitě tady přidám ještě nějaký
příklad, až vyšetřím chviličku času. Jeden jsem však
stačil
dneska upravit. Lze s ním níže popsaný spínač řídit.
Výslovně na vaše přání uvádím tu
nejjednodušší a supervidlácky napsanou komunikaci, kód programu pro
mikropočítač, tedy to, co je na druhém konci seriové linky od PC. Tedy
program pro "dětstký" PICAXE procesor. Tady je schéma HW:

Na fotografii vidíte desku, která původně
slouží k
programování čipů frekvenčních syntezátorů PLL, ale
tady v tomto
příkladu jsem ji použil pro spínání jediné LED, která na desce je, a to povelem z USB
rozhraní přes FTDI konvertor, protože jsem už v šuplíku neměl ani jeden
volný čip a žádný rozdělaný přístroj s lepší deskou:

Potřebné součásti a dovednosti
Pokud si chcete zkonstruovat jednoduché kontrolery, které budou ovládané z
PC nebo z tlačítek, budete potřebovat nějaký ten jednočipový mikropočítač.
Já používám v současné době ATMEGA88, ATTiny a čipy PICAXE.
Čipy PICAXE mají výhodu v minimálním počtu součástí potřebných kolem
čipu. Vpodstatě potřebujete jen čip, blokovací kondenzátory na
napájení a dva nebo 4 rezistory na ošetření vstupu ze sériové linky RS-232.
Dva v případě, že čip nebude komunikovat po sériové lince a 4 v případě,
že bude komunikovat. Ty první dva použijete pro zavádění programu do čipu
a ty druhé dva pro pouštění dat ze sériové linky do čipu. V našem případě
povelů, pomocí kterých budeme ovládat svícení LED diody.
Z dovedností potřebujete:
- umět zapojit čip PICAXE do desky (plošný spoj, bastlfuš karty, podle
toho, s čím kdo dělá)
- umět spustit editor pro programování čipu, já jsem psal těch pár
instrukcí v PICAXE Editor 6
- pochopit a naučit se několik základních instrukcí
Použité instrukce
Zde si lze stáhnout komentované výpisy dvou jednoduchých vidláckých
programů. V prvním je
popis programu, který testuje, zda tlačítko na vstupním
pinu C.2 je sepnuté, či nikoliv. Program dělá pár věcí, po startu zabliká
s LEDkou na pinu C.0, testuje tlačítko, skáče do některého z podprogramů,
atd.
Ve druhém programu bylo
tlačítko nahrazeno vstupem pro sériovou komunikaci.
Tady je fotka, jak "komunikuji" s kontrolérem pomocí programu na testování
komunikace Icomů:

Poznámky
1. V počítačovém bakalářství je často těžké se domluvit s lidmi a nebo
pochopit, jak to mysleli. Tomu se nevyhneme ani u mikropočítačů tak
jednoduchých, jako je PICAXE a jeho Basic. Je opravdu jednoduchý. Určený
pro školní děti. Z mého pohledu je vidlácký, ale maličký prográmek
napíšete za večír, i když jste s tím rok nedělali. Takže, s čím jsem měl
problémy? Pochopit, že jednou se pracuje s pinem např ve tvaru zápisu high
C.0, což nastaví pin č. 7 na vysokou úroveň. Při testování musíte pracovat
s označením pin2, protože špička č. 5 je druhá v pořadí, která je
nastavená na čtení. Ta první je špička č. 4, která nejde nastavit jako
výstupní. Jinak zase musíte označit číslem sériový vstup. Tady, mimochodem
je počítají na pouzdře s 8 špičkami od nuly do sedmičky (0 až 7).
Pravděpodobně editor psalo víc programátorů, každý měl jiný styl. Pro
uživatele však jde o záludnosti, na které si musí přijít sám. Vývojové
kity (bastl karty) jsou s manuály více než užitečné. Otráví vás to, pokud
to musíte hledat a číst opakovaně. Proto si oživené algoritmy okomentuji a
ukládám. Občas se mi to hodilo.
2. Pro komunikaci se vám budou hodit komunikační programy.
Zde je ke stažení
soubor zip, který obsahuje můj oblíbený terminálový program Hercules.
Okopíroval jsem tu také jeho obrazovku, abyste viděli, v jakém formátu
jsem do něho psal data, čím jsem je odděloval, apod. Hercules je jediný
exe soubor, nicc se nikde neinstaluje, umí mnohem víc věcí. Proto je v
adresáři také html stránka s návodem.

3. V příkladu jsem použil protokol podobný takovému, který používá Icom.
Takový protokol umí adresovat kontrolér. I tak jednoduchý čip, jako je
PICAXE, disponuje nádhernou funkcí tzv. parametrů qualifiers. Jde o bajty,
které musí po sériovém portu přijít na vstup čipu. Pokud jsou v pořádku
přijaté, v uvedeném příkladě čip přijme bajt s užitečnými daty. Tento bajt
se testuje a podle výsledku testu se spíná nebo nespíná výstup C.0.

4. Hodnoty qualifiers jsem použil takové,
jako používá Icom pro komunikaci do rádia ICOM 7200. Použil jsem jen první
čtyři bajty: FE FE 76 E0, což znamená FE FE preambuli, 76 je adresa
IC7200, E0 je adresa kontroléru, který smí do IC7200 posílat povely. Tyto
čtyři bajty jsou v hexadekadickém formátě. Abyste si ho uměli přepočítat
do desítkového, je v adresáři s terminálem také kalkulačka na přepočet. V
dekadickém formátě mají qualifiers hodnoty 254, 254, 118, 224.
Minimum o číselných soustavách, které se hodí v oboru komunikace z PC do 8
bitových mikropočítačů jsem popsal tady.
5. Za qualifiers je odeslán jeden bajt s daty. Pokud qualifiers sedí,
znamená to, že jde o povel do vašeho kontroléru. Ten ho přijme a data
uloží do proměnné b1, což je jediná proměnná v tomto programu. Tuto
proměnnou testuji a zjišťuji, zda není nulová nebo nemá hodnotu 255 v
dekadickém tvaru. Podle výsledku zapnu nebo vypnu LED. Jiné hodnoty mě
nezajímají, program na ně nijak nereaguje a čeká na další bajty.
6. PICAXE Editor 6 má vestavěný simulátor.
Je to dobré, když ještě nemáte žádnou desku s čipem a začali jste zkoušet
prográmek. Já to používám hlavně s notebookem ve vlaku. Rovněž tento
komunikační program lze vyzkoušet:

Na řádku bufferu vidíte čtyři bajty
qualifiers (254, 254, 118, 224) a jeden bajt s povelem (255). Jde o povel
k rozsvícení LEDky. Bohužel, to, co jsem neviděl, byla informace, ke
kterému portu editor tento simulátor připojil :-) Inu, i profesionální
programátoři, kteří mají tak vynikající produkt, jako je PICAXE, trpí
profesionální slepotou o tom, že náhodný kolemjdoucí budoucí uživatel jim
do hlavy nevidí a musí bádat v dokumentaci, jak to je.
7. Za výhodu čipů PICAXE považuji také
skutečnost, že k naprogramování nepotřebujete žádný programátor.
Zkompilovaný kód posílá editor PICAXE rovnou po sériové lince.
Elektrická schémata zapojení sériového
rozhraní
Sériové rozhraní mezi PC a PICAXE lze
elektricky zapojit dvěma základními způsoby:
1. Použít adaptér USB to RS 232. Tyto adaptéry mají nízkou klidovou
úroveň, značka má vysokou úroveň. Firma Revolution uvedla ve svém manuálu
jednoduché zapojení, které využívá pouze 2 rezistorů. Tímto zapojením
zavedete do PICAXE program z editoru. Pokud si zrealizujete na desce dva
vstupy, můžete do pinu 2 zavádět program a např. do pinu 4 posílat povely
z PC. Piny nesmí být spojené (nefungují povely). Na straně PICAXE se v
povelu serin používá zadávání baudové rychlosti ve tvaru N2400 (N je
důležité, nikoliv T):

Toto zapojení je vhodné pro případ, že
mikropočítač je od PC vzdálený. Sériový kanál můžete realizovat např. s
pomocí bluetooth adaptéru, adaptérem RS-232 over ethernet, atd.
V případě, že máme mikropočítač PICAXE
poblíž USB rozhraní, tj. u notebooku, na hubu, atd., vystačíme s levným
USB FTDI adaptérem (kabelem), který nemá obvody pro RS-232. Takový adaptér
však má "obrácenou" polaritu. Tedy vysokou úroveň v čase mezery, nízkou
úroveň v čase značky. Takovým kabelem nezavedete do mikropočítače program,
pokud polaritu neinvertujete. Já jsem použil pouzdro s invertory 74HC04 v
provedení SOIC14, které jsem naletoval na malou desku PCB přímo do
konektoru Canon (DB9). Zapojení potom vypadá takto:

Obvod 7404 je napájen napětím +5V z USB
rozhraní (červený drát). Zem GND byla vyvedena u mého kabelu černým
drátem. TxData byla vyvedena na zelený drát. V klidu (mezera), jsem na něm
naměřil asi 3.5 V. RxData byla vyvedena na bílý drát. Z adaptéru byly
vyvedeny ještě signály CTS (modrá) a RTS (žlutá). Tyto nebyly použity.
Toto zapojení používám, jak jsem psal, pro zařízení, která leží na stole
nebo u hubu. Většinou jde o programátory, zkušební desky a o zařízení,
která jsou použita ke komunikaci uvnitř víceprocesorového přístroje.
Příklad : Mám dálkově řízený tuner. Jsou
v něm celkem 2 desky s elektronikou. Na první desce je PICAXE 20M2, který
je připojen k portu RS-232, komunikuje s PC, ovládá celkem 8 relé
přepínače indukčností. Z pohledu toku dat přijímá povely z PC a odesílá po
sériové lince data do druhé desky. Na druhé desce je rovněž PICAXE 20M2,
který přijímá data z prvního procesoru, nastavuje 8 relé přepínače kapacit
a 2 relé, která připojují kapacity na vstup nebo na výstup indukčností. A
také po sériové lince potvrzuje do prvního procesoru (a ten do PC), že
kontrolní byty povelů byly správně přijaty. Do druhé desky je třeba zavést
na stole program a spustit testy, že program správně spíná jednotlivá
relé. Neviděl jsem důvod mít na druhé desce rozhraní RS-232, stačí jen TTL
úrovně a adaptér podle druhého schématu.
Závěry
Předpokládám, že je všechno jasné a že si
zkoušíte svou první komunikaci mezi PC a vámi zkonstruovaným zařízením, hi ...
Pokud to někdo umíte ještě jednodušším způsobem, pochlubte se!
Kus kódu z
programu (Windows), který posílá bajty z PC do kontroléru je taky např.
také na stránce zde.
Přestože jsou mikropočítače PICAXE určené
pro výukové programy a pro děti, považuji si na nich těchto výhod:
1. Nepotřebujete programátor. Netrápíte se tedy se zaváděním programu.
Netrápíte se např. s tzv. konfiguračními bity, jako u jiných procesorů.
2. PICAXE pracují s minimem vnějších součástí. Např. ve schématu 2 tvoří
mikropočítač jen čip PICAXE, dva keramické blokovací kondenzátory
(používám 10n a 10M v keramice) a přepínání vstupů.
3. Naprogramujete je s pomocí jednoduchého vyššího programovacího jazyka
Basic, který byl kdysi vyvinut pro techniky a začátečníky a jak vidíte,
stále se používá. A používá se díky tomu, že se snadno učí.
|