Retreat! Retreat!
Seriously, I think we need to pull back a bit, agree on a very, very basic bulleted list of functions included in the firmware, and then write a sentence or two for each function. THEN we can talk about implementation. I think the current discussion is great, but is putting the cart before the horse.
I'm assuming we want the following code on the master AVR:
-Act as an I2C master (i.e.
-Read/set time on the RTC
-Drive the LCD
-Read pH
-Read generic input events (float switch on or off)
-Schedule output events (the current discussion)
-Send data to slave AVR via I2C (for use with the Ethernet interface on the slave)
The Slave AVR would need the following:
-Act as an I2C slave, receiving data from master
-Implement Ethernet interface
-Implement generic I/O (?)
I'm assuming we'd have some common extensions for the master, including:
-A "fading" scheduler - fade PWM channels instead of just turning them on or off. This would be for LEDs, moonlights, or DC wavemakers (i.e. Tunze)
-ATO implementation. You guys can battle this one out.
-IR interface
-One Wire interface for temp probes (or should this be core?)
-"Other" interfaces for temp probes
-etc.
Let's get comments as far as if this list is missing anything or has anything extra. Then we can work on what we actually mean by each item on the list. Then we can work on how we'd implement each item.
I realize that several of you have already implemented some or all of this functionality but I feel like we need to go through the motions of this discussion to make sure we're all on the same page.