Forum: Mikrocontroller und Digitale Elektronik Kryptischer CLIP-Decoder


von Brillo (Gast)


Lesenswert?

Hallo,

ich bin kürzlich auf den CLIP-Decoder von Arkadiusz Antoniak gestoßen 
und wollte mir mal anschauen, was er da so gebaut hat. Schaltplan und 
Quellcode im Anhang. Nun hab ich eine Frage zur Erkennung des 
Telefonklingelns:

Der Transistor T2 schaltet durch, wenn die gleichgerichtete 
Klingelspannung groß genug ist, um über R18 mindestens 0,7 Volt abfallen 
zu lassen ... also so etwa 34 Volt. Soweit ich recherchiert habe, 
klingelt bei uns (und vermutlich auch in Polen) eine Wechselspannung mit 
25 Hertz und Amplituden >48 Volt. Das sollte also reichen, um T2 
durchzuschalten.

Wenn T2 leitet, entlädt sich C10 über R20, und der CALL-Pin (PD3) geht 
auf LOW. Wenn T2 sperrt, lädt sich C10 über R20 und R19 auf und CALL 
geht auf HIGH.

Dem Quelltext entnehme ich nun, daß die fallende Flanke an PD3 den MC 
mit einem externen Interrupt aus dem Schlaf reißt, worauf dann dieses 
Stück Code folgt:
1
i = j = 0;
2
while (1) { // waiting for end of call with timeout
3
  Waitms(1);
4
  if (CALL_PIN != 0) {
5
    j = 0;
6
    if (++i >= 150)
7
      break;
8
  } else {
9
    i = 0;
10
    if (++j >= 150)
11
      break;
12
  }
13
}
14
15
if (j != 0) { // timeout overflow - impulse wasn't call signal
16
  Waitms(500);
17
  continue;
18
}
Hier wird also im Abstand von 1 ms der CALL-Pin überprüft, bis er 
entweder 150 ms am Stück HIGH oder 150 ms am Stück LOW war. Letzterer 
Fall wird als "kein Klingeln" gewertet und der MC geht wieder schlafen, 
bis eine Klingelpuls ihn erneut weckt und das Spiel erneut beginnt.

Die Werte für C10, R20 und R19 sind nun im Schaltplan so gewählt, daß 
während eines 25-Hertz-Klingelns die Zähler i und j niemals den Wert 150 
erreichen, bevor der CALL-Pin wieder seinen Zustand wechselt und der 
jeweils andere Zählen inkrementiert wird. Nur nach dem Ende des 
Klingelns erreicht i die Abbruchbedingung und verläßt die 
Polling-Schleife.

Was soll das ganze Theater nun überhaupt bezwecken? Auf diese Weise wird 
ja jeder Impuls >=34 Volt als Klingeln erkannt. Das hätte man auch 
einfacher haben können. Und selbst wenn Widerstände und Kondensator so 
gewählt wären, daß der CALL-Pin nicht auf HIGH geht, bevor die nächste 
Halbwelle der Klingelspannung den Transistor T2 wieder durchschaltet 
(also langsameres Aufladen), käme nichts sinnvolles dabei heraus, weil 
dann in obiger Zählschleife j den Wert 150 erreicht und das ganze als 
"kein Klingeln" behandelt wird.

Ich kann mir keinen Reim darauf machen, was der gute Arkadiusz damit 
eigentlich bezwecken wollte. Kann mich jemand erleuchten?

von Brillo (Gast)


Angehängte Dateien:

Lesenswert?

Argh ... Ich hab die Anhänge ganz vergessen. Hier sind sie.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.