AVR community - thanks for many previously helpful forum posts and information that have been vital to me over the years as I learn more about AVRs.
I'm working on a project where I want a distributed set of ATTiny10 devices that allow a more powerful master bus controller to talk to each one and take analog or digital readings from each slave. I'd like to support some basic enumeration, presence detection, etc much like Maxim/Dallas OneWire, however I have no need for protocol compatability with existing OneWire devices. I do want to try to have this protocol use only one single wire, and I'd like to assess if parasitic power is realistic. I'm targeting the attiny10 due to the small footprint and low cost. I'd want to be able sample on the order of 100 devices around 30 times a second.
Right now I'm thinking of a protocol like the following but curious if anyone has tweaks or suggestions. (Even better, if someone already has working code that does something like this!)
Wire protocol would be an open-drain bus with a 10K pullup to VCC. Master would initiate bus traffic by pulling bus low for 3X time period, where X is something like 10uS. All slaves would measure this time period on their own timers, and use the rising edge to synchronize further communication. Maybe every X interval after the initial pulse would be considered a bit, with a HIGH being read as a zero, and a LOW read as a 1. It sounds like I can use the timer with an input capture do this. Frame end would be determined by duration.
Alternatively I could go with the OneWire model where the master sends short or long pulses to discriminate ones and zeros, but given than the attiny10 is fairly powerful compared to most Maxim OneWire hardware, I wonder there isn't an easier way and I can't find OneWire slave code that looks like it would fit into the Attiny10.
Any advice or ideas? Are there some best practices here for how to make it more resilient?
I've looked at PJON, RS485, etc but I really need a super-low per-unit cost so all of those seem ruled out if I want something like $0.30/each.