IIC bus en aanverwanten
door Jan Blok

Even de balans opmaken zoals die tot nu toe is.

In mijn eerste verhaal heb ik geschreven dat er een karretje komt voor mijn kleinzoon en mijzelf. Dan heb je het probleem dat er mechanica moet komen en dat wil nog wel eens een probleem zijn. Ik heb goed on mij heen gekeken en met afgedankte rommel ben ik al een heel eind. Nou heb je afgedankte rommel en afgedankte rommel die uit nauwkeurig bewerkt roestvrij staal bestaat. Dat laatste heb ik en ik zie alle mogelijkheden iets verrassends te bouwen.

Op dit moment ben ik bezig met de motoren. Daar komen er drie van in te zitten. Een voor de aandrijving en twee voor de besturing. Het wordt n.l. een vierwiel aangedreven en op vier wielen bestuurd karretje. Juist gisteren een heel gesprek gehad met een vriendje van me die veel ervaring heeft met kleine motoren aansturen. Wat is Internet dan toch gemakkelijk want binnen enkele minuten hadden we een aantal datasheets te pakken waarop de bruikbare chips staan.

Er zijn geen reakties binnen gekomen van andere groepen die ook ergens mee bezig zijn. Doen jullie wel of niet wat??? Alleen heb ik de man die een zender wil automatiseren weer ontmoet. Hij blijkt niet met de IIC bus te gaan werken. Nou dat is wat mij betreft geen voorwaarde hoor. Verder heeft hij goed inzicht hoe de zaak aan te pakken dus ik volg het met belangstelling.

En dan nog wat. Al een paar maal is mij gevraagd een Ethernet kaart te gaan maken. Daar kan ik kort over zijn. Nee. De reden is deze: Het blijkt dat er nogal wat ''oudere'' machines operationeel zijn. Er zouden dus twee kaarten moeten komen n.l. voor die oudere machines en de Risc PC. Los hiervan is het zo dat een zelfmaak kaart minstens Fl 200.- moet kosten. Zo heel erg goedkoop dus ook weer niet.

En dan nog, wie gaat dat doen met alle risico's van dien? Wie financiert de aanloopkosten? Wie garandeert dat de kaarten werken? Meestal niet in een keer n.l. Dus weer printaanloopkosten. En wie heeft daar begrip voor? Neemt niet weg dat, als iemand zo vriendelijk is mij eens goed naar een Ethernetkaart voor de RiscPC te laten kijken, ik dat aanbod graag aanneem. Dan kan ik proberen hem in duplo na te maken voor mezelf. En dan geen print ervan maken, nee, met draadjes. Dat gaat prima en fouten worden gemakkelijk hersteld.

Dan nu een verhaal over de IIC bus. De voorlaatste keer heb ik plaatjes beloofd. En wat je beloofd hebt, moet je ook doen.

Eerst een verhaal vooraf.
De IIC bus is een synchrone bus. Dit doet veronderstellen dat er ook zoiets als een asynchrone bus bestaat. En dat is ook zo. Als je data van het ene punt naar het andere punt wilt sturen moet je zorgen dat dat goed gaat. Dat kan op heel verschillende manieren. Als je asynchroon -niet synchroon dus- werkt, stuur je de bits met een zekere tussentijd de lijn op. Als nu maar aan de andere kant met dezelfde tussentijd gelezen wordt, gaat het wel goed. Nou ja, er moet aan nog wat voorwaarden voldaan worden om het echt goed te laten gaan maar dat doet hier niet zoveel terzake.

De andere mogelijkheid is dus synchroon. Dan heb je twee lijnen nodig. Een voor de clock en een voor de data. De gang van zaken is dat de clock zegt: daar komt wat aan. De ontvanger kijkt naar de datalijn en neemt de data over. Dan is het weer de beurt aan de clock enzovoort. Ook hier moet aan nog een aantal voorwaarden voldaan worden om alles gegarandeerd goed te laten gaan maar dat is een ander verhaal.

Twee lijntjes maar?
In principe is het dus voldoende om twee lijntjes te hebben om van het ene punt naar het andere data over te kunnen sturen op de synchrone manier. Als je echter terug wilt praten heb je ook twee lijntjes nodig. Vier dus al. En als er nog meer chips op de bus zitten, loopt dat aantal aardig op. En in een vorig verhaal hebben we juist afgesproken dat er niet veel lijntjes gebruikt mogen worden want dat is veel te duur. En ook overbodig want het antwoord is dat door hetzelfde lijntje heen en weer gepraat kan worden. Als je maar niet tegelijk praat. En hoe dat geregeld is, is deel van het protokol.

Nog even iets. Waarom niet asynchroon? Het antwoord is dat het protokol ook softwarematig afgehandeld moet kunnen worden. Immers, lang niet elke processor heeft een IIC controller in huis. Zo ook niet de Risc achtige machines. Het staat in de dokumentatie en je kunt het aan de buitenkant zien want ik heb het vorige keer over tijdgaten gehad. Heb ik teveel Science Fiction gelezen?

Nee, helemaal niets. Ben ik een groot aanhanger van Hawkins? Nee, hij zal best gelijk hebben maar ik bedoel iets anders. Als je de datastroom bekijkt die de Clock oplevert als je konstant data de bus opstuurt, zie je dat er niet konstant data op de clock staat. Dat komt omdat de processor ook nog wel eens iets anders moet doen. En hoewel er zoiets als multitasking bestaat, is het nog steeds zo dat er slechts een ding tegelijk kan gebeuren. Wie weet komen we nog wel eens zover daar wat meer over te zeggen. De tijd dat er data zou moeten zijn maar er niet is, noem ik een tijdgat. Dat maakt weinig uit want omdat clock en data afhankelijk van elkaar zijn, schuift alles een beetje in de tijd op en gebeuren er geen data ongelukken.

En dan nu de plaatjes.
Het is niet zo moeilijk dit hele boeiende tijdschrift vol te maken met zelfgemaakte plaatjes. Of dan voor iedereen dit tijdschrift dan nog steeds boeiend is, is de vraag. Daarom slechts een

met wat ingebouwde opmerkingen en volgende keer gaan we verder.

Kom naar de hardware avond van de afd. Den Haag voor de demonstraties. Op de algemene avond ben ik meestal ook.