Thanks for your comments. The output will actually be 3-state: a passive pullup (1K resistor, equivalent to 5mA sink on sensors), active pull down (FET) and active pull up (FET) - the actives with an effective resistance of 100 Ohm = the nominal line impedance. The active pull up is driven by another circuit, based on transition voltage and line sampling, as per the Maxim Application Note. http://pdfserv.maxim-ic.com/en/an/AN244.pdf
The FET's serve 2 functions:
- harder pull down and pull up
- slew rate control (pulse shaping via associated RC).
In the case of direct pull-down with a PIC pin, we may be able to sink up to 25 mA (much less on some ports of the 18F67K22), but do not have slew rate control (although the internal resistance of the output pin does limit pulse rise/fall time), and the line impedance is less well matched.
I think the combination of better impedance matching and slew rate control has advantages in long "heavy" networks, so I still want to go for driving the pull down with an inverted OWOUT.
Your "DEFINE OWINV 1" suggestion sounds promising, I would rather do this than edit the library itself. Any code snippets that would point me in the right direction?
Bookmarks