Has anyone ever tried communicating between a Cortex and a Beaglebone via I2C? I am looking at using a Cortex to control motors and sensors, but I need to run a Beaglebone for visual recognition. Can the Cortex communicate through serial? The system I have now uses Arduinos and a Beaglebone, but I would like to program my motors and sensors using RobotC. Do you think any of this would be possible?
It’s going to be difficult to achieve using I2C (well impossible) unless you use ConVEX (because you have no access to the I2C driver in the other programming options). It would be much easier to use asynchronous serial (the UART ports). Take a look at this;
Does ConVEX allow me to use i2c communication? What do I use to program ConVEX? Is it just a plugin for Eclipse?
ConVEX could allow you to use I2C communication.
The problem with ROBOTC etc. is that the I2C is programmed to communicate with the IMEs (motor encoders). There is no way to turn this off and (when I last looked) no way to add software for additional devices. ConVEX allows you to disable the IME functionality or add a new I2C driver that can coexist with the IME code. It can allow this because everything is supplied as source code, however, whether you can actually do this would depend on you ability and motivation. I posted a brief example of using the I2C for another device here;
Setting up the cortex to act as an I2C slave rather than as a master would be more work but should still be possible, however, I’ve never had a reason to try that.
ConVEX is a library (supplied as source files) that, along with an open source RTOS, you link against you own code and then program the cortex. There is an eclipse plugin that lets you quickly create a new project. The simplest way to start using it is to install PROS (which is eclipse + the C compiler etc.) and then add the ConVEX files into your workspace and get the plugin from the update site. Follow the link in my sig for more documentation.
Having said this, unless you have a really good reason to use I2C I would suggest you use the UART ports, far easier, more robust, better solution IMHO.