== Download ==
=== SW V0.10 ===
Hier eine '''Vorabversion''' des Projektes:

[[Datei:Wordclock-0.10.zip]]

Bitte README.txt lesen!

Änderungen:
* abschaltbares "ES IST" via Sprach-Wahl-Taste für beide deutsche Front Designs 
** (übernommen von wichtel - aber Reihenfolge geändert -> Handbuch)
* Bootloader Support:
**Wenn 'R' über die UART empfangen wird, wird ein Watchdog-Reset ausgelöst.
**Der Watchdog wird direkt nach Systemstart deaktiviert.
* Indikator für Zeiteingabe definiert -> blinkendes 'Uhr', wenn keine Mintenwörter aktiv
* Helligkeit für Nachtstunden bei Zeiteingabe reduziert.
* Sicherung des Hauptmodus (Einfarb-, Farbwechsel- und Pulse-Modus) und des aktiven Farbprofils im EEPROM
* BAUD_ERROR Makro aktualisiert
* atmega88 Konfiguration entfernt
* DCF77 geändert, zwei erfolgreich empfangene Frames vor Zeitübernahme notwendig
* IRMP-Version 1.7.2:
** Bugfix: Timeout vor NEC repetition frames um "Geister-Kommandos" zu vermeiden
** einige weniger wichtige Protokolle hinzugefügt
* gefixt BUG09_018 (Zeitupdate während Zeiteingabe beinträchtigt Anzeige)
* gefixt BUG09_019 (gemeldet von Wichtel) ("Gesiter-Kommandos" siehe neue IRMP-Version)
* gefixt BUG09_020 (gemeldet von Roman) DCF-Initialisierung <=6 anstatt <=7
* gefixt BUG09_021 (Ambilight in SW an OUTG2 anstatt OUTG1)
* gefixt Fehler der in Mono-Color-Variante: zurückschalten in Normal-Mode forciert kein Display-Update


----

=== ältere Versionen ===

==== SW V0.9 ====
Hier eine '''Vorabversion''' des Quellcodes zum Projekt:

[[Datei:Wordclock-09.zip]]

Bitte README.txt lesen!


zusätzliche Features:
* Unterstützung für neue (3 sprachige) deutsche Front
* Unterstützung für TIX-Clock
* kurze Anzeige von Submodi (Farbprofilauswahl, Sprachvariante)
* Helligkeits-Offset wird abgespeichert
* 24h Zeiteingabe (8-20Uhr: hell, 20-8Uhr: dunkel)
* Standardeeprom-Werte im Flash
* Ein/Aus-Schalt-Zeiten
* Pulsierender Modus
* neue IRMP-Version

Das Benutzerhandbuch kann auch als doc / docx geladen werden:

[[Datei:WordClock_Benutzerhandbuch.zip]]

Die wichtigsten Einstellungen können in der Main.h geändert werden.

''Anmerkung: die vorkompilierten Hexfiles enthalten die 3-sprachig-deutsche Version. Wer noch eine alte Frontplatte hat, muss das Binary nach Ändern der Konfiguration (in der main.h) selbst kompilieren.''

===== Bugfixes =====
Zum Anwenden der .patch-Files gibt es das patch-Tool, das mit dem AVR-GCC kommt und von der Kommandozeile aus erreichbar ist. Manual-Page zu patch: [http://linux.die.net/man/1/patch hier].
* V0.9 Patch 1 ([[Media:BUG09_008_hourbug_display_wc_ger3.c.patch|Patchfile]])
** fixt BUG09_008 (falsche Zeitanzeige)
** Hexfiles:
*** dreisprachige Front: [[Datei:wordclock_V0.9_Patch_1_ger3_mega168.hex]]
*** alte zweisprachige Front: [[Datei:wordclock_V0.9_Patch_1_ger_mega168.hex]]
* V0.9 Patch 2 ([[Media:BUG09_010_hourbug_display_wc_ger3.c.patch|Patchfile]] - basierend auf vorherigen patches)
** fixt BUG09_010 (EIN <-> EINS)
** Hexfiles (enthalten vorherige Patches)
*** dreisprachige Front: [[Datei:wordclock_V0.9_Patch_2_ger3_mega168.hex]]
*** alte zweisprachige Front: [[Datei:wordclock_V0.9_Patch_2_ger_mega168.hex]]
* V0.9 Patch 3 ([[Media:V0.9_patch3.patch|Patchfile]] - basierend auf vorherigen patches)
** fixed BUG09_009 (crashes after IR-Kommands) 
** fixed BUG09_011 (training bug)
** fixed BUG09_012 (casing on include usermodes.c)
** fixed BUG09_013 (1:00 - 1:04  and 1:05-1:09  's')
** fixed BUG09_014 (brightness control does not work after setting time)
** fixed wrong command handler in display_x-header
** fixed default values for color profiles
** extracted inits of states from user_init to own routine in usermodes.c
** Hexfiles:
*** dreisprachige Front: [[Datei:wordclock_V0.9_Patch_3_ger3_mega168.hex]]
*** alte zweisprachige Front: [[Datei:wordclock_V0.9_Patch_3_ger_mega168.hex]]
* V0.9 Patch 4 ([[Media:BUG09_015_BUG09_016.patch|Patchfile]] - basierend auf vorherigen patches, [[Media:wcFirmware_v0.9_patch4.zip|komplette Sourcen]])
** fixed BUG09_015 (after enter OnOff-Time no further action is possible)
** fixed BUG09_016 (last Ir-Command is ignored in training)
** Hexfiles (enthalten vorherige Patches)
*** dreisprachige Front: [[Datei:wordclock_V0.9_Patch_4_ger3_mega168.hex]]
*** alte zweisprachige Front: [[Datei:wordclock_V0.9_Patch_4_ger_mega168.hex]]
* V0.9 Patch 5 ([[Media:DCF77_BUG09_017.patch|Patchfile]] - basierend auf vorherige Patches)
** fixed BUG09_017 (set second to 0, when new DCF77 time will take over - prevent a minute jump)
==== V0.8 ====
[[Datei:Wordclock-08-src.zip]]
Bitte 00README.txt lesen!
----
=== Bugs ===
;[bestätigt] 
: der Bug konnte von den Entwicklern reproduziert werden
;[gefixt] 
: der Bug wurde bereits gefixt, der Fix ist aber in noch keinem Release enthalten.
;<span style="color:#006f00;">[gefixt - Vx.y] </span> 
: der Bug wurde in Version x.y gefixt
;<span style="color:#8f8f8f;"><s>[widerlegt]</s></span> 
: der Bug konnte nicht bestätigt werden, oder es wurde eine andere Ursache gefunden

==== Version 0.8 ====
* <span style="color:#006f00;">BUG08_001 - [bestätigt] [gefixt - V0.9]
** Helligkeitssteuerung per FB funktioniert nicht richtig</span> 
* BUG08_002 - [bestätigt]
** Helligkeitssteuerung per LDR funktioniert nicht richtig
** [Ergänzt 22.5.10 von Wichtel] In pwm.c wird pwm_idx innerhalb pwm_set_brightness_step() falsch normiert:
**     pwm_idx % MAX_PWM_STEPS; ersetzen durch:
**     else if (pwm_idx >= MAX_PWM_STEPS ) pwm_idx = MAX_PWM_STEPS - 1;
* <span style="color:#006f00;">BUG08_003 - [bestätigt] [gefixt - V0.9]
** OUT23 wird immer mit OUTL1 geschalten</span> 
* <span style="color:#006f00;">BUG08_004 - [bestätigt] [gefixt - V0.9]
** Helligkeitssteuerung: geänderter Wert wird nicht gespeichert
** nach Power-ON-Reset immer 100%</span> 
* <span style="color:#8f8f8f;"><s>BUG08_005</s> [widerlegt] (Fehler lag woanders)
** die Kommandos der FB gehen nach einem Power-ON-Reset manchmal verloren</span> 
* <span style="color:#8f8f8f;"><s>BUG08_006 (reportet von panik)</s> [widerlegt] (Fehler lag woanders)
** Die Uhr zeigt nach mehr als 10 Stunden Betrieb für wenige Minuten ein falsches Word mit halber Helligkeit (auf und abschwellend) an.
** Anzeige korrekt: FÜNF NACH DREI (Ossi-Modus ist permanent aktiv)
** jetzt beginnt zusätzlich das Word VIERTEL zu leuchten (halber Helligkeit auf und abschwellend)
** Nach wenigen Minuten ist wieder alles normal.</span> 
* <span style="color:#8f8f8f;"><s>BUG08_007</s> [widerlegt] (Fehler lag woanders)
** nach mehr als 12 Stunden Betrieb oft zusätzliche Anzeige der Wörter VIERTEL und NACH (jetzt mit voller Helligkeit bis zum nächsten Bildwechsel)
** z.B 20:15 Uhr --> Anzeige: ES IST VIERTEL NACH NEUN (Ossimodus aktiv)
** 20:05 Uhr --> Anzeige: ES IST FÜNF VIERTEL NACH ACHT(Ossimodus aktiv)
** 09:35 Uhr --> Anzeige: ES IST FÜNF VIERTEL NACH HALB ZEHN(Ossimodus aktiv)</span>

==== Version 0.9 ====
* <span style="color:#006f00;">BUG09_008 - [bestätigt] [gefixt V0.9 Patch 1]
** in der 3-sprachigen deutschen Frontplatte wird die Stunde wird in allen Sprachmodi 5min zu spät hochgezählt</span> 
** <span style="color:#006f00;">Der Fehler liegt in display_wc_ger3.c Zeile 127: das > muss durch ein >= ersetzt werden ([[Media:BUG09_008_hourbug_display_wc_ger3.c.patch|Patchfile]])</span>
* <span style="color:#006f00;">BUG09_009 - [bestätigt] [gefixt V0.9 Patch 3]
** nach Systemstart (nach Ende des Blinken) führt Betätigung des Einfarbmodus-Knopfes (-> Farbprofilwahl) zum Absturz
** Workaround: zuerst in anderen Modus wechseln (zB. Demo)</span> 
* <span style="color:#006f00;">BUG09_010 - [bestätigt] [gefixt V0.9 Patch 2] 
** Anzeige von EIN oder EINS vertauscht ('eins' wird angezeigt, wenn 'ein' dastehen; vice versa) bei 3 sprachiger Front</span> 
* <span style="color:#006f00;">BUG09_011 - [bestätigt] [gefixt V0.9 Patch 3]
** IR-Training - bei falsch erkannten Kommandos (falsche Adresse) wird trotzdem hochgezählt.</span> 
* <span style="color:#006f00;">BUG09_012 - [bestätigt] [gefixt V0.9 Patch 3]
**Der Compiler meint: user.c:164:23: error: userModes.c: No such file or directory - Sollte das nicht usermodes.c heißen?</span> 
* <span style="color:#006f00;">BUG09_013 (gemeldet von Wichtel) - [bestätigt] [gefixt V0.9 Patch 3]
** Anzeige von EIN und EINS im Bereich von 0-4 und 5-9 min vertauscht, Zeile 153 in display_wc_ger3.c (mit Patch 2) muss lauten:
** if((hour==1 || hour==13) && minutes==0){  // if "Es ist ein Uhr" <- remove 's' from "eins"</span> 
* <span style="color:#006f00;">BUG09_014 (gemeldet von Wichtel) - [bestätigt] [gefixt V0.9 Patch 3]
** Nach manueller Uhrzeiteinstellung keine Übernahme der manuell eingestellten Helligkeit, nach einmal Pulsmodus ein/aus wird sie wieder übernommen</span> 
* <span style="color:#006f00;">BUG09_015 (gemeldet von Wichtel) - [bestätigt] [gefixt V0.9 Patch 4]
**Nach einstellen von Ein/Ausschaltzeit keine Helligkeitssteuerung (Anmerkung von Vlad: -->BUG09_014), keine Modusumschaltung mehr möglich und keine Einblendung des Farbprofilnamens mehr</span> 
* <span style="color:#006f00;">BUG09_016 (gemeldet von Wichtel) - [bestätigt] [gefixt V0.9 Patch 4]
** Trainingsmodus erreicht letztes Kommando nicht, da curkey vor Schlussabfrage incrementiert wird.
** durch BUG09_011-fix entstanden</span>
* <span style="color:#006f00;">BUG09_017 (gemeldet von Wichtel) - [bestätigt] [gefixt V0.9 Patch 5]
** Uhr geht bis zu einer Minute vor, da die Sekunden durch DCF77-Empfang nicht beeinflusst werden, zur Abhilfe in dcf77.c als Zeile 379 einfügen: (die derzeitige Zeile 379 wird entsprechend nach unten geschoben)
**  DateTime_p->ss  = 0;</span>
* <span style="color:#000000;">BUG09_018 (gemeldet von Wichtel) - [bestätigt] [gefixt]
** Bei manueller Zeiteinstellung und abwarten des realen Minutenwechsels kehrt die Anzeige zur Uhrzeit zurück ohne den Einstellmodus zu beenden</span>
* <span style="color:#000000;">BUG09_019 (gemeldet von Wichtel)
** Zuletzt erfolgreich erkanntes Fernbedienkommando wird sporadisch mehrere Minuten nach dem letzten tatsächlichen Empfang erneut erkannt</span>
* <span style="color:#000000;">BUG09_020 (gemeldet von Roman) - [bestätigt] [gefixt]
** Fehler in der Initialisierung der DCF77 Struct. Zeile 106 muss wie folgt lauten:
**   for (i=0; i < 6; i++)</span>
* <span style="color:#000000;">BUG09_021 - [bestätigt] [gefixt]
** Ambilight ist in SW an OUTG2, anstatt OUTG1</span>



=== Flashen mittels Bootloader ===
Um den ATmega168 mit dem Fastboot von Peter Dannegger zu flashen, muss vorab das FastBoot.hex eingespielt werden. Ebenso muss dann die eFuse auf 0xF8 eingestellt werden.

Um dann später eine neue SW zu flashen, muss dann nur noch das neue Hexfile mittels FBOOT übertragen werden.

Im angehängten ZIP ist der FBOOT von Peter Dannegger und das HEX-File für den ATmega168 einfügt. '''>> [[Datei:WordClock_FastBoot.zip?]] <<'''

Ist diese einmal auf dem uC, kann jederzeit einfach über die serielle Schnittstelle (COM 1) mittels einem RS-232/TTL Pegelwandler die neue Firmware eingespielt werden.

'''Wichtig:''' FBOOT.exe und die neue Firmware müssen in einem Verzeichnis liegen. Dann kann mittels ''FBOOT /Pwordcl~1.hex'' geflasht werden. FBOOT kann nicht mit langen Dateinamen umgehen!

Ein '''bootloader-client''' für '''Linux''' ist [https://trac.fs.ei.tum.de/elektronik/browser/ventilator/userspace/lboot hier] zu finden. Credits: Bernhard Michler, Andreas Butti, [http://www.mikrocontroller.net/user/show/ad-rem ad-rem].

Bootloaden über Bluetooth wurde in diesem [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Post] erfolgreich implementiert, siehe auch [http://www.mikrocontroller.net/articles/Diskussion:Word_Clock_Variante_1 hier].

----
