Atom Nieuws jaargang 2000 nummer 1
../../../images/back.gif ../../../images/exit.gif ../../../images/forward.gif
pagina 5
PICATOM
ofwel: de Atom-aan-PC kaart
door Roland Leurs

In de laatste nummers van Atom Nieuws uit 1999 heb ik wel eens wat gebrabbeld over een Atom-in-PC kaart, aangesloten op een PC via de RS232 poort. Wel, dit project begint nu enige vormen aan te nemen. Tegen de tijd dat u dit leest zal het eerste prototype al gebouwd zijn. Maar eerst wat toelichting.


Waarom?

Waarom zou je nu de Atom-in-PC kaart via een RS232 poort willen aansluiten? Daartoe zijn verschillende redenen:

  1. Je PC heeft geen ISA bus; deze komt volgens de nieuwste PC specificaties te vervallen omdat ze daar bij Microsoft problemen mee hebben (beperkte plug & play). Verder is de ISA bus ook bij een notebook tamelijk ongebruikelijk.

  2. Je hebt geen PC; dit komt vooral voor bij vele leden van de Big Ben Club die het Acorn merk trouw gebleven zijn. Archimedes en Risc PC hebben bij mijn weten geen ISA bus en moeten de Atom-in-PC dus op een andere manier aansluiten. Ooit heb ik met deskundigen daarover gesproken, helaas is daar nooit iets zinnigs uit gekomen.

  3. Van je werkgever mag je geen uitbreidingskaart(en) in de PC privé stoppen. Je zal maar zo'n contract hebben :-(

  4. Je ISA slots zijn toch al beperkt in aantal, en nu is er geen meer vrij.


Er zijn dus meerdere redenen om, ondanks de relatief snelle ISA bus, de Atom-in-PC via een seriële poort aan te sluiten aan een PC. Voor mij is de eerste reden de belangrijkste. Ik wil de komende landdagen niet meer dat gedoe met een desktop en monitor (zo'n halve verhuizing). Gewoon klaptop in de tas en Atom-aan-PC eraan gekoppeld. Klaar. Verder is dit een leuke toepassing om eens wat ervaring op te doen met een PIC 16F84.


De werking

Om de Atom-in-PC via RS232 aan te sluiten op je PC is een seriële interface noodzakelijk. Deze kan via de I/O connector aangesloten worden, maar dan is een aanpassing nodig van de Operating System ROM. Dit is een van de uitgangspunten: er mogen in de PC en in de Atom-kaart geen aanpassingen gemaakt worden.


De enige manier die dan overblijft is communicatie via de ISA connector van de Atom-kaart. Maar dan met een schakeling die voor de Atom lijkt op een ISA bus. Op de volgende bladzijde ziet u het ontwerp van de schakeling.

Het kloppend hart wordt gevormd door een microcontroller, PIC 16F84. Deze microcontroller kent zo'n 35 instructies, die uitgevoerd worden in 400ns bij een 10 Mhz klokfrequentie. De belangrijkste overige componenten zijn de latch, 74HCT574, en de 8250 ACE. De PIC gaat continu testen of de PC danwel de Atom een byte heeft verzonden en of de ontvangende partij klaar is om dit byte te ontvangen. Zo ja, dan wordt het byte overgestuurd.


In de zomer van 1999 heb ik daar ook al eens over geschreven in de vorm van Remote Atom. Het daarbij gebruikte protocol was nogal traag van opzet, maar bleek tot op heden het enige werkende te zijn. Om een register van de Atomkaart te lezen stuurt het terminalprogramma één byte over, en krijgt er dan ter bevestiging en handshake ook weer een terug. Om één byte van de Atom te lezen, worden twee registers gelezen. Voor het schrijven van een register van de Atomkaart worden vier bytes overgestuurd. Om een byte naar de Atom te sturen worden een register gelezen en een geschreven. In totaal vliegen er dus zes bytes over de lijn. Uitbundig, maar het werkt.... Dit is gewoon een gevolg van de software handshake (stuur byte, wacht op bevestiging).


Als deze basisversie eenmaal werkt kan ik beginnen aan een efficienter protocol, waarbij indien mogelijk gebruik gemaakt wordt van een hardwarehandshake. Daarbij moet een snelheid van ca. 10 kB per seconde gehaald worden. De eerste ontwerpen van deze snelle communicatie draait uit op mis-synchronisatie en derhalve een fikse hang-up van de Atom.


De globale werking is nu dat het terminalprogramma een commando stuurt om een register te lezen of te schrijven. In geval van lezen stuurt de PIC de inhoud van het betreffende register terug; daarmee hebben we meteen een handshake. Om te schrijven wordt een dummy byte door de PIC terug gestuurd (handshake) en stuurt het terminalprogramma een byte met daarin de data voor het betreffende register. Ook daarna antwoordt de PIC door een dummy byte ter handshake terug te sturen.


In de uiteindelijke versie zal het moeten worden dat de PIC eerst vanaf de B-poort een adres en controlelijnen in de latch zet. Vervolgens wordt een klokpuls gegenereerd waarna de latch deze signalen vasthoudt. De B-poort is daarna vrij om de databus uit te lezen of te beschrijven. Op deze manier kan de PIC dus of de 8250 benaderen, of de 8255 (op de Atom-kaart), ofwel beide tegelijk(!). Dit laatste biedt de optie om het datatransport van de 8250 naar de 8255 buiten de PIC te laten verlopen. M.a.w. er wordt tijd bespaard omdat de PIC niet eerst een byte hoeft te lezen en dit byte vervolgens weer moeten wegschrijven. De PIC hoeft alleen maar voor de controlelijnen te zorgen. Een soort DMA dus, maar dan in't klein. U hoort er nog van, vast wel!


Met vriendelijke groeten uit een zonnig Born,

Roland Leurs


NB: Voor de duidelijkheid: de ISA bus is geen echte ISA bus. Deze schakeling is ook geen vervanging daarvoor, en deze is daar ook helemaal niet voor ontworpen. Zo ont-breken o.a. alle IRQ en DMA lijnen, een groot aantal adreslijnen zijn vastgelegd zodat de interface alleen de adressen tussen 300..303h kan adresseren.

Voor meer informatie omtrent de microcontroller: zie http://www.microchip.com
../../../images/back.gif ../../../images/exit.gif ../../../images/forward.gif