Thank you for taking a look at this, Tom. The FT232H is in fact attached to the high byte of the bus. I label them D0 - D7 for convenience from a peripheral viewpoint. The NetBurner MOD54415 and MOD54417 modules only bring out the 2 high bytes to developers. Also, they don't bring out the ALE signal, but they do latch the address on their module. The logic traces show "D0 - D7" as all "0" during the first CS5 assertion; this would be the low byte of the address from the on-module latch. I didn't probe the high byte (AD8 - AD15) with the logic analyzer as there are enough probes hanging off the test rig as is.
The 2nd CS5 assertion is in fact my data. In this case (and the trace I posted earlier), just the letter "D" (ASCII 01000100) being sent. I've included the state list view for cursor B, at 1,452 ns. showing the "D" in Group 1:

If I change my code to output the letter "S" instead, I get the following trace, with an "S" (ASCII 01010011) at 1,372 ns. in the state list (cursor B):
I can do this all day long with anything that fits in a char. Here's my code - I'm using the NetBurner libraries:
//Side A not used in test rig yet
#define PC_SIDE_A_IO 0x02000000
#define PC_SIDE_B_IO 0x04000000
#define PC_SIDE_B_TX J2[36]
#define PC_SIDE_B_RX J2[15]
extern "C" {
void UserMain(void * pd);
}
const char * AppName="DynaCore";
void UserMain(void * pd) {
InitializeStack();
if (EthernetIP == 0) GetDHCPAddress();
OSChangePrio(MAIN_PRIO);
EnableAutoUpdate();
EnableTaskMonitor();
#ifndef _DEBUG
EnableSmartTraps();
#endif
#ifdef _DEBUG
InitializeNetworkGDB_and_Wait();
#endif
iprintf("DynaCore Application started\n");
//Test redundant CS5 fix by setting CSMR0[V] (in case NB libs don't do it)
// sim2.cs[0].csmr = 0x00000001; //2/20/15 test - didn't make a difference
J1[31].function(PINJ1_31_FB_CLK); //FB_CLK (didn't make a difference)
//USB Side B setup & test
//Configure PH4 and PE7 as GPIO for PC Side B RX and TX flags
J2[15].function(PINJ2_15_GPIO); //PH4 (Side B RX)
J2[36].function(PINJ2_36_GPIO); //PE7 (Side B TX)
sim2.cs[5].cscr = 0x1140; //no CS5 delay, 4 waits (38 ns. CS assertion)
sim2.cs[5].csar = PC_SIDE_B_IO;
sim2.cs[5].csmr = 0x00000001;
//*(unsigned short *)(PC_SIDE_B_IO) = (unsigned char)'D'; //Write char to PC
//*(unsigned short *)(PC_SIDE_B_IO) = (unsigned char)'S'; //Write char to PC
*(unsigned short *)(PC_SIDE_B_IO) = (unsigned char)'?'; //Write char to PC
while (1) {
OSTimeDly(20);
}
}
Thanks again, Tom!
Regards,
Ray