HI2GV6DLNHD6NM7RKJE3ZHQEYZ7XKLBAFW2J6TOGSXGIH36KA6TQC 65T24LBYMONUHBZRVPUD77HUY4XEU52ACQRJ2TTDOB3T2HR3SEGQC DAFBHG6P6VAUTCNTASDEKOT5HBPNKBNNUYBCOXYTNWF7AUZQJZNAC LXYMWMIKQQB72UHTH36WZ6UC4RMFVGDVYQPRQK4SHQBRODJITNVQC 4WIIORMS2ZAXS4MQWVL7KJOHPTSL6I6HPMZSRTHS4BORZK3YJEXQC WEEZXA4LOPHXM4TPZL4LF2GNEPZI43GGHGQXAOO3WNQIPKKMXVDQC 44ZTZPHJ2VJR2E3NYTQ676L35BADTOKULSHJC75OQE7REL65GKEQC SFAUXNNSRFQHRYJR2ZGQJLPYRAEXS3QFBE3WKHICI5SVG4CC3D6QC PJBD4JUU4HRT2576BK32L5TR36XQ77DIGPKHPKP7OH6HJ64NZ7KQC Debouncing -> SyncEdgeDetect;Debouncing -> AsyncEdgeDetect;Filtering -> SyncEdgeDetect;Filtering -> AsyncEdgeDetect;
Debounced -> SyncEdgeDetect;Debounced -> AsyncEdgeDetect;Filtered -> SyncEdgeDetect;Filtered -> AsyncEdgeDetect;
label = "Asynch = True";AsyncLevelDetect [color=green];}Filtering -> AsyncLevelDetect;Filtering -> SyncLevelDetect;}subgraph cluster_NMISense {label = "NMISense = None, Rise, Fall, Both, High, Low";node [shape=box,style=filled,color=purple];subgraph cluster_NMISense_edgedetect {label = "NMISense = Rise, Fall, Both";NMIEdgeDetect;
label = "Asynch = True, False";LevelDetect [color=green];
subgraph cluster_NMISense_leveldetect {label = "NMISense = High, Low";subgraph cluster_NMISense_leveldetect {label = "Asynch = False";NMILevelDetect;}subgraph cluster_NMISense_leveldetect_async {label = "Asynch = True";NMILevelDetectAsync;}}NMIFiltering;
Filtered -> LevelDetect;Filtered -> LevelDetect;
WithClock -> Filtering;WithClock -> Debouncing;WithClock -> SyncEdgeDetect;WithClock -> AsyncEdgeDetect;WithClock -> SyncLevelDetect;WithClock -> AsyncLevelDetect;WithClock -> NMILevelDetect;WithClock -> NMIEdgeDetect;WithClock -> NMIFiltering;
WithClock -> Filtered;WithClock -> Debounced;WithClock -> Normal;WithClock -> AsyncOnly;Normal -> SyncEdgeDetect;AsyncOnly -> AsyncEdgeDetect;Normal -> LevelDetect;AsyncOnly -> LevelDetect;
}}subgraph cluster_nmiextint {label = "NmiExtInt";subgraph cluster_withclock_nmi {style=filled;label = "WithClock";WithClockNmi [color=red];subgraph withclock {node [style=filled,color=gray];}WithClockNmi -> NMIFiltered;}subgraph cluster_withoutclock_nmi {node [shape=box,style=filled,color=green];style=filled;label = "WithoutClock";WithoutClockNmi;subgraph withoutclock {node [style=filled,color=gray];}
subgraph cluster_filtering {label = "Filtering = On";NMIFiltered [color=purple];}subgraph cluster_NMISense {label = "NMISense = None, Rise, Fall, Both, High, Low";node [shape=box,style=filled,color=purple];subgraph cluster_NMISense_edgedetect {label = "NMISense = Rise, Fall, Both";NMIEdgeDetect [color=purple];WithClockNmi -> NMIEdgeDetect;NMIFiltered -> NMIEdgeDetect;}subgraph cluster_NMISense_leveldetect {label = "NMISense = High, Low";subgraph cluster_NMISense_leveldetect {label = "Asynch = False";NMILevelDetect [color=purple];WithClockNmi -> NMILevelDetect;NMIFiltered -> NMILevelDetect;}subgraph cluster_NMISense_edgedetect_async {label = "Asynch = True";NMIEdgeDetectAsync [color=purple];WithoutClockNmi -> NMIEdgeDetectAsync;}}}