Bei den Mikrocontrollern der Atmel SAM-D21-Serie verwenden viele Peripheriegeräte einen Takt, der asynchron zum Haupt-CPU-Takt ist, und der Zugriff auf diese Peripheriegeräte muss über eine Synchronisationslogik erfolgen. Bei Peripheriegeräten, deren Takt im Verhältnis zur CPU-Zeit langsam ist, kann dies zu sehr großen Verzögerungen führen. Wenn die RTC beispielsweise für die Verwendung eines 1024-Hz-Takts konfiguriert ist (wie es die Entwurfsabsicht zu sein scheint) und die CPU mit 48 MHz läuft, führt das Lesen des Registers "Aktuelle Zeit" dazu, dass die Buslogik mehr als 200.000 Wartezustände einfügt (mindestens) von fünf Zyklen des 1024-Hz-Takts). Obwohl es möglich ist, dass die CPU eine Leseanforderung ausgibt, einen anderen nicht verwandten Code ausführt und mehr als 200.000 Zyklen später zurückgibt, um die Zeit abzurufen, scheint es keine Möglichkeit zu geben, die Zeit tatsächlich schneller zu lesen.
Nach meinem Verständnis der Synchronisation verzögert eine Einzelbit-Synchronisationsschaltung ein Signal um 2-3 Zyklen des Zieltakts. Das Synchronisieren einer Multi-Bit-Menge ist etwas schwieriger, aber es gibt verschiedene Ansätze, die ein zuverlässiges Verhalten innerhalb von fünf Zyklen des Zieltakts gewährleisten können, wenn dieser schneller als der Quellentakt ist, und nur wenige Zyklen mehr, wenn dies nicht der Fall ist. Was würde der Atmel SAM-D21 tun, das sechs Zyklen in der Quellentaktdomäne für die Synchronisation erfordern würde , und welche Faktoren würden ein Design begünstigen, dessen Synchronisationsverzögerungen so lang genug sind, dass ein Interrupt "Synchronisation durchgeführt" erforderlich ist, im Vergleich zu einem, der dies sicherstellt Synchronisationsverzögerungen sind kurz genug, um solche Interrupts unnötig zu machen?