ECB 4PIO r04
Update 16.Apr.2021: I checked the errata again and did some more fix + tests. I still have some weird outputs on a few ports. (more details below)
To enable the 4PIO board in RomWBW: I used the following settings in the .\RomWBW-v3.0.1\Source\HBIOS\Config\SBC_std.asm to compile the ROM for the SBC CPU board:
PIO_4P .SET TRUE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
Se the boards excellent documentation home page for details, as I could have made some mistakes here.
Also: There is a newer version of this board in development by user b1ackmai1er!
Note errata here : https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:4pio:r04
Text | Images |
---|---|
4PIO R04 board completed. Jumper set for 90h I didn't have a IDC 18pins connector in my parts bin, so had to make custom thing in the relay board end. | ![]() |
Coming up: controlling 220v lamp with Z80 SBC/4PIO! | |
R04 version: A small adjustment of 1.2mm is needed to get the ECB connector in line with hole Tip: When using a IDC connector, I had to cut the corner of the plastic frame for the 26pin connector or it conflicts with the PIO chip it self (The chip is slightly longer than its socket). It's a very tight space with a full 40pin chip(52mm) and a 26pin IDC(41mm) on the ECB board (b=100mm). | ![]() |
Thanks to very helpful info from b1ackma1ler, i checked the schematics and did some modification to the pcb and it started to respond! Pin 2 and 3 for IC7 is switched on the pcb, so that's probably why I struggled to get this board to respond. ![]() The IC7 is the 74ls139(Dual 1of4 decoder) 2bit in, 4 bit out. Instead of lifting the pin5(IC7A - O1), I chose to cut/isolate the pin by cutting the pcb trace on the underside of the board. Pin6(IC7A - O2) is connected to pin15(IC7B - E) by wire. Schematics: pin2 = A0, pin3 = A1, pin5 = O1 PCB: pin2 = A1, pin3 = A0, pin6 = 02 (mods) 74ls139 truth table: ![]() Also, I tried to fix according to the updated errata on the 4PIO page by board developer username b1ackma1er: I cut the 2 connections from IC7/74ls139 pin13 & pin14 to IC4/74ls541 pin15 & pin16 and switched them with wires. (See image): However: This mod did not help the weird output problems that my board show during testing. See my findings during test, all the way at the bottom of this screen I might have some bad chips? Or did something bad soldering? I will replace all the chips to check. Maybe investigate with a scope to see where the strange output pattern | ![]() ![]() |
Address setting: The jumperblock(JP4) is for setting the board address. To set the board to an address of 90h: Convert 90 hex→binary: “10010000”. The highest 4 bits(“1001”) is AB7-AB4. The “1” is the same as no jumper(See schematics R9-R12 - this is pullup resistors to 5v+). For an address setting of 90h, the jumper setting would be: (Se image) AB4 = No jumper = 1 (Lifted to 5V by pullup resistor) AB5 = Jumper installed = 0 (Grounded by jumper) AB6 = Jumper installed = 0 (Grounded by jumper) AB7 = No jumper = 1 (Lifted to 5V by pullup resistor) | ![]() |
Me playing with relays! The test program “piociots 1” makes the relays shift on/off in a pattern. Since there is no 12V power connected at this time, the relays doesn't really click fully on/off, but there is a sound there and the control LEDs are blinking. ![]() During testing, I noticed something strange about the A5-A7 ports that I can't seem to understand. Maybe a glitch somewhere? Bad connection? Speed issue? Will investigate more about this. | ![]() |
Testing the board! |
---|
I'm still having some trouble with some of the outputs?
Turn all LED OFF in MBASIC : OUT 144,255
255 FFh 11111111 = All LEDs OFF
Turn all LEDs ON in MBASIC: OUT 144,0
0 00h 00000000 = All LEDs are ON
“OUT 144,191” BFh 10111111 - One LED is on (This is expected and normal): 01000000 (1=LED ON, =LED OFF)
“OUT 144,223” DFh 11011111 ! None LED is lit? Something is wrong here?, We should expect this: 00100000 (1=LED ON, =LED OFF)
“OUT 144,239” EFh 11101111 ! 2 Leds are on!? 001100000 (1=ON, =OFF) , We should expect this: 00010000 (1=LED ON, =LED OFF)
“OUT 144,247” F7h 11110111 - One LED is on (This is expected and normal): 00001000 (1=LED ON, = LED OFF)
I wrote a simple MBASIC code to go through all output bits but i can't seem to get the formatting of this page to show it correctly.