Hi Folks,

I am using a Z80180 (64-pin DIL) chip with garden variety Z80 PIO, and I don't 
seem to be able to coax the PIO into performing any output whatsoever.

To put this into context, I've successfully programmed a Z80 CTC chip on the 
same board and it provides me with a very nice interrupt every 10ms, as I 
require it to.

Using a similar code snippet to the CTC programming, here's the PIO 
initialisation:-

PIO0_A_CONTROL=0xCF; /* Bit control mode */
PIO0_A_CONTROL=0xFF; /* 1=Input, 0=Output */
PIO0_A_CONTROL=0x00 | 0x07; /* Int control word */
PIO0_A_CONTROL=(byte_t)((&Interrupt_vectors[0]-&Interrupt_vectors[0])*2);

PIO0_B_CONTROL=0xCF; /* Bit control mode */
PIO0_B_CONTROL=0xF0; /* 1=Input, 0=Output */
PIO0_B_CONTROL=0x00 | 0x07; /* Int control word */
PIO0_B_CONTROL=(byte_t)((&Interrupt_vectors[1]-&Interrupt_vectors[0])*2);

Although the above code sets the interrupt vectors, interrupts are not 
actually used as yet.

Now, I've verified that the above code sends the correct data to the PIO (as 
far as I can see) with a logic analyser - the chip enable, A/B, and C/D pins 
and IORQ are all in the correct state (the A/B and C/D pins are connected to 
the A0 and A1 lines in the usual way). I have another piece of code that 
changes bit 0 on port B roughly once a second, but interestingly port B 
always reads back as 0x00.

With the Z80180 one has to do a couple of tweaks to the CPU timing with an 
OMCR register. M1 has to be disabled and an IOC flag has to be cleared to 
switch-off compatibility with the similar Hitachi Z80-like device. I also 
realise that M1 needs to be asserted at some point to arm the Z80 interrupt; 
but as I'm not using interrupts it doesn't really matter. M1 does appear 
during the CTC interrupt service, so the PIO will see this every 10ms or so 
anyway; but I've tried adding an M1TE (M1 temporary enable) after each port 
setup above without success.

Can anyone suggest where I might be going wrong? The generated assembly code 
shows in0 and out0 instructions, but they still address the correct port 
address so I don't really see a problem with that, and the same principle is 
used for the Zilog CTC and that works fine.

I'm completely baffled. Any suggestions would be welcome.

-- 
Richard.
PGP Key-id: 0x5AB3D350

You are here:   
                ***
                ***
             *********
              *******
               *****
                ***
                 *

                 But you're not all there.

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to