wenn du nicht unsigned int
geschrieben hättest, sondern uint8_t oder byte, wäre dein Code gut (genug, für 2 BCD Digits )
Weil der Compiler dein *16 richtig ( als shift Operation ) versteht.
Ansonsten ist dein Code das Gegenstück zu meinem
return (ram>>4)*10 + ram&0x0f;
BCDEncode ist auch für Maschinen geeignet, bei denen ein int
ein beliebiges Vielfaches von 8 bit groß ist.
In einer RTC Library ist das natürlich "Kunst" ( sonst könnte es weg ).
Aber generell hat MueThoS Recht, ein DCF-Shield braucht (am einfachsten) auch eine RTC, damit man nach Reset keine 2-3 Minuten oder länger warten muss, bis man die Zeit lesen kann.
Würde mich übrigens theoretisch interessieren, wie man einen Sekunden-Puls auf die richtige Millisekunde genau synchronisiert kriegt, und wer (GPS ?) einem das bestätigen kann ?
Ohne solche Anforderung ist die DS1307+DCF Kombi allemal genau genug, schätze ich.