Sui microcontrollori Atmel serie SAM-D21, molte periferiche utilizzano un clock asincrono rispetto al clock della CPU principale e gli accessi a queste periferiche devono passare attraverso la logica di sincronizzazione; su periferiche il cui clock è lento rispetto al tempo della CPU, questo può aggiungere dei ritardi davvero enormi. Ad esempio, se RTC è configurato per utilizzare un clock a 1024Hz (come sembra essere l'intenzione di progettazione) e la CPU funziona a 48Mhz, la lettura del registro "ora corrente" farà sì che la logica del bus inserisca oltre 200.000 stati di attesa (un minimo di cinque cicli dell'orologio a 1024Hz). Sebbene sia possibile fare in modo che la CPU generi una richiesta di lettura, esegua un altro codice non correlato e restituisca più di 200.000 cicli in seguito per recuperare il tempo, non sembra esserci alcun modo per leggere il tempo più velocemente.
Secondo la mia comprensione della sincronizzazione, un circuito di sincronizzazione a bit singolo ritarderà un segnale di 2-3 cicli del clock di destinazione; sincronizzare una quantità multi-bit è un po 'più difficile, ma ci sono una varietà di approcci che possono garantire un comportamento affidabile entro cinque cicli del clock di destinazione se è più veloce del clock sorgente e solo pochi cicli in più se non lo è. Cosa farebbe Atmel SAM-D21 che richiederebbe sei cicli nel dominio del clock di origine per la sincronizzazione, e quali fattori favorirebbero un progetto i cui ritardi di sincronizzazione sono così lunghi da richiedere un'interruzione "sincronizzazione eseguita" rispetto a quella che garantisce i ritardi di sincronizzazione sono abbastanza brevi da rendere superflue tali interruzioni?