Hmm, das Waitms könnte man auch weglassen.

Hier mal ein möglicher Lösungsansatz für die oben beschriebene Vorgehensweise:

Timer0 = Durchflusszähler (den Durchflussimpuls als Takt missbrauchen - T0 Eingang - PIN PD 4)
Timer1 = ein Referenz Zeit Zähler mit einer Schrittweite von z.B. 8µs und einer Gesamtdurchlaufdauer, die sich leicht zum Weiterrechen verwenden lässt (z.B. 0,5 Sek).
INT0 = RC Impuls

Am Anfang den INT0 aus steigende Flanke konfigurieren.
Irgendwann kommt die steigende Flanke des RC Impulses -> der Interupt löst aus und man landet in der ISR vom INT0.

In dieser den Zählerstand von Timer 1 sichern und den INT0 auf die fallende Flanke konfigurieren.

Irgendwann ist der RC Impuls beendet. (fallende Flanke). diese löst wiederum einen Interupt aus und man landet in der ISR.

in dieser dann den gesicherten Zählerstand vom aktuellem Zählerstand des Timer1 abziehen, das Ergebniss abspeichern und den Interupt anschliessend wieder auf die steigende Flanke konfigureren.

Der Referenzzeit Zähler erreicht irgendwann einen Überlauf.
Dieser löst einen Interupt aus. In der ISR Prüft man nun, ob insgesamt schon 25 Sekunden rum sind (mittels eines Zählbytes). Wenn nicht, Zählbyte = Zählbyte+1, wenn ja, Zählbyte = 0 und ein Flag zum Starten der Übertragung setzen.

Main Loop:

Wenn das Flag zum Starten der Datenübertragung gesetzt ist:
- Durchflusszähler auslesen und reseten
- die Durchflussdaten auswerten
- sonstige notwendige Daten errechnen
- Daten übertragen.
- das Flag löschen.

Wenn das Flag nicht gesetzt ist:
- warten, bis das Flag gesetzt ist.

Ansonsten kann ich dir nur empfehlen, das Datenblatt vom ATMEGA 8 mal wieder rauszukramen und dort mal die Seiten 67 (externer Interupt 0) und die Seiten 69 ff. (Timer 0) mal durchzulesen.

Grüße,

da Hanni.