Frankly I have to agree with James here. The point of this is that we have a largely completed electrical platform we’d like to hand off to you guys for software test. It simply doesn’t make sense to mandate that we do electrical rewrite two to three months in advance for a system that we haven’t done any of the preliminary architectural design, to say nothing of the electrical rework. Replacing the microcontroller on the old sub would simply force us to do work ahead of time (poorly due to the lack of foresight we have at this point in the design process) in a way that would be totally redone in a manner that would likely necessitate a software redesign at the bottom layer as well.
There is nothing to say that we need a beaglebone outright for the old sub, and the majority of the software work that needs to take place on the layers above that should be largely independent of the lower layer hardware and software. We’re simply saying that for the old design it makes far more sense to go through some software rework to an interface you guys are expecting, rather than going through a couple of months of hardware redesign that will inevitably prove to be something we’ll start replacing the moment it’s done. This doesn’t speed up development of software, and puts members on our team on tasks that will prove to be highly frustrating.
With regard to actual implementation, I'd be in favor of a design based around a prototype that James described the other day. From a software standpoint, we use a set of timer based interupts to form a scheduler (sort of) which puts requests to read sensors into a queue. If a request already exists for that sensor in the queue, it simply omits adding another one. Then a high speed ISR manages I2C bus communication going through the states of communication, and switching between which device it's interacting with as the queue dictates. If we have multiple I2C devices, then the exact same ISR could actually be used provided that the memory space storing states for each device is manged separately.
A secondary routine would be used for interfacing with the UART (i.e. PC interface) handling requests for data, and requests to change the state of thrusters. A flow chart should be available soon to help break down the idea (hopefully from James, but otherwise from me). Due to the way that the sub is currently wired, each sensor would be on the same I2C bus.
On this note, we actually will also need someone to verify shorts and wiring on the I2C communications lines on the old sensors. I know that the ACL/GYRO are wired correctly, but I'm not certain about any of the other sensors. I was pretty tired in San Diego, and I believe we had the magnetics working, but I'm not sure.
-Luke
If there are any current blocking issues that prevent us from starting on any of these tasks, it would be nice to know what they are.