I²C hardware en software
ook nu weer door Jan Blok

Vorige maal heb ik een verhaal gemaakt over werken met hardware in de regio Den Haag. En wie schetst mijn verbazing dat reeds in dezelfde * een verhaal staat van iemand die uiterst voortvarend begonnen is. En er een verhaal over geschreven heeft!

Die heeft het begrepen zeg ik dan. Er hoeft immers niet op mij gewacht te worden; iedereen is vrij iets op poten te zetten en wat een ander doet, hoef ik niet te doen. Die aktie heb ik niet eens gezien want om eerlijk te zijn vind ik dat juni de eerste computervakantie maand is.

Dan een foutje herstellen. Mijn email adres is J.M.Blok@kader.hobby.nl Nu echt waar. Het telefoonnummer is wel goed, alleen ging ik enkele uren nadat ik de * gekregen had met vakantie. Dus als iemand gebeld heeft en er maar geen antwoord kwam, probeer het nog eens: 015 3695042.

Dan nu de bezigheid van de komende tijd.
Mijn voorstel is met de IIC bus aan de gang te gaan. Het is een onderwerp waar iedereen die een beetje gevoel voor techniek heeft, veel plezier mee kan beleven. En iemand die tamelijk veel gevoel voor techniek heeft, nog veel meer. Want, vergis je niet: het is echt geen simpel speeltje.

Wat is de gedachte achter de IIC bus?
Sommige funkties in een computer worden maar zelden gebruikt. Een voorbeeld: de klok. Bij mij staat die rechts onderin en eens per sekonde verandert daar iets. Eens per sekonde is voor de processor zeg maar nooit als je bedenkt wat wat dat ding allemaal kan doen als hij -zij?- volledig belast is. Dat gaat dus onder interrupt en wel als volgt: de tijdchip komt tot de konklusie dat er alweer een sekonde verstreken is. Er wordt een interrupt afgegeven en de processor zoekt uit waar die vandaan komt. Dat blijkt de tijdchip te zijn en nu worden de registers van die tijdchip uitgelezen.

Nu gaat het hierom. Het zijn maar een stuk of wat geheugenplaatsen. Het is dus niet al te bezwaarlijk als die niet met de grootst mogelijke snelheid worden uitgelezen. Het is heel wat anders wanneer er een interrupt binnenkomt van een pudulekaart die 10000 bytes kwijt moet. En als een disk zich meldt die een paar megabyte kwijt moet. Dat gaat dan langs de processor onder Direct Memory Access. Maar dat is een heel ander verhaal.

De ontwerper van de computer kan er voor kiezen om dingen die zelden gebeuren of die weinig om het lijf hebben slechts met matige snelheid binnen te halen. Dat geeft konstruktieve voordelen dus kan de computer goedkoper worden. De IIC bus is een mogelijkheid in dit geval want die is ontworpen om langzame en zelden voorkomende zaken te behandelen. Bedenk echter dat alles betrekkelijk is. Langzaam en zelden dus ook. Wat bedoeld wordt is dat het om een gering percentage van de totale tijd gaat.

De bus is oorspronkelijk ontworpen door Philps omdat hun Joy and Entertainment spullen steeds gecompliceerder werden, zowel als groter. Als ze dus die ekstra chips goedkoop en goed onder kontrole konden houden, zouden ze een stuk voor zijn op de kollega's. Dat is de dus de Inter Integrated Chip bus geworden. Met als doel allerhande chips op een goedkope manier in een tv, monitor, videorecorder, cddraaier en weet ik veel wat ze nog meer maken - aan elkaar te hangen. De industrie heeft de bus ook ontdekt en maakt diverse processoren die ook een IIC interface hebben.

Echter niet de StrongArm.
Wat zeg je nu? Heeft onze oogappel niet eens een IIC interface? Nee, in tegenstelling tot heel ordinaire controlprocessors heeft die geen IIC aan boord. Hier is de interface gerealiseerd in een dikke randchip. En dat is nu gelijk het zwakke punt. De busspecificatie voorziet in de mogelijkheid meerdere busmasters gelijktijdig aan te sluiten. Dit betekent dat op twee of meer plaatsen gelijktijdig om het bezit van de bus gevraagd kan worden. Dat levert een busbotsing op. En toch mag er geen ongeluk gebeuren in de vorm van data verlies.

Op ons systeem is het niet toegestaan meer-dere busmasters aan te sluiten. Jammer maar helaas zegt de huidige jeugd dan, als ik het goed heb. Voorlopig is dat geen al te grote belemmering. Het volgende is ook niet al te ernstig. Zoals gezegd komt de bus uit een dikke randchip. Ongebufferd. Volgens mij moet je dat beslist zelf wel doen. Als je iets doms doet en die chip gaat eraan, heb je een moeilijkheid.

Programmeren.
En dan nu het hoge woord. Het is allemaal wel leuk hoor, dat gepruts met chips maar het gaat niet zomaar. Er zal een programma geschreven moeten worden om het een en ander aan de gang te krijgen. En daar moet men aardigheid in hebben. Er zijn mensen die beweren dat programmeren moeilijk is. Uiteraard kan ik er niet over oordelen of iets moeilijk is voor iemand. Waar ik wel over kan oordelen is dat men het zich niet onnodig moeilijk moet maken. En dat doen alle niet professionele programmeerders.

Ik persoonlijk heb het nooit anders gezien. Ik ben ook geen professional maar heb wel wat geleerd in de loop der jaren. Daarom nu ongevraagd is ongeweigerd een aantal raadgevingen. Het komt nogal eens voor dat men een vaag idee heeft wat er moet gebeuren en begint. Beide fout.

Men moet nauwkeurig weten wat men wil en dan nadenken. Als men zomaar begint, komt men nergens. Dat levert diverse keren opnieuw beginnen op en zelfs dan is het resultaat aanvechtbaar. Als men begint moet men Zap (of zo) starten. En dan is het tikken heen. Net zolang tot er een goed verhaal op het scherm staat dat beschrijft WAT men wil. Dan komt er een verhaal HOE men het wil. En dat laatste is het probleem net zo lang in stukken breken tot het overzichtelijke stukken zijn. Dan de stukken zodanig in de vorm gieten dat voldaan wordt aan de regels van het gestructureerd programmeren. Niet schrikken hoor.

Wat hier staat is alleen maar dat je, wil je voorkomen dat je in diepe wanhoop de boel aan de kant gooit, het helpt als je netjes werkt. En dat is geldig voor elke taal. In feite maakt het niet uit of je in assembly of Pascal of welke taal ook werkt. Het is hier niet de plaats om de regels van het gestructureerd programmeren uit te leggen. Daar zijn stapels boeken over. De keuze van een taal kunnen we het een andere keer nog wel eens over hebben.

Tot slot.
Dit schrijfsel is om mensen warm te maken voor iets aan techniek met hun computer te doen. Als men daar niets in ziet, even goeie vrienden hoor. In elk geval is het zo dat voorlopig op de derde donderdag van de maand het voor geïnteresseerden de moeite is naar Den Haag te komen want dan is er vast wel wat te beleven. waarbij aangetekend moet worden dat ik slechts katalysator ben. Neem je eigen spullen mee......... Volgende keer gaan we verder, met PLAATJES!!!