Hierbij wat uitleg hoe de serieele interface opgebouw is. Iedere print bevat 2 rijen pinheaders elk 7 pinnen. De linkerzijde van de print is de ingangs connector die verbonden wordt met de controller (PIC, AVR, CPLD, FPGA enz). Deze connector bevat de voeding (VCC, GND) en 5 signalen. Deze 5 signalen zijn:
code:
- IN_595 Data van de controller naar de interface vb 74HC595
- LD_595 load signaal om de data van alle schuifregisters over te laden.
- CLK Clocksignaal vooralle schuifregisters
- LD_165 Load signaal voor de schijfregisters als read input (74HC165)
- OUT_165 Data naar de controller ( lezen van externe signalen)
Hieronder staat het princiep schema:
De 2de pinheader op de rechterkant is de uitgangs connector die gebruikt wordt als er meerdere modules nodig zijn. Alle modules worden via een 7 polige kabel doorgelust naar elkaar. Het is niet nodig dat er op iedere module een output type device en een inputtype device aanwezig is. ontbreekt er een dan moet die gewoon doorgelust worden in de layout van de ene naar de andere kant. Dit laat toe dat een volgende module weer over beide type signalen beschikt.
Omdat de voeding ook meegestuurd wordt is het wenselijk een elco op de beide connectors te plaatsen. Is er een module die veel stroom vregt dan moet je die best voorzien van een extra externe voeding op een afzonderlijke connector.
Voor de software worden zowel de data bitjes gelezen als geschreven met dezelfde clock. Op een AVR controller kun je trouwens de UART als SPI master configureren en dan maak je gebruik van de beide dubbel gebufferde 8 bit data registers voor het zenden en ontvangen. Dit kan op heel hoge snelheid. Heb je heel veel modules en grotere lengtes dan kun je de clockrate wat lager nemen. Gebruik je een CPLD of FPGA als controller dan heb je nog meer vrijheid.
Voor 7 segment display's moet je niet eens meer gaan multiplexen. Het heeft weinig nut, voor 0.25 euro heb je een 8 bit 74HC595 per digit. Eenvoudiger kan het niet. Voor rotary encoders lees je best ongeveer 50x per seconde de stand van de encoder die je in software verder bijhoud en verwerkt. Zo kun je verschillende encoders gelijktijdig binnennemen.
Alle gewone interfaces gaan hiervoor. Zoals 7 segment display's, LCD display's, rotary encoders, schakelaar, druktoetsen, ledjes, digitale I/O's, vermogen I/O via ULN2803, fet en transistor uitgangen, keyboards enz.
Als je iedere basis module voorziet met montagegaten kun je heel snel een frontplaat bediening opbouwen met deze bouwstenen. Heb je iets meer uitgangen nodig, hang er een module bij. Aan de software kant hoef je enkel het juiste aantal bitjes te bepalen die moeten uitgestuurd of ingelezen worden. Het aantal van uitsturen en binnennemen moet niet gelijk zijn, overtollige bitjes laat je in de verwerking vallen. Je beschikt immers over een load en store signaal voor het in en uit lachten van alle signalen.