Rutiny ROM, ktoré riadia prenos
Celý prenos je riadený softvérovo, starajú sa oň tieto časti kódu:
Príjem jedného bajtu prebieha nasledovne:
- skontroluje sa, či linka je v stave H
- čaká sa na zmenu stavu na L (start bit)
- v časovom odstupe definovanom konštantou TSIN1(D4C6) sa 8-krát po sebe zisťuje stav vstupu (RESERVA_IN), výsledný bajt skladá v registri B (pôvodné BC je v zásobníku)
- v časovom odstupe definovanom konštantou TSIN2 (D4C7) sa zistí stav vstupu, v prípade úrovne H (teda prítomnosť stop-bitu) je prenos bajtu považovaný za úspešný, inak hlási chybu
- primapuje sa RAM na celý pamäťový priestor
- načítaný bajt sa uloží na adresu v HL
- premapuje sa na ROM
Formát dát
Prenos prebieha v blokoch bezprostredne nasledujúcich za sebou. Na začiatku každého bloku je hlavička v dĺžke 3 alebo 5 bajtov.
Blok 01 určuje, kam sa nasledujúce dáta budú ukladať v pamäti RAM a aký dlhý je blok dát,
Blok 02 definuje adresu, na ktorej sa má začať vykonávanie programu , tento blok je v prenose na samom konci.
Prvých 5 bajtov - hlavička sa ukladá do registrov (D - typ bloku, HL - počiatočná alebo štartovacia adresa, BC - dĺžka dát).
Zvyšné dáta z bloku sa ukladajú do pamäte na adresu HL.
Prenos dát pod lupou
Odosielanie dát z počítača Ondra
Dáta generované počítačom Ondra približne zodpovedajú štandardu, až na stop bit, ktorý nemá dĺžku dvoch bitov, ale je oveľa dlhší.
Dĺžka jedného bitu je 0,1015ms
Dĺžka stop-bitu 0,6511ms
Vysielanie hlavičky: 01h, 00h,88h,0FEh,00h
Vysielanie prvého bajtu 01h
Príjem dát na počítači Ondra
Na nadradenom počítači treba nastaviť prenos 9600 baudov, 2 stop bity. Pri testoch s rôznymi portami USB-to-TTL bolo zistené, že nie všetky majú presné časovanie. Správna dĺžka bitu má byť 1/9600, t. j. 0,10416666 ms.
Prenos prvého bajtu hlavičky 01h, v hornej časti viedieť priebeh signálu OE na 74LS373, teda čas, v ktorom program zisťuje stav linky
Sériový port nemusí byť vždy podľa štandardu, odchýlka 3% by sa mala tolerovať
Prenos dát, zelenou je posledný sken stop bitu po načítaní dát, červenou prvý sken ďalšieho bajtu,
vtedy však už beží start-bit, pri prenose teda dôjde k chybe.
Z analýzy je zrejmé, v ktorých časových okamihoch počítač testuje prítomnosť jednotlivých bitov a stop-bitu. Pri prenose dát je spracovanie prijatého bajtu pridlhé (popis vyššie), takže dva stop bity nestačia na tento úkon. Skenovanie portu začne až v dobe vysielania start-bitu, ale program čaká, že prebieha ešte stále stop-bit. Z tohto dôvodu po prijatí hlavičky dôjde k chybe čítania. Jediným spôsobom predĺženia stop bitu je časová medzera po každom bajte. Toto ale neumožňujú štandardné programy - terminály. Jeden z tých, čo to dokáže, je Realterm. Treba nastaviť Delays na hodnotu 3 alebo 4.
Nastavenie programu Realterm
Aj toto bolo potrebné, aby mohol vzniknúť tento článok
Ako písať programy, ktoré sa dajú jednoducho spustiť cez sériový port
Aby bol program priamo načítaný a spustený, musí dodržiavať umiestnenie hlavičiek. Tu je príklad, ako zakomponovať hlavičky do programu.
Ako previsť existujúce programy do podoby vhodnej na prenos cez sériový port
Postup je jednoduchý. Je vhodné použiť utilitu CopyFile, ktorú možno nájsť v archíve. Po spustení sa cez príkaz LOAD načíta program z magnetofónovej pásky. Potom sa príkazom NAME vloží na začiatok názvu znak #, zvyšok názvu môže zostať nezmenený. Príkazom SAVE sa začne prenos cez sériový port a je len na nadradenom počítači, ako tento súbor spracuje.
COPY-FILE je vhodnou utilitou na prenos programov cez sériový port.
Žiaľ len jednosmerne.
Väčšinu popísaných akcií je možno vykonať cez špeciálny program OndraLink vyvinutý pre PC na komunkáciu s počítačom Ondra.
Program pre obojstraný prenos dát medzi PC a počítačom Ondra
Použitá literatúra
1. Základné programové vybavení pro mikropočítač Ondra, uživatelská příručka
2. Základné programové vybavení ROM-SSM pro mikropočítač Ondra ROM 87, uživatelská příručka (Vít Libovický, Petr Novák, Jan Mercl)- komentovaný výpis ROM v. 27
3. Schéma počítača Ondra