Taal:
UNIFACE, Nieuw!!
Ik ben begonnen met het Uniface systeem in de jaren 80, op mijn MSX computer. Later op mijn eerste PC (486 DX4 100 Mhz).

Maar toe verdween het ISA slot uit de computers, en werd het allemaal PCI sloten. En omdat Uniface toen eigenlijk al dood was, is er nooit een PCI kaart gekomen.

Ik heb toen een USB aanstuur print gemaakt.
(Click op het plaatje)
Er zit niet heel veel op de printplaat: een PIC-microcontroller (de 18F4550) en wat statusledjes (ik ben gek op ledjes :-) ).

De software in de microcontroller is geschreven met de OshonSoft Basic-compiler. die ingebouwde USB support had. Het programma stelde ook niet zo heel veel voor en werkt bijna hetzelfde als de oude manier met de I/O-poorten. Via Visual Basic kan ik 8 bytes naar de PIC-microcontroller schrijven en eruit lezen. In de PIC worden die bytes aan de juiste draadjes van de Uniface-bus gekoppeld. De eerste byte die ik verzond, was het adres, en daarna kwam de data.

Ik zag trouwens dat ik de datum in de printplaat had geëtst: de print is van 2010.
---
1 Servo
Een van de eerste printplaatjes die ik zelf heb gemaakt. Ik wilde graag modelbouwservo’s kunnen besturen, en met de onderstaande printplaat kon ik er één besturen. Het aansturen van de servo ging nog helemaal analoog, met twee 555-timers.

Ook hier staat de datum op de printplaat: hij is van 2001.
(Click op het plaatje)
---
8 Servo's
Met deze print kon ik 8 modelbouw servo's besturen. Deze printplaat is wel helemaal digitaal. De adressering gedeelte nog wel gewoon Digitale logica, de servo besturing helemaal in de pic micro controller. Kon geloof ik de servo's op diverse manier aan sturen. 8Bits (255 stappen) en 10Bits (1024 stappen)

Ook hier de datum op de printplaat. Printplaat is van 2011.
(Click op het plaatje)
(Click op het plaatje)
---
Controle printplaat
Niet echt super spannend, maar wel erg makkelijk. printje met ledjes, om te zien wat er nu eigenlijk op de uniface bus staat.
(Click op het plaatje)
(Click op het plaatje)
---
Bevestigings Steuntjes
Na zo’n 30 à 40 jaar :-) heb ik eindelijk een systeem waarmee ik meerdere printplaatjes netjes op de bandkabel kan bevestigen. Het idee van die bandkabel is natuurlijk goed, maar in de praktijk wordt het met meerdere printen al gauw lastig. En omdat ik nu een 3D-printer heb, dacht ik: ik ga eens kijken of ik daar iets voor kan maken.
(Click op het plaatje)
(Click op het plaatje)
(Click op het plaatje)
(Click op het plaatje)
(Click op het plaatje)
Een nieuwe aansturing: de Arduino Due. En meteen ook een uitbreiding van de Uniface-bus.

Standaard had de Uniface-bus 8 bits adres, 8 bits data-in en 8 bits data-out.

De adresbus heb ik hetzelfde gelaten (ik vond 255 printen adresseren genoeg). Alleen de in- en de out-bus heb ik uitgebreid naar 16 bits, wel zo dat de 8-bits bus nog compatibel is.
(Click op het plaatje)
Weer een nieuwe aansturing. Maar nu met een Nucleo F767i.

Dit omdat hier ook Ethernet op zit, en dat hij veel sneller is.
Hardware: NUCLEO-F767ZI vs Arduino Due
NUCLEO-F767ZIArduino Due
MCUSTM32F767ZIAtmel/Microchip SAM3X8E
CoreCortex-M7 (superscalar, 6-traps pipeline)Cortex-M3 (3-traps pipeline)
Klok216 MHz84 MHz
FPUJa, single & double precisionNee (float in software)
DSP-instructiesJa (SIMD / MAC)Beperkt
Cache16 KB I + 16 KB D + ARTGeen
Flash2 MB512 KB
RAM512 KB (+16 KB ITCM)96 KB
ADC3× 12-bit, 2,4 MSPS1× 12-bit, ~1 MSPS
DAC2× 12-bit2× 12-bit
CAN3×2×
EthernetMAC + PHY + RJ45 op boardAlleen Ethernet-controller in chip (PHY-shield nodig)
USBOTG FS (HS met externe PHY)Native USB + programmeerpoort
DebuggerST-LINK on-board (SWD)Geen (alleen serieel uploaden)
I/O-spanning3,3 V (meeste pinnen 5V-tolerant)3,3 V (niet 5V-tolerant)
Snelheid
TestF767ZIDueFactor
CoreMark (integer)~1080~200–250~4–5×
CoreMark per MHz~5,0~2,5–3~2×
Float-vermenigvuldiging~1 cycle (FPU)~50–100 cycles (software)~50–100×+
Double precisionHardwareSoftware, erg traagnog groter
sin(), sqrt() e.d.Snel (FPU, hardware-sqrt)Honderden–duizenden cyclesorde van grootte
GPIO-toggle (registers)Tientallen MHz~10–20 MHz~2–4×

Snelheidsgetallen zijn indicatief en hangen af van compiler, optimalisatie en cache-instellingen.

---
Bevestigings Steuntjes Versie 2
De eerste steuntjes waren niet helemaal naar mijn zin. Bij de eerste versie zat de bandkabel eigenlijk alleen vast met die paarse blokken, zoals hieronder afgebeeld.

Maar wat er dus gebeurde: als ik een kaart loshaalde, trok ik soms de hele connector van de bandkabel :-(

Dus bij deze versie kan ik de connector helemaal compleet op de kabel persen (dus ook met de trekontlasting), en door die 2 rechthoekige gaten kan ik dan een keggetje/wigje steken, waardoor de connector ook van onderen goed vastzit.
(Click op het plaatje)
(Click op het plaatje)
---
Test Print
Omdat het in elkaar zetten van de Uniface-bus niet echt makkelijk is, wilde ik iets waarmee ik hem goed kan testen. Met behulp van een 3D-geprinte mal bevestig ik de connectoren op de kabel. Daarna zet ik ze, vanaf de rechterkant, een voor een de connector vast in de bevestigingsblokjes: ik stop de connector erin en zet hem vast met de keggetjes. Je bouwt de hele bus dus op van rechts naar links. En als er iets niet goed is, moet je hem ook weer van links naar rechts afbreken.

Het is me namelijk eerder overkomen dat alles klaar was en er bij één connector één datalijn niet doorkwam... :-)

Daarom zijn de twee groene printen rechts op de onderstaande foto bedoeld om de bus te testen. Via de bus en die print controleert de Nucleo F767ZI alle adres- en datalijnen.

Ik heb de print twee keer: één met een 50-polige connector en één met een 34-polige connector. Verder zijn de printen gelijk; alleen die voor de 8-bits bus heeft de 34-polige connector en wat minder componenten.
(Click op het plaatje)
(Click op het plaatje)
---