happy new year to the australian guys! 
If it’s not communicating using IIC, I think this would be a shame…
well, it is… Communication protocoll is IIC. It works very similar to the bankstick, but the protocoll is a bit different because it’s not a eeprom, but a FRAM, single bytes can be written / read at same speed (full clock speed max. 1MHz), no need to wait for the write cycle to finish 
The sharing *could* be a problem, because my aim is not to start/perform/stop a whole read/write sequence within one single function.
the advantage of this: I can start a read (setting address etc.), after a ACK the device will increment the internal address latch to the next byte, so subsequent reads of single bytes are possible (or writes). For me this is very important, because this enables me to “stream” data very fast, say read a byte or more, check what it is, decide if I need to read more, if not, I perform a stop condition.
I could write some low-level-funtions that do this, like:
unsigned char MIOS_FRAM_ReadStart(unsigned char devicenr, unsigned int addr);
unsigned char MIOS_FRAM_WriteStart(unsigned char devicenr, unsigned int addr);
unsigned char MIOS_FRAM_ReadByte(void);
unsigned char MIOS_FRAM_WriteByte(unsigned char)
unsigned char MIOS_FRAM_ReadBuf(unsigned char * buf, unsigned int byte_count)
unsigned char MIOS_FRAM_WriteBuf(unsigned char * buf, unsigned int byte_count);
unsigned char MIOS_FRAM_ReadWriteStop(void);
These ones would be “unsave” to share with other IIC devices, if a read/write sequence will stretch over several main-loops. If the whole operation is done in one tick-call, the IIC bus should be free on the next MIOS-mainloop.
Or are IIC operations also done in ISR/Timer callbacks?
There could be also high-level-functions which do a start/rw/stop sequence in one call, like with the BankStick-Functions.
More reasons why I would like to use PORTA/J4 is, that the device will be a direct alternative to the banksticks, and I plan to use J10/PORTC to multiplex up to 16 of the FRAM devices (4 can be addressed by pins, 4 arrays would be multiplexed with a 4channel analog dual multiplexer).
However, the device is not very DIY friendly (only available in SOIC package so far). I just use it because I need fast stream ability from/to a big data space.
Maybe I could use the mios_iic module, but this would mean some more overhead/more calls etcetc. If I implement all in one single module, I can make it very tight. But I’ll study the mios_iic module anyway, maybe there are good reasons to use already existing iic functions.
Can I drive the IIC with 1MHZ with the mios_iic ?
Latch. Check out this post: How pins work It’s got a lot of information that will be boring to you, but also has a few specifics that might help…
Thanks for link, I think stuff like this is worth to flow into the wiki? I found some other page on the WWW that explain the issue quite clear:
http://www.fernando-heitor.de/component/option,com_openwiki/Itemid,123/id,mikrocontroller:einfuehrung/
If I understand right, the general rule is: to set pin states, use LATxx, to read them use PORTxx. To set in/out configuration, use TRISxx while TRISxx=1 means “input” and TRIXxx=0 means “output” (for the PIC)