mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kryptischer CLIP-Decoder


Autor: Brillo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
i = j = 0;
while (1) { // waiting for end of call with timeout
  Waitms(1);
  if (CALL_PIN != 0) {
    j = 0;
    if (++i >= 150)
      break;
  } else {
    i = 0;
    if (++j >= 150)
      break;
  }
}

if (j != 0) { // timeout overflow - impulse wasn't call signal
  Waitms(500);
  continue;
}
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?

Autor: Brillo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Argh ... Ich hab die Anhänge ganz vergessen. Hier sind sie.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.