Hello, this is my first post to 'programming questions'.
I am designing a 'Building Controller' (BC
) to be used in my hobby farm out buildings (greenhouse, shop, pole barn, main barn). They will be networked and use a Raspberry Pi (RPI
) with a Gertboard (GB
). The GB does I/O for RPI and contains an ATmega328p. A major component for the BC is reading and writing X10 control sequences on the power line. The Arduino X10 library is really for demos only, in that it has long delays that waste all the processing power. I am writing a class for X10 Tx/Rx using interrupts and no delays so many other tasks run efficiently. That is the background for my question(s).
I use INT0 to detect zero crossings of the power line and OC0A for timing Rx detection and Tx pulse width out.Question one
: Has anyone done a document on how the interrupts are already utilized by C++ functions like I2C, millisec(), etc.? I may have to use other interrupts to avoid interfering. I do not want to interfere with someone also using 'wiring' or other available functions/libraries that use interrupts. It would take a lot of time to make a list of what is in use, so if someone has done that...Great! Or I will have to try to find them all.Question two
: I am having problems implementing 'attachInterrupt(0, myISR, RISING);' in the class constructor. Does that have to do with the fact that I should have one interrupt routine no matter how many times the class is instantiated? BTW, of course this type of class would only be instantiated once. Question three:
: I want to make this package available to the community when I get it working properly, so I want it self contained in one pair of 'X10i.cpp/X10i.h' files. It should be instantiated to run the constructor and then used through the public functions. I could get the interrupts working if I had part of the implementation outside the class, but that is not a good way to give it to others.
Thank you for your time and consideration.