Ruhezustand ----------- So lange es nichts zu läuten gibt, pennt das Teil im PowerDown und verbraucht dabei so gut wie keinen Strom. Es gibt allerdings eine Ausnahme von dieser Regel, nämlich bei Ansteuerung durch eine UART mit RS232-Pegeln. Ist die für diesen Fall vorgesehene Schaltungsvariante umgesetzt, werden auch im Ruhezustand dauerhaft ca. 15µA durch D1 geschickt. Ansteuerung ----------- Das Teil ist recht flexibel. Es unterstützt erstmal einen Türklingelmodus. Der ist sehr einfach gestrickt: drücke auf den Knopf und es kommt die Melodie für "Ein Uhr". Die Entprellung des Klingelknopfes wird durch die Aufwachzeit realisiert. Für die Türklingelanwendung ist deshalb der Tiny folgendermassen zu fusen: L: F1 H: DC E: FF Das sorgt für eine Aufwachzeit von insgesamt ca. 65ms. Genug zum Entprellen. Danach muss der Knopf dann noch ungefähr weitere 2ms gedrückt bleiben, dann geht's los... Aber diese Türklingelsache war natürlich nur ein Abfallprodukt, die eigentliche Zielanwendung war die Ansteuerung per UART. Für diese Anwendung ist der Tiny folgendermaßen zu fusen: L: D1 H: DC E: FF Damit beträgt die Aufwachzeit nur noch rund 5ms. Das sind allerdings immer noch rund 2,5 Bytes bei der gewählten UART-Rate von 4800 bps. Die ersten drei Bytes kann der Tiny also ganz sicher nicht mitbekommen (mal abgesehen von der vorderen Flanke des Startbits des allerersten Bytes, die ihn aufweckt). Es ist also ein gewisses Timing nötig, damit er die Nutzinformation empfangen kann. Dazu kommt noch, dass er erstmal nicht weiss, ob da nun eine UART mit Logikleveln oder eine mit RS232-Leveln dranhängt und er hat selber auch nichtmal einen wirklich verlässlichen Takt und damit auch keine exakte Baudrate. All das wird dadurch gelöst, dass man einfach eine Folge von 6 kleinen "q" (0x71) sendet und erst daran anschließend die Nutzinformation. Die kleinen q's benutzt der Tiny als Synchronzeichen, um die Polarität der Quelle herauszufinden und seine Baudrate an die der Quelle anzupassen. Innerhalb der gesamten Nachricht (also Synchronzeichen+Nutzdaten) dürfen keine Pausen zwischen den Bytes von größer als die nominelle Dauer von 9 UART-Bits sein. Nutzdaten --------- Es werden hier vielfältige Formate unterstützt. Zum einen können die Nutzdaten aus nur zwei Byte bestehen, wobei das erste die Stunden enthält, das zweite die Minuten. Die beiden Bytes dürfen wahlweise rein binär oder BCD sein. Allerdings überlappen sich die Codespaces dieser beiden Repräsentationen in recht weiten Teilen. Der Tiny reagiert erst, wenn er was empfängt, was eindeutig nur in einer der beiden Repräsentationen eine gültige Uhrzeit ergibt. Das merkt er sich dann aber auch und von da an akzeptiert er auch mehrdeutige Codes, interpretiert sie dann aber eben entprechend des Gelernten. Die Lernphase kann man umgehen, indem man ihm das Lernergebnis schon als Wissen vorab eintrichtert. Dafür dienen die beiden *.eep Dateien in den Anhängen. Eine davon (sinnvollerweise die Passende...) brennt man einfach nach dem Brennen des eigentlichem Programms in den EEPROM. Außer den beiden Binärformaten wird auch noch ASCII unterstützt. Die ASCII-Nutzdaten dürfen zwischen vier und sieben Bytes umfassen, wobei folgende Regeln gelten: 4 Bytes : Das Format ist HHMM 5..7 Bytes: Das Format ist HH.MM**, wobei der Punkt ein beliebiges Zeichen sein kann und der Stern ein beliebiges oder auch garkein Zeichen. Für alle Varianten der UART-Nutzdatenformate gilt, dass sowohl 12h-Angaben als auch 24h-Angaben akzeptiert werden. Angaben im 24h-Format werden einfach in das vom Westminster-Läutwerk benötigte 12h-Format umgewandelt.