From 716d8a0a238dc647f8d030b364f3514b74396b57 Mon Sep 17 00:00:00 2001 From: Ronald Schaten Date: Tue, 2 Jan 2007 21:30:40 +0000 Subject: [PATCH] First CVS-version --- Changelog.txt | 5 + License.txt | 340 +++++++++++ Makefile | 60 ++ binarydcf77clock.dox | 155 +++++ binarydcf77clock.doxygen | 1252 ++++++++++++++++++++++++++++++++++++++ circuit/circuit.erc | 12 + circuit/circuit.sch | Bin 0 -> 262415 bytes circuit/circuit.sch.pdf | Bin 0 -> 184944 bytes circuit/circuit.sch.png | Bin 0 -> 39236 bytes circuit/partlist.txt | 58 ++ firmware/Makefile | 50 ++ firmware/boole.h | 33 + firmware/dcftime.c | 444 ++++++++++++++ firmware/dcftime.h | 127 ++++ firmware/main.c | 354 +++++++++++ firmware/saa1064.c | 130 ++++ firmware/saa1064.h | 27 + 17 files changed, 3047 insertions(+) create mode 100644 Changelog.txt create mode 100644 License.txt create mode 100644 Makefile create mode 100644 binarydcf77clock.dox create mode 100644 binarydcf77clock.doxygen create mode 100644 circuit/circuit.erc create mode 100644 circuit/circuit.sch create mode 100644 circuit/circuit.sch.pdf create mode 100644 circuit/circuit.sch.png create mode 100644 circuit/partlist.txt create mode 100644 firmware/Makefile create mode 100644 firmware/boole.h create mode 100644 firmware/dcftime.c create mode 100644 firmware/dcftime.h create mode 100644 firmware/main.c create mode 100644 firmware/saa1064.c create mode 100644 firmware/saa1064.h diff --git a/Changelog.txt b/Changelog.txt new file mode 100644 index 0000000..6880c6a --- /dev/null +++ b/Changelog.txt @@ -0,0 +1,5 @@ +$Id: Changelog.txt,v 1.1 2007/01/02 21:30:39 rschaten Exp $ + +* Release 07010x + +- initial release diff --git a/License.txt b/License.txt new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/License.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ff936b1 --- /dev/null +++ b/Makefile @@ -0,0 +1,60 @@ +# $Id: Makefile,v 1.1 2007/01/02 21:30:39 rschaten Exp $ +# +# Creates documentation and tarball for shipping. + +TODAY=`date "+%y%m%d"` +DIR=`basename \`pwd\`` +PACKETNAME=$(DIR)_$(TODAY) + +all: usage + +usage: + @echo "Usage of this makefile:" + @echo "make docs create documentation" + @echo "make tarball packs a tarball for shipping" + @echo + @echo "For further information, consult the documentation in Readme.txt." + +# doc generation +docs: readme pdf + @echo "documentation created" + +readme: doxygen + echo "This file is auto-generated from the content of binarydcf77clock.dox." > Readme.txt + echo "You'll have more fun if you read the HTML-content in htmldoc or the PDF." >> Readme.txt + echo >> Readme.txt + lynx -dump htmldoc/main.html >> Readme.txt + +pdf: doxygen + make -C latexdoc + mv latexdoc/refman.pdf . + rm -rf latexdoc + +doxygen: + doxygen binarydcf77clock.doxygen + +clean: + rm -rf htmldoc latexdoc Readme.txt refman.pdf + rm -f $(PACKETNAME).tar.gz + make -C firmware clean + +fw: + make -C firmware + mv -v firmware/main.hex firmware/main_$(TODAY).hex + +tarball: fw clean docs + @echo + @echo + @echo "I assume you updated the Changelog...? Press Enter to continue..." + @read + [ -e "firmware/main_$(TODAY).hex" ] || exit + rm --force $(PACKETNAME).tar.gz; \ + tar --directory=.. \ + --exclude=$(DIR)/Makefile \ + --exclude=CVS \ + --exclude=*.ps \ + --create \ + --gzip \ + --verbose \ + --file ../$(PACKETNAME).tar.gz $(DIR) + diff --git a/binarydcf77clock.dox b/binarydcf77clock.dox new file mode 100644 index 0000000..9e62d43 --- /dev/null +++ b/binarydcf77clock.dox @@ -0,0 +1,155 @@ +/** + * \mainpage Binary DCF-77 Clock + * + * \section sec_intro Introduction + * + * In Germany, the official time is transmitted in a signal called DCF-77. You + * can find many descriptions of the signal format on the internet. + * + * The Binary DCF-77 Clock is a simple device to receive and decode the signal + * and display the current date and time in binary form. The signal is received + * in a stock DCF-77 receiver module, decoded with an ATmega8 microcontroller + * and displayed in binary form on an array of LEDs. This array consists of for + * lines with eight LEDs each. The ATmega8 is not able to control 32 LEDs at + * once, so an SAA1064 module is used which is connected via I2C-bus. + * + * The time should be displayed in several different binary formats, the format + * can be selected with a simple button. The formats will be described later. + * + * The distribution contains the firmware for the controller, the schematics, + * the documentation and a copy of the GPL license. + * + * \section sec_install Building and installing + * + * The firmware for this project requires avr-gcc and avr-libc (a C-library for + * the AVR controller). Please read the instructions at + * http://www.nongnu.org/avr-libc/user-manual/install_tools.html for how to + * install the GNU toolchain (avr-gcc, assembler, linker etc.) and avr-libc. + * + * Once you have the GNU toolchain for AVR microcontrollers installed, you can + * run "make" in the subdirectory "firmware". You may need to customize the + * makefile. Also, you might have to edit the array byte[] in main.c, which + * describes the order of the output LEDs. The current order works for me + * because I soldered the LEDs as compact as possible, it's slightly different + * from the layout shown in the circuit. + * + * Also, you may have to edit the Makefile to use your preferred downloader + * with "make program". The current version is built for avrdude with a + * USB connection to an avr109-compatible programmer. + * + * No external crystal is needed, so you don't have to struggle with setting + * any fuse-bits. + * + * After making your changes, you can compile and flash to the device: + * + * \code + * make program + * \endcode + * + * \section sec_usage Usage + * + * Connect the device to a DC power source with 9V. As long as no time has been + * decoded, a running light is shown on the output LED array. The single DCF + * indicator LED should start flashing to indicate that a signal is received. + * It is set to on when the input signal is high, and switched off if the + * signal is low. So you should see it flashing with one flash per second, each + * flash being 100ms or 200ms long. + * + * If the signal is received correctly, after about two minutes the clock + * should be able to tell the correct time. + * + * \subsection sec_reading Reading the time + * + * The time and date are displayed in seven different styles. You can select + * the style by pressing the button for a while. A pattern of lights indicate + * which mode is selected, you can read it as a binary value. + * + * \subsubsection sec_mode1 Mode 1: Time as binary + * + * This simply displays the hours, minutes and seconds as bytes, one after + * each other. The fourth line of the display stays blank. + * + * \subsubsection sec_mode2 Mode 2: Date as binary + * + * This is like the previous, with the difference that it displays the day of + * the month, the month and the year in the first three lines. The last line + * shows the day of the week, monday being a 1, tuesday a 2 and so on. + * + * \subsubsection sec_mode3 Mode 3: Time as BCD + * + * This shows the time as binary coded digits (BCD). The first line displays + * the hours. The left four LEDs indicate the 10-hours, the right four LEDs + * indicate the 1-hours. + * + * In the same way, the second and third line display the minutes and the + * seconds. + * + * \subsubsection sec_mode4 Mode 4: Date as BCD + * + * This is like the previous mode, but the date is displayed. + * + * \subsubsection sec_mode5 Mode 5: Time as BCD (vertically) + * + * This shows the time in a BCD-form as described in mode 3, but the BCD-values + * are put vertically next to each other. So in the first two colums you can + * read the hours, the third column is empty, the fourth and fifth columns show + * the minutes, the sixth is empty and the seventh and eighths indicate the + * seconds. + * +* \subsubsection sec_mode6 Mode 6: Date as BCD (vertically) + * + * This is like mode 5, but it displays the date. + * + * \subsubsection sec_mode7 Mode 7: Unix timestamp + * + * This is probably the least human readable format. It shows a 32-bit value of + * the seconds since january 1st, 1970. :-) + * + * \subsection sec_demo Demo mode + * + * If you connect the clock in a place with a poor DCF-reception, but want to + * demonstrate the functions, you can use the demo mode. To toggle this, you + * can touch and hold the button for about five seconds. Afterwards, you can + * switch through the different display modes. The time displayed will stand + * still, so this can be used to explain the display modes without a hurry. + * + * Switching to demo mode is indicated by all LEDs flashing for a short moment. + * Leaving demo mode shows an empty rectangle for a short moment. + * + * \section sec_drawbacks Drawbacks + * + * I didn't expect the DCF-signal to be so easily disturbed. In my case + * sometimes there is no usable signal left when I put my notebook with WLAN + * next to the clock. Fortunately, the time will be counted further until the + * next 'correct minute' is received. + * + * \section sec_files Files in the distribution + * + * - \e Readme.txt: Documentation, created from the htmldoc-directory. + * - \e firmware: Source code of the controller firmware. + * - \e circuit: Circuit diagrams in PDF and EAGLE 4 format. A free version of + * EAGLE is available for Linux, Mac OS X and Windows from + * http://www.cadsoft.de/. + * - \e License.txt: Public license for all contents of this project. + * - \e Changelog.txt: Logfile documenting changes in firm- and hardware. + * - \e refman.pdf: Full documentation of the software. + * + * \section sec_thanks Thanks! + * + * I'd like to thank Michael Meier, who developed and published a much + * more sophisticated clock on his site. The SAA1064-stuff and the routine to + * calculate the Unix timestamp are based on his project. You can find it under + * http://www.mulder.franken.de/ntpdcfledclock/. + * + * And once again I'd like to give special credits to Thomas Stegemann + * for help with the C language. + * + * \section sec_license About the license + * + * Our work - all contents except for the USB driver - are licensed under the + * GNU General Public License (GPL). A copy of the GPL is included in + * License.txt. The driver itself is licensed under a special license by + * Objective Development. See firmware/usbdrv/License.txt for further info. + * + * (c) 2006 by Ronald Schaten - http://www.schatenseite.de + */ diff --git a/binarydcf77clock.doxygen b/binarydcf77clock.doxygen new file mode 100644 index 0000000..d484dc2 --- /dev/null +++ b/binarydcf77clock.doxygen @@ -0,0 +1,1252 @@ +# Doxyfile 1.4.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "Binary DCF-77 Clock" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = htmldoc + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latexdoc + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtfdoc + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = YES + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/circuit/circuit.erc b/circuit/circuit.erc new file mode 100644 index 0000000..3eb1235 --- /dev/null +++ b/circuit/circuit.erc @@ -0,0 +1,12 @@ +EAGLE Version 4.16r1 Copyright (c) 1988-2006 CadSoft + +Electrical Rule Check for /home/rschaten/microcontroller/binarydcf77clock/circuit/circuit.sch at 12/30/2006 10:30:30 + +WARNING: Sheet 1/1: POWER Pin IC2 VEE connected to GND +ERROR: 8 OUTPUT Pins on net B$1 +ERROR: 8 OUTPUT Pins on net B$2 + +No board loaded - consistency has not been checked + + 2 errors + 1 warnings diff --git a/circuit/circuit.sch b/circuit/circuit.sch new file mode 100644 index 0000000000000000000000000000000000000000..735f166393314390129ac56c1611f6b7f37a6e05 GIT binary patch literal 262415 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ϞlIP|IwRp);%2P75(6E%NF+4 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 Y)2YKB4Vd<|VEWSGKRNJe{P5WMzxRg*YybcN literal 0 HcmV?d00001 diff --git a/circuit/circuit.sch.pdf b/circuit/circuit.sch.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c02c905e421eaf6ad930b571b47d4864596992a3 GIT binary patch literal 184944 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 A5C8xG literal 0 HcmV?d00001 diff --git a/circuit/circuit.sch.png b/circuit/circuit.sch.png new file mode 100644 index 0000000000000000000000000000000000000000..0369fadcf62bef36b8ece3bee9b2417ab9aff80a GIT binary patch literal 39236 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 dcf logic false (lower value) */ +const dcf_sample dcf_logic_false_min = (DCF_RATE)*3/100; +/** dcf signal between 30ms and 130ms => dcf logic false (upper value) */ +const dcf_sample dcf_logic_false_max = (DCF_RATE)*13/100; +/** dcf signal between 140ms and 230ms => dcf logic true (lower value) */ +const dcf_sample dcf_logic_true_min = (DCF_RATE)*14/100; +/** dcf signal between 140ms and 230ms => dcf logic true (upper value) */ +const dcf_sample dcf_logic_true_max = (DCF_RATE)*23/100; +/** duration between begin of dcf second (== begin of signal), should be 1 * second +/- 3% (lower value) */ +const dcf_sample dcf_second_tolerance_min = (DCF_RATE) - (DCF_RATE)*3/100; +/** duration between begin of dcf second (== begin of signal), should be 1 * second +/- 3% (upper value) */ +const dcf_sample dcf_second_tolerance_max = (DCF_RATE) + (DCF_RATE)*3/100; + +/** definition of logical signal states */ +enum dcf_logic_signal_enum { + dcf_signal_no, /**< no signal */ + dcf_signal_false, /**< 'false' signal */ + dcf_signal_true, /**< 'true' signal */ + dcf_signal_invalid /**< invalid signal */ +}; +/** definition of logical signal states */ +typedef enum dcf_logic_signal_enum dcf_logic_signal; + +/** format of the received data, filled during reception */ +struct dcf_receiving_data_struct { + dcf_date date; /**< date */ + dcf_time time; /**< time */ + boolean parity; /**< parity of the received data */ + boolean is_valid; /**< data is valid */ + dcf_logic_signal current_signal; /**< logical state of the received data */ + dcf_sample low_samples; /**< counts low signal samples per second */ + dcf_sample high_samples; /**< counts high signal samples per second */ +}; +/** definition of the received data, filled during reception */ +typedef struct dcf_receiving_data_struct dcf_receiving_data; + +/** format of the DCF data. + * dcf_current_datetime() and dcf_sample() may be called from different contexts. To avoid changing the current_datetime while it is read: + * if use_first_current_datetime is true: dcf_current_datetime reads current_datetime[0] and dcf_sample changes current_datetime[1] + * if use_first_current_datetime is false: vice versa + */ +struct dcf_data_struct { + dcf_datetime current_datetime[2]; /**< two full datasets */ + boolean use_first_current_datetime; /**< flag if the first or the second dataset is used */ + dcf_sample current_datetime_sample; /**< number of the current sample */ + dcf_receiving_data receiving_data; /**< data being filled */ +}; + +/* + global data +*/ + +static struct dcf_data_struct dcf_data; /**< full set of received dcf data */ + +/* + dcf_time +*/ + +/** + * Initialize a dcf_time value. + * \param pTime: pointer to a dcf_time variable + */ +static void dcf_time_init(dcf_time * pTime) { + pTime->second = 0; + pTime->minute = 0; + pTime->hour = 0; + pTime->is_dst = False; +} + +/** + * Increment a time-value by one second. + * \param pTime: pointer to a dcf_time variable + * \return True if the date has to be incremented, too. Otherwise False. + */ +static boolean dcf_time_inc(dcf_time * pTime) { + ++(pTime->second); + if (pTime->second == 60) { + pTime->second = 0; + ++(pTime->minute); + if (pTime->minute == 60) { + pTime->minute = 0; + ++(pTime->hour); + if (pTime->hour == 24) { + pTime->hour = 0; + return True; /* overflow => increment date */ + } + } + } + return False; +} + +/** + * Check if a time-value makes sense. + * \param pTime: pointer to a dcf_time variable + * \return True if the time is logically correct. Otherwise False. + */ +static boolean dcf_time_is_valid(dcf_time * pTime) { + return (pTime->second <= 60) + && (pTime->minute <= 60) + && (pTime->hour <= 24); +} + +/* + dcf_date +*/ + +/** + * Initialize a dcf_date value. + * \param pDate: pointer to a dcf_date variable + */ +static void dcf_date_init(dcf_date * pDate) { + pDate->dayofweek = dcf_sunday; + pDate->dayofmonth = 1; + pDate->month = dcf_january; + pDate->year = 0; +} + +/** + * Calculate the number of days in a month. + * \param pDate: pointer to a dcf_time variable + * \return The number of days in the given month. + */ +static dcf_sizetype dcf_date_days_in_month(dcf_date * pDate) { + switch (pDate->month) { + case dcf_february: + if (pDate->year % 4 != 0) + return 28; /* year not divisible by 4 */ + else if (pDate->year != 0) + return 29; /* year divisible by 4 and not divisible by 100 */ + else if (((pDate->dayofmonth % 7) + 1) != pDate->dayofweek) + return 28; /* year divisible by 100 and not divisible by 400 */ + else + return 29; /* year divisible by 400 */ + /* + if year is divisble by 400 (eg year 2000) the 1st february is a tuesday (== 2 (== 1+1)) + if year divided by 400 remains 100 1st February is a monday + if year divided by 400 remains 200 1st February is a saturday + if year divided by 400 remains 300 1st February is a thursday + this repeats every 400 years, because 400 year are 3652425/25 day + which is 7*521775/25, therefore divisible by 7 + which means every 400 years the day of week are the same + ! dayofmonth and dayofweek must be synchronized to get the right value + */ + case dcf_april: + case dcf_june: + case dcf_september: + case dcf_november: + return 30; + default: + return 31; + } +} + +/** + * Increment a date-value by one day. + * \param pDate: pointer to a dcf_date variable + */ +static void dcf_date_inc(dcf_date * pDate) { + ++(pDate->dayofweek); + if (pDate->dayofweek == 8) { + pDate->dayofweek = 1; + } + + ++(pDate->dayofmonth); + if (pDate->dayofmonth == (dcf_date_days_in_month(pDate) + 1)) { + pDate->dayofmonth = 1; + ++(pDate->month); + if (pDate->month == 13) { + pDate->month = 1; + ++(pDate->year); + if (pDate->year == 100) { + pDate->year = 0; + } + } + } +} + +/** + * Check if a date-value makes sense. + * \param pDate: pointer to a dcf_date variable + * \return True if the date is logically correct. Otherwise False. + */ +static boolean dcf_date_is_valid(dcf_date * pDate) { + return (1 <= pDate->dayofweek) + && (pDate->dayofweek <= 7) + && (1 <= pDate->dayofmonth) + && (pDate->dayofmonth <= dcf_date_days_in_month(pDate)) + && (1 <= pDate->month) + && (pDate->month <= 12) + && (pDate->year <= 99); +} + +/* + dcf_datetime +*/ +/** + * Initialize a dcf_datetime value. + * \param pDatetime: pointer to a dcf_datetime variable + */ +static void dcf_datetime_init(dcf_datetime * pDatetime) { + pDatetime->is_valid = False; + pDatetime->has_signal = False; + dcf_time_init(&(pDatetime->time)); + dcf_date_init(&(pDatetime->date)); +} + +/** + * Increment a datetime-value by one second. + * \param pDatetime: pointer to a dcf_datetime variable + */ +static void dcf_datetime_inc(dcf_datetime * pDatetime) { + if (dcf_time_inc(&(pDatetime->time))) { + dcf_date_inc(&(pDatetime->date)); + } +} + +/* + dcf_receiving_data +*/ + +/** + * Initialize a dcf_receiving_data value. + * \param pReceive: pointer to a dcf_receiving_data variable + */ +static void dcf_receiving_data_init(dcf_receiving_data * pReceive) { + pReceive->current_signal = dcf_signal_no; + pReceive->parity = False; + pReceive->is_valid = True; + pReceive->low_samples = 0; + pReceive->high_samples = 0; + dcf_time_init(&(pReceive->time)); + dcf_date_init(&(pReceive->date)); +} + +/** + * Calculate the time and date while the bits are received. + * \param signal: True if the received bit is 200ms, False if the bit is 100ms. + */ +static void dcf_logic(boolean signal) { + dcf_data.receiving_data.parity ^= signal; + switch (dcf_data.receiving_data.time.second) { + case 16: dcf_data.receiving_data.parity = True; break; + case 17: dcf_data.receiving_data.time.is_dst = signal; break; + case 18: if(dcf_data.receiving_data.parity) dcf_data.receiving_data.is_valid = False; break; + case 19: dcf_data.receiving_data.parity = True; break; + case 20: if(!signal) dcf_data.receiving_data.is_valid = False; break; + case 21: dcf_data.receiving_data.time.minute = signal ? 1 : 0; break; + case 22: dcf_data.receiving_data.time.minute += signal ? 2 : 0; break; + case 23: dcf_data.receiving_data.time.minute += signal ? 4 : 0; break; + case 24: dcf_data.receiving_data.time.minute += signal ? 8 : 0; break; + case 25: dcf_data.receiving_data.time.minute += signal ? 10 : 0; break; + case 26: dcf_data.receiving_data.time.minute += signal ? 20 : 0; break; + case 27: dcf_data.receiving_data.time.minute += signal ? 40 : 0; break; + case 28: if(dcf_data.receiving_data.parity) dcf_data.receiving_data.is_valid = False; break; + case 29: dcf_data.receiving_data.time.hour = signal ? 1 : 0; break; + case 30: dcf_data.receiving_data.time.hour += signal ? 2 : 0; break; + case 31: dcf_data.receiving_data.time.hour += signal ? 4 : 0; break; + case 32: dcf_data.receiving_data.time.hour += signal ? 8 : 0; break; + case 33: dcf_data.receiving_data.time.hour += signal ? 10 : 0; break; + case 34: dcf_data.receiving_data.time.hour += signal ? 20 : 0; break; + case 35: if(dcf_data.receiving_data.parity) dcf_data.receiving_data.is_valid = False; break; + case 36: dcf_data.receiving_data.date.dayofmonth = signal ? 1 : 0; break; + case 37: dcf_data.receiving_data.date.dayofmonth += signal ? 2 : 0; break; + case 38: dcf_data.receiving_data.date.dayofmonth += signal ? 4 : 0; break; + case 39: dcf_data.receiving_data.date.dayofmonth += signal ? 8 : 0; break; + case 40: dcf_data.receiving_data.date.dayofmonth += signal ? 10 : 0; break; + case 41: dcf_data.receiving_data.date.dayofmonth += signal ? 20 : 0; break; + case 42: dcf_data.receiving_data.date.dayofweek = signal ? 1 : 0; break; + case 43: dcf_data.receiving_data.date.dayofweek += signal ? 2 : 0; break; + case 44: dcf_data.receiving_data.date.dayofweek += signal ? 4 : 0; break; + case 45: dcf_data.receiving_data.date.month = signal ? 1 : 0; break; + case 46: dcf_data.receiving_data.date.month += signal ? 2 : 0; break; + case 47: dcf_data.receiving_data.date.month += signal ? 4 : 0; break; + case 48: dcf_data.receiving_data.date.month += signal ? 8 : 0; break; + case 49: dcf_data.receiving_data.date.month += signal ? 10 : 0; break; + case 50: dcf_data.receiving_data.date.year = signal ? 1 : 0; break; + case 51: dcf_data.receiving_data.date.year += signal ? 2 : 0; break; + case 52: dcf_data.receiving_data.date.year += signal ? 4 : 0; break; + case 53: dcf_data.receiving_data.date.year += signal ? 8 : 0; break; + case 54: dcf_data.receiving_data.date.year += signal ? 10 : 0; break; + case 55: dcf_data.receiving_data.date.year += signal ? 20 : 0; break; + case 56: dcf_data.receiving_data.date.year += signal ? 40 : 0; break; + case 57: dcf_data.receiving_data.date.year += signal ? 80 : 0; break; + case 58: if(dcf_data.receiving_data.parity) dcf_data.receiving_data.is_valid = False; break; + } + ++(dcf_data.receiving_data.time.second); +} + +/** + * Copy the values from receiving_data to current_datetime. + */ +static void dcf_store(void) { + if ((dcf_data.receiving_data.is_valid) + && dcf_time_is_valid(&(dcf_data.receiving_data.time)) + && dcf_date_is_valid(&(dcf_data.receiving_data.date))) { + dcf_data.current_datetime_sample = 0; + if (dcf_data.use_first_current_datetime) { + dcf_data.current_datetime[1].time = dcf_data.receiving_data.time; + dcf_data.current_datetime[1].date = dcf_data.receiving_data.date; + dcf_data.current_datetime[1].is_valid = True; + dcf_data.use_first_current_datetime = False; + } else { + dcf_data.current_datetime[0].time = dcf_data.receiving_data.time; + dcf_data.current_datetime[0].date = dcf_data.receiving_data.date; + dcf_data.current_datetime[0].is_valid = True; + dcf_data.use_first_current_datetime = True; + } + } +} + +/** + * Copy valid time and increment it. + */ +static void dcf_inc(void) { + if (dcf_data.use_first_current_datetime) { + dcf_data.current_datetime[1] = dcf_data.current_datetime[0]; + dcf_datetime_inc(&(dcf_data.current_datetime[1])); + dcf_data.use_first_current_datetime = False; + } else { + dcf_data.current_datetime[0] = dcf_data.current_datetime[1]; + dcf_datetime_inc(&(dcf_data.current_datetime[0])); + dcf_data.use_first_current_datetime = True; + } +} + +/* + exported functions, documented in header file +*/ + +void dcf_init(void) { + dcf_data.use_first_current_datetime = True; + dcf_data.current_datetime_sample = 0; + dcf_datetime_init(&(dcf_data.current_datetime[0])); + dcf_datetime_init(&(dcf_data.current_datetime[1])); + dcf_receiving_data_init(&(dcf_data.receiving_data)); +} + +void dcf_signal(boolean signal) { + if (dcf_data.receiving_data.low_samples > dcf_second_samples) { + if (dcf_data.receiving_data.time.second == 59) { + dcf_data.receiving_data.time.second = 0; + dcf_store(); + } else { + dcf_data.receiving_data.time.second = 0; + } + dcf_data.receiving_data.low_samples = 0; + dcf_data.receiving_data.is_valid = True; + } + /* calculate receiving date time */ + if (signal) { + dcf_data.receiving_data.low_samples = 0; + ++(dcf_data.receiving_data.high_samples); + } else { + ++(dcf_data.receiving_data.low_samples); + if (dcf_data.receiving_data.high_samples == 0) { + } else if (dcf_data.receiving_data.high_samples < dcf_logic_false_min) { + /* too short signal */ + dcf_data.receiving_data.is_valid = False; + dcf_data.receiving_data.current_signal = dcf_signal_invalid; + } else if (dcf_data.receiving_data.high_samples < dcf_logic_false_max) { + /* short signal, logic 0 */ + dcf_logic(False); + dcf_data.receiving_data.current_signal = dcf_signal_false; + } else if (dcf_data.receiving_data.high_samples < dcf_logic_true_min) { + /* signal cannot be assigned to true or false */ + dcf_data.receiving_data.is_valid = False; + dcf_data.receiving_data.current_signal = dcf_signal_invalid; + } else if (dcf_data.receiving_data.high_samples < dcf_logic_true_max) { + /* long signal, logic 1 */ + dcf_logic(True); + dcf_data.receiving_data.current_signal = dcf_signal_true; + } else { + /* too long signal */ + dcf_data.receiving_data.is_valid = False; + dcf_data.receiving_data.current_signal = dcf_signal_invalid; + } + dcf_data.receiving_data.high_samples = 0; + } + /* calculate current date time */ + ++(dcf_data.current_datetime_sample); + if (dcf_data.current_datetime_sample == dcf_second_samples) { + dcf_data.current_datetime_sample = 0; + dcf_inc(); + } +} + +dcf_datetime dcf_current_datetime(void) { + if (dcf_data.use_first_current_datetime) { + dcf_data.current_datetime[0].has_signal = dcf_data.receiving_data.is_valid; + return dcf_data.current_datetime[0]; + } else { + dcf_data.current_datetime[1].has_signal = dcf_data.receiving_data.is_valid; + return dcf_data.current_datetime[1]; + } +} + +const char *dcf_dayofweek_name(dcf_dayofweek dow) { + switch (dow) { + case 1: + return "Mo"; + case 2: + return "Tu"; + case 3: + return "We"; + case 4: + return "Th"; + case 5: + return "Fr"; + case 6: + return "Sa"; + case 7: + return "Su"; + default: + return "??"; + } +} + +const char *dcf_is_dst_name(dcf_is_dst dst) { + if (dst) { + return "ST"; + } else { + return "WT"; + } +} diff --git a/firmware/dcftime.h b/firmware/dcftime.h new file mode 100644 index 0000000..64affaa --- /dev/null +++ b/firmware/dcftime.h @@ -0,0 +1,127 @@ +#ifndef DCFTIME_H +#define DCFTIME_H + +/** + * \file dcftime.h + * \brief Decoder for DCF-77 time signals + * \author Ronald Schaten & Thomas Stegemann + * \version $Id: dcftime.h,v 1.1 2007/01/02 21:30:40 rschaten Exp $ + * + * License: See documentation. + */ + +#include "boole.h" + +/* + dcf-signal samples per second +*/ +#ifndef DCF_RATE +#define DCF_RATE 244 /**< number of samples per second. dcf_signal() should be called this often */ +#endif +#if (DCF_RATE < 100) || (250 < DCF_RATE) +#error DCF_RATE should be between 100 and 250 +#endif + +typedef unsigned int dcf_second; /**< seconds (0-59) */ +typedef unsigned int dcf_minute; /**< minutes (0-59) */ +typedef unsigned int dcf_hour; /**< hours (0-24) */ +typedef unsigned int dcf_dayofmonth; /**< day of month (1-31) */ +typedef unsigned int dcf_year; /**< year (0-99) */ +typedef boolean dcf_is_dst; /**< daylight saving: True: MESZ, False: MEZ */ + +/** definition of weekdays */ +enum dcf_dayofweek_enum { + dcf_monday = 1, /**< monday = 1 */ + dcf_tuesday, /**< tuesday */ + dcf_wednesday, /**< wednesday */ + dcf_thursday, /**< thursday */ + dcf_friday, /**< friday */ + dcf_saturday, /**< saturday */ + dcf_sunday, /**< sunday = 7 */ +}; +/** definition of weekdays */ +typedef enum dcf_dayofweek_enum dcf_dayofweek; + +/** definition of months */ +enum dcf_month_enum { + dcf_january = 1, /**< january = 1 */ + dcf_february, /**< february */ + dcf_march, /**< march */ + dcf_april, /**< april */ + dcf_may, /**< may */ + dcf_june, /**< june */ + dcf_july, /**< july */ + dcf_august, /**< august */ + dcf_september, /**< september */ + dcf_october, /**< october */ + dcf_november, /**< november */ + dcf_december /**< december = 12 */ +}; +/** definition of months */ +typedef enum dcf_month_enum dcf_month; + +/** format of the dcf_time */ +struct dcf_time_struct { + dcf_second second; /**< seconds */ + dcf_minute minute; /**< minutes */ + dcf_hour hour; /**< hours */ + dcf_is_dst is_dst; /**< daylight saving time */ +}; +/** definition of dcf_time */ +typedef struct dcf_time_struct dcf_time; + +/** format of the dcf_date */ +struct dcf_date_struct { + dcf_dayofweek dayofweek; /**< day of week */ + dcf_dayofmonth dayofmonth; /**< day of month */ + dcf_month month; /**< month */ + dcf_year year; /**< year */ +}; +/** definition of dcf_date */ +typedef struct dcf_date_struct dcf_date; + +/** format of the dcf_datetime */ +struct dcf_datetime_struct { + dcf_time time; /**< the time */ + dcf_date date; /**< the time */ + boolean is_valid; /**< if is_valid is False: no complete signal received, do not use date and times */ + boolean has_signal; /**< if has_signal is True: currently receiving signal */ +}; +/** definition of dcf_datetime */ +typedef struct dcf_datetime_struct dcf_datetime; + +/** + * Initialize the DCF-module. Call dcf_init before any other DCF function. + */ +void dcf_init(void); + +/** + * Tell the DCF-module if the signal is high or low. This function decides if + * the received bit is a long or a short one, and if it is usable at all. It + * should be called regularly, the number of calls per second is defined in + * DCF_RATE. + * \param signal: True if the input signal is high, False if it is low. + */ +void dcf_signal(boolean signal); + +/** + * Fetch the current date and time. + * \return The current date and time in a dcf_datetime structure + */ +dcf_datetime dcf_current_datetime(void); + +/** + * Get the name of the current weekday. + * \param dow: Day of the current week. Monday = 1, tuesday = 2... + * \return Pointer to the name + */ +const char* dcf_dayofweek_name(dcf_dayofweek dow); + +/** + * Get the name of the current daylight saving time (summertime, wintertime). + * \param dst: daylight saving time bit from the time signal + * \return Pointer to the name + */ +const char* dcf_is_dst_name(dcf_is_dst dst); + +#endif diff --git a/firmware/main.c b/firmware/main.c new file mode 100644 index 0000000..6c06802 --- /dev/null +++ b/firmware/main.c @@ -0,0 +1,354 @@ +/** + * \file main.c + * \brief Firmware for the binary DCF-77 clock + * \author Ronald Schaten + * \version $Id: main.c,v 1.1 2007/01/02 21:30:40 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include + +#include "saa1064.h" +#include "dcftime.h" + +uint8_t byte[4] = { 2, 3, 1, 0 }; /** the order of the connected output-LED-rows */ +uint8_t output[4], outputOld[4]; /** current and old content of the LEDs */ + +/** the display-modes */ +enum modes { + timeasbinary, + dateasbinary, + timeasbcdhorizontal, + dateasbcdhorizontal, + timeasbcdvertical, + dateasbcdvertical, + timestamp +}; +enum modes mode; + +uint8_t demomode = 0; + + +/** + * sends the current content of output[] to the LEDs if it has changed. + */ +void setLeds(void) { + uint8_t i; + for (i = 0; i < 4; i++) { + if (output[i] != outputOld[i]) { + set_led_digit(byte[i], output[i]); + outputOld[i] = output[i]; + } + } +} // function setLeds + +/** + * Takes the current time and converts it into different output-formats. + * \param datetime: the current time + */ +void setOutput(dcf_datetime datetime) { + uint8_t bcdlow, bcdhigh; /* takes the low and high parts when converting to BCD */ + const uint32_t TS01012000 = 946681200UL; /* The UNIX-Timestamp of 1.1.2000 */ + const uint16_t monthstarts[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; /* On which day does a new month start in non-leap-years */ + const uint32_t SECONDSINADAY = (60UL * 60 * 24); /* Number of seconds in a day */ + uint32_t ts; /* takes the UNIX-Timestamp */ + + switch (mode) { + case timeasbinary: + /* hour, minute and second are displayed in rows */ + output[0] = datetime.time.hour; + output[1] = datetime.time.minute; + output[2] = datetime.time.second; + output[3] = 0; + break; + case dateasbinary: + /* day of month, month, year and day of week (starting with monday + * = 1) are displayed in rows */ + output[0] = datetime.date.dayofmonth; + output[1] = datetime.date.month; + output[2] = datetime.date.year; + output[3] = datetime.date.dayofweek; + break; + case timeasbcdhorizontal: + /* the time is converted to BCD, the digits are displayed by two in + * a row */ + bcdlow = datetime.time.hour % 10; + bcdhigh = datetime.time.hour / 10; + output[0] = (bcdhigh << 4) | bcdlow; + bcdlow = datetime.time.minute % 10; + bcdhigh = datetime.time.minute / 10; + output[1] = (bcdhigh << 4) | bcdlow; + bcdlow = datetime.time.second % 10; + bcdhigh = datetime.time.second / 10; + output[2] = (bcdhigh << 4) | bcdlow; + output[3] = 0; + break; + case dateasbcdhorizontal: + /* the date is converted to BCD, the digits are displayed by two in + * a row */ + bcdlow = datetime.date.dayofmonth % 10; + bcdhigh = datetime.date.dayofmonth / 10; + output[0] = (bcdhigh << 4) | bcdlow; + bcdlow = datetime.date.month % 10; + bcdhigh = datetime.date.month / 10; + output[1] = (bcdhigh << 4) | bcdlow; + bcdlow = datetime.date.year % 10; + bcdhigh = datetime.date.year / 10; + output[2] = (bcdhigh << 4) | bcdlow; + bcdlow = datetime.date.dayofweek; + bcdhigh = 0; + output[3] = (bcdhigh << 4) | bcdlow; + break; + case timeasbcdvertical: + /* the time is converted to BCD, the digits are displayed in + * columns */ + output[0] = 0; + output[1] = 0; + output[2] = 0; + output[3] = 0; + bcdlow = datetime.time.hour % 10; + bcdhigh = datetime.time.hour / 10; + output[0] |= ((bcdhigh & 8) << 4) | ((bcdlow & 8) << 3); + output[1] |= ((bcdhigh & 4) << 5) | ((bcdlow & 4) << 4); + output[2] |= ((bcdhigh & 2) << 6) | ((bcdlow & 2) << 5); + output[3] |= ((bcdhigh & 1) << 7) | ((bcdlow & 1) << 6); + bcdlow = datetime.time.minute % 10; + bcdhigh = datetime.time.minute / 10; + output[0] |= ((bcdhigh & 8) << 1) | ((bcdlow & 8) << 0); + output[1] |= ((bcdhigh & 4) << 2) | ((bcdlow & 4) << 1); + output[2] |= ((bcdhigh & 2) << 3) | ((bcdlow & 2) << 2); + output[3] |= ((bcdhigh & 1) << 4) | ((bcdlow & 1) << 3); + bcdlow = datetime.time.second % 10; + bcdhigh = datetime.time.second / 10; + output[0] |= ((bcdhigh & 8) >> 2) | ((bcdlow & 8) >> 3); + output[1] |= ((bcdhigh & 4) >> 1) | ((bcdlow & 4) >> 2); + output[2] |= ((bcdhigh & 2) << 0) | ((bcdlow & 2) >> 1); + output[3] |= ((bcdhigh & 1) << 1) | ((bcdlow & 1) << 0); + break; + case dateasbcdvertical: + /* the date is converted to BCD, the digits are displayed in + * columns */ + output[0] = 0; + output[1] = 0; + output[2] = 0; + output[3] = 0; + bcdlow = datetime.date.dayofmonth % 10; + bcdhigh = datetime.date.dayofmonth / 10; + output[0] |= ((bcdhigh & 8) << 4) | ((bcdlow & 8) << 3); + output[1] |= ((bcdhigh & 4) << 5) | ((bcdlow & 4) << 4); + output[2] |= ((bcdhigh & 2) << 6) | ((bcdlow & 2) << 5); + output[3] |= ((bcdhigh & 1) << 7) | ((bcdlow & 1) << 6); + bcdlow = datetime.date.month % 10; + bcdhigh = datetime.date.month / 10; + output[0] |= ((bcdhigh & 8) << 1) | ((bcdlow & 8) << 0); + output[1] |= ((bcdhigh & 4) << 2) | ((bcdlow & 4) << 1); + output[2] |= ((bcdhigh & 2) << 3) | ((bcdlow & 2) << 2); + output[3] |= ((bcdhigh & 1) << 4) | ((bcdlow & 1) << 3); + bcdlow = datetime.date.year % 10; + bcdhigh = datetime.date.year / 10; + output[0] |= ((bcdhigh & 8) >> 2) | ((bcdlow & 8) >> 3); + output[1] |= ((bcdhigh & 4) >> 1) | ((bcdlow & 4) >> 2); + output[2] |= ((bcdhigh & 2) << 0) | ((bcdlow & 2) >> 1); + output[3] |= ((bcdhigh & 1) << 1) | ((bcdlow & 1) << 0); + break; + case timestamp: + /* compute the UNIX-Timestamp. This function is based on http://www.mulder.franken.de/ntpdcfledclock/ */ + ts = TS01012000 + SECONDSINADAY; /* 2000 was leap year */ + ts += SECONDSINADAY * datetime.date.year * 365; + /* Now account for the leap years. Yes, 2000 was a leap year too. */ + ts += SECONDSINADAY * ((datetime.date.year - 1) / 4); + ts += SECONDSINADAY * monthstarts[datetime.date.month - 1]; + if (((datetime.date.year % 4) == 0) && (datetime.date.month > 2)) { + /* We are in a leap year and past february */ + ts += SECONDSINADAY; + } + ts += SECONDSINADAY * (datetime.date.dayofmonth - 1); + ts += 3600UL * datetime.time.hour; + ts += 60 * datetime.time.minute; + ts += datetime.time.second; + + output[0] = (ts >> 24); + output[1] = (ts >> 16); + output[2] = (ts >> 8); + output[3] = (ts >> 0); + break; + default: + break; + } +} // function setOutput + +/** + * Sets the output to a running light. This is used when no valid time can be + * displayed. + */ +void setWaiting(void) { + static uint8_t position = 0; + output[0] = 0; + output[1] = 0; + output[2] = 0; + output[3] = 0; + if (position < 8) { + output[0] = (1 << position); + } else if (position == 8) { + output[1] = 128; + } else if (position == 9) { + output[2] = 128; + } else if (position == 18) { + output[2] = 1; + } else if (position == 19) { + output[1] = 1; + } else { + output[3] = (128 >> (position - 10)); + } + position++; + if (position > 19) { + position = 0; + } +} // function setWaiting + +/** + * Timer interrupt function. This is called on every timer-interrupt (which + * happens 488 times per second. + */ +void timerInterrupt(void) { + dcf_datetime datetime; /** takes the current time and date */ + static uint8_t tickcounter; /** internal tick, is incremented with every timer-loop */ + static uint8_t keycounter = 0; /** used to defeat bouncing buttons */ + static uint8_t demomodecounter = 0; /** used to switch to demo mode */ + static uint8_t modeswitched = 0; /** set when the mode has been switched, displays bars to indicate the new mode. */ + + tickcounter++; + + /* on every second interrupt, check the state of the DCF-signal */ + if (tickcounter % 2) { + if ((PINC & (1 << PINC0))) { + // signal high + dcf_signal(True); + PORTC |= (1 << PINC1); + } else { + // signal low + dcf_signal(False); + PORTC &= ~(1 << PINC1); + } + } + + /* on every 32nd interrupt, check if the key is pressed. After 5 loops with + * a pressed key, switch to the next display-mode. */ + if (tickcounter % 32 == 0) { + if (!(PINC & (1 << PINC2))) { + // key pressed + keycounter++; + if (keycounter > 4) { + // after 4 cycles with pressed key, switch to the next mode + keycounter = 0; + mode++; + if (mode > timestamp) { + mode = timeasbinary; + } + modeswitched = 5; + } + demomodecounter++; + if (demomodecounter > 75) { + // after 75 cycles with pressed key, switch to or from demo mode + if (demomode == 0) { + demomode = 1; + mode = timeasbinary; + output[0] = 255; + output[1] = 255; + output[2] = 255; + output[3] = 255; + } else { + demomode = 0; + mode = timeasbinary; + output[0] = 255; + output[1] = 129; + output[2] = 129; + output[3] = 255; + } + setLeds(); + demomodecounter = 0; + } + } else { + // key unpressed + keycounter = 0; + demomodecounter = 0; + } + } + + /* on every 128th interrupt (about 4 times per second), check if anything + * new has to be displayed. */ + if (tickcounter % 128 == 0) { + if (demomode == 1) { + // set the current date and time to a fixed value to demonstrate + // how the time is displayed + datetime.is_valid = 1; + datetime.time.hour = 10; + datetime.time.minute = 35; + datetime.time.second = 10; + datetime.date.dayofmonth = 30; + datetime.date.month = 12; + datetime.date.year = 6; + datetime.date.dayofweek = 6; + } else { + datetime = dcf_current_datetime(); + } + if (modeswitched > 0) { + output[0] = mode + 1; + output[1] = mode + 1; + output[2] = mode + 1; + output[3] = mode + 1; + modeswitched--; + } else if (datetime.is_valid) { + setOutput(datetime); + } else { + setWaiting(); + } + /* finally, set the output */ + setLeds(); + } +} // function timerInterrupt + +/** + * Main-function. Initializes the hardware and starts the main loop of the + * application. + * \return An integer. Whatever... :-) + */ +int main(void) { + uint8_t i; + + /* set a default display-mode */ + mode = timeasbinary; + + /* intialize ports */ + DDRC = (1 << DDC1); // set pin 1 to output + PORTC = (1 << PC1) | (1 << PC2); // activate pullups on pins 1 and 2 + + /* initialize SAA1064 on i2c-bus */ + led_init(); + set_led_brightness(1); + for (i = 0; i <= 3; i++) { /* switch off all connected LEDs */ + set_led_digit(i, 0); + } + + /* initialize DCF77 */ + dcf_init(); + + /* initialize timer */ + TCCR0 = (0 << CS02) | (1 << CS01) | (0 << CS00); // set divider to 8. + /* The interrupt is called every 8*256 CPU-cycles, at 1MHz we get 488 + * calls per second. DCF_RATE in dcftime.h has to be set according to + * this value. */ + sei(); + + while (1) { /* main event loop */ + if (TIFR & (1 << TOV0)) { + TIFR |= 1 << TOV0; /* clear pending flag */ + timerInterrupt(); + } + } + return 0; +} diff --git a/firmware/saa1064.c b/firmware/saa1064.c new file mode 100644 index 0000000..a2e427a --- /dev/null +++ b/firmware/saa1064.c @@ -0,0 +1,130 @@ +/** + * \file saa1064.c + * \brief I2C-connection to the SAA1064 LED-driver + * \author Ronald Schaten + * \version $Id: saa1064.c,v 1.1 2007/01/02 21:30:40 rschaten Exp $ + * + * License: See documentation. + */ + +/* based on http://www.mulder.franken.de/ntpdcfledclock/ */ + +#include +#include +#include "saa1064.h" + +/* The Port used for the connection */ +#define LEDPORT PORTC +#define LEDPIN PINC +#define LEDDDR DDRC + +/* Which pins of the port */ +#define SDAPIN PC4 +#define SCLPIN PC5 + +/* the I2C addresses of the SAA 1064 LED drivers */ +#define SAA_AD1 0x70 // or 0x76? + +#define I2C_READ 0x01 +#define I2C_WRITE 0x00 + +/* Should be at least 27 (80 / 3) at 8 MHz */ +/* This was the conservative value used for testing. However, half as much should work as well. */ +#define DELAYVAL 3 + +void led_init(void) { + /* activate pullups */ + LEDPORT |= (1 << SCLPIN) | (1 << SDAPIN); +} + +/* Send START, defined as high-to-low SDA with SCL high. + * Expects SCL and SDA to be high already! + * Returns with SDA and SCL low. */ +static void I2C_start(void) { + /* Change to output mode. */ + LEDDDR |= (1 << SDAPIN) | (1 << SCLPIN); + /* change SDA to low */ + LEDPORT &= ~(1 << SDAPIN); + _delay_loop_1(DELAYVAL); + /* and SCL too */ + LEDPORT &= ~(1 << SCLPIN); + _delay_loop_1(DELAYVAL); +} + +/* Send STOP, defined as low-to-high SDA with SCL high. + * Expects SCL and SDA to be low already! + * Returns with SDA and SCL high. */ +static void I2C_stop(void) { + /* Set SCL */ + LEDPORT |= (1 << SCLPIN); + _delay_loop_1(DELAYVAL); + /* Set SDA */ + LEDPORT |= (1 << SDAPIN); + _delay_loop_1(DELAYVAL); + /* Probably safer to tristate the bus */ + LEDDDR &= ~((1 << SDAPIN) | (1 << SCLPIN)); +} + +/* Transmits the byte in what. + * Returns 1 if the byte was ACKed, 0 if not. + * Expects SCL and SDA to be low already! + * Returns with SDA and SCL low. */ +static uint8_t I2C_transmit_byte(uint8_t what) { + uint8_t i; + for (i = 0; i < 8; i++) { + /* First put data on the bus */ + if (what & 0x80) { + LEDPORT |= (1 << SDAPIN); + } + _delay_loop_1(DELAYVAL); + /* Then set SCL high */ + LEDPORT |= (1 << SCLPIN); + _delay_loop_1(DELAYVAL); + /* Take SCL back */ + LEDPORT &= ~(1 << SCLPIN); + _delay_loop_1(DELAYVAL); + /* And SDA too */ + LEDPORT &= ~(1 << SDAPIN); + _delay_loop_1(DELAYVAL); + what <<= 1; + } + /* OK that was the data, now we read back the ACK */ + /* We need to tristate SDA for that */ + LEDPORT |= (1 << SDAPIN); + LEDDDR &= ~(1 << SDAPIN); + /* Give the device some time */ + _delay_loop_1(DELAYVAL); + _delay_loop_1(DELAYVAL); + _delay_loop_1(DELAYVAL); + /* Then set SCL high */ + LEDPORT |= (1 << SCLPIN); + _delay_loop_1(DELAYVAL); + _delay_loop_1(DELAYVAL); + _delay_loop_1(DELAYVAL); + i = LEDPIN & (1 << SDAPIN); /* Read ACK */ + /* Take SCL back */ + LEDPORT &= ~(1 << SCLPIN); + _delay_loop_1(DELAYVAL); + /* No more tristate, we pull SDA again */ + LEDPORT &= ~(1 << SDAPIN); + LEDDDR |= (1 << SDAPIN); + _delay_loop_1(DELAYVAL); + return (i == 0); +} + +void set_led_digit(uint8_t digit, uint8_t val) { + I2C_start(); + /* Address device */ + I2C_transmit_byte(SAA_AD1 | I2C_WRITE); + I2C_transmit_byte((digit & 3) + 1); /* Address Digit Register on device */ + I2C_transmit_byte(val); /* Send value for Digit */ + I2C_stop(); +} + +void set_led_brightness(uint8_t led_brightness) { + I2C_start(); + I2C_transmit_byte(SAA_AD1 | I2C_WRITE); /* Address first driver */ + I2C_transmit_byte(0); /* Address Config Register on device */ + I2C_transmit_byte(((led_brightness & 0x07) << 4) | 0x07); /* Send Settings */ + I2C_stop(); +} diff --git a/firmware/saa1064.h b/firmware/saa1064.h new file mode 100644 index 0000000..c37e06f --- /dev/null +++ b/firmware/saa1064.h @@ -0,0 +1,27 @@ +#ifndef _SAA1064_H_ +#define _SAA1064_H_ + +/** + * \file saa1064.h + * \brief I2C-connection to the SAA1064 LED-driver + * \author Ronald Schaten + * \version $Id: saa1064.h,v 1.1 2007/01/02 21:30:40 rschaten Exp $ + * + * License: See documentation. + */ + +/* based on http://www.mulder.franken.de/ntpdcfledclock/ */ + +/* This sets one digit on the LED module. + * digit is the number of the digit (0 - 7) + * val is a bitfield that contains the values to set. */ +void set_led_digit(uint8_t digit, uint8_t val); + +/* Configures the brightness of the LED module, or rather: the current the driver allows through them. + * The values 0 through 7 can be used, corresponding to 0 through 21 mA */ +void set_led_brightness(uint8_t led_brightness); + +/* Initialize the LED module... This basically enables the pullups on the I2C Bus pins */ +void led_init(void); + +#endif