Fragen zur Interruptprogrammierung

Hallo zusammen,

ich bin mit meinem 433MHz Decodierer für meine Wetterstation schon recht weit. Die Bits werden gefunden, die Temperatur errechnet (die 12 Bit signed int in 16 Bit umgerechnet, damit Negativ-Werte gehen).
Nun bin ich dabei, alles auf Interrupts umzustellen. Erstmal als Sketch, später als Lib, um auch verschiedene Sensoren objektorientiert dekodieren zu können. Dazu habe ich ein paar Fragen:

Erst habe ich die Signalflanken-Abstände mittels pulseIn(2,LOW) ermittelt. Dabei bin ich ziemlich genau auf 9000µs für die Startsequenz, 1800µs für Bit 0 und 3800µs für Bit1 gekommen. Nun ermittel ich die Längen via attachInterrupt(0,onPinStateChange,FALLING); und errechne die Deltas aus micros();. Dabei komme ich auf 10000, 2400 und 4400µs Signallänge - kann sich (und mir) das jemand erklären? Ich verstehe auch nicht, was das "die Signallängen wurden empirisch ermittelt" aus der Doku von pulseIn() sein soll.

Innerhalb des Interrupt-Codes sollte ich ja nicht allzu viel machen (vor allem nicht vie Serial-Line Daten austauschen und so, sicher dann auch nicht via Ethernet). Wie übergeben ich nun eine fertig eingelesene Bitsequenz "zurück" an den Main-Loop? Ich könnte mir vorstellen, eine Variable damit zu füttern und dann ein Flag zu setzen, dass nun Daten da sind. In den von mir gefundenen Beispielen, wird immer eine übergebene Callback-Funktion aufgerufen aber die läuft dann ja auch innerhalb des Interrupts.

Zu guter Letzt: Was ist, wenn die 2 Interrupt-Leitungen aufgebraucht sind. Bekomme ich irgendwie die anderen Pins noch "interuptiertert"? Oder gibts eine Abstraktions-Lib, mit der ich die Pollen kann ohne meinen Code umzubauen?

Um mehrere Signalquellen decodieren zu können, würde ich wie folgt vorgehen: Die Main-Lib misst für jede Flanke die Abstände. Für jeden Sensor-Typ gibt es ein Objekt, welches über die Flanken informiert wird und die Bits intern mitzählt. Sobald eines der Sensor-Decoder-Objekte einen Treffer hat, ruft es einen Callback der Main-Lib auf, die das Ergebnis-Objekt an den Main-Loop übergibt.
In der PC-Programmierung wäre das eine saubere Lösung aber ich weiß nicht, ob der µc das bewältigen kann (denke aber schon).

Viele Grüße,
Michael.