Fråga : Rätten långt som genomför GPIO, har kontakt

Så vi behöver att göra två mikroprocessorer att tala till varje annan.  En är ett ledar-, och en är ett slav-, och vi önskar att överföra tillbaka den statliga strömmen från det slav- till det ledar- (e.g., init, ordnar till, upptaget, felet, etc.).  Vi figurerar det enklast långt att göra detta är med slättI/O (GPIO) fodrar precis, slav- mikrouppsättningar som one or more fodrar, ledar- mikroröstningar dem.  

So mycket, mycket lätt långt att göra den är varje klämmer fast indikerar en aktiv för state

Pin 0: Init
Pin 1 aktiv: Den Ready
Pin 2 aktivBusy
Pin 3 aktivet Error

However vi kunde fruktkonserven GPIO, genom att göra den med två inaktiv pins

Pin 0, att klämma fast inaktiv 1: Inaktiva Init
Pin 0, klämmer fast 1 aktiv: Den Ready
Pin 0 aktivet, klämmer fast inaktiv 1: Den Busy
Pin 0 aktivet, klämmer fast 1 aktiv: Error

Note detta använder två ben i stället för 4.  Emellertid I-funderare i understödjatekniken vi kör riskera av att fånga en övergång.  Till exempel de slav- försöken till övergången från INIT till FELET påstår, så det ändrar första klämmer fast från 0 till 1, då ändrar understödja klämmer fast från 0 till 1.  Emellertid om de ledar- röstningarna in - mellan de två ändringarna som det skulle, läs 01, eller 10, som är, ORDNAR TILL eller UPPTAGET och det, styrkan tar en dåliga action.

So svaret är antagligen att använda en third klämmer fast, som indikerar giltigheten av de andra tvåna.  De slav- uppsättningarna, som klämmer fast low, då gör ändringarna, då uppsättningarna det till kicken igen, menande de andra två bitarna är giltiga. skulle detta för

So tar tre ben, som är stillbilden besparingar över 4na krävde vid den första approach.
Can som, jag får en sanitykontroll på allt denna?  Understödja att närma sig är helst, högert, provided vi använder extrahjälpen klämmer fast teknik?  Det är den nödvändiga rätten?

Thanks för någon thoughts.
" klar "

Svar : Rätten långt som genomför GPIO, har kontakt

Du nätt fås mycket det exakt som är högert, men att sätta det litet olikt för dig:

1) Din första föreslagna metod låter dig uppehället spåra av fyra åtskilda ”variabler”, varje som är kompetent att ta på en av olika två, värderar (kicken eller lowen). Detta använder fyra ben, och det finns 16 som möjligheten påstår av ditt bussar fodrar.

2) Ditt understödja den föreslagna metoden låter dig uppehället spåra av en singel ”variabel” som kan ta på en av olika fyra värderar (00, 01, 10 eller 11). Det finns 4 som möjligheten påstår till ditt bussar fodrar.

Från vad du beskrev, metoden #2 passar ditt ämnar bättre. Om du gör den #1en långt, du ska har en bussa att fodra som har 16 som, möjligheten värderar, men endast 4 av möjligheten 16 värderar har any menande till dig (0001, 0010, 0100 och 1000). Allt annars är ogiltigt. Så att är ett förloradt av resurser. Det är varför dig räddningen bitar för en koppla ihop, genom att göra den metoden #2 långt.

Nu viktig sak som ska noteras, är att ingen materia som metoden dig använder, #1, ELLER #2, dig ska har alltid ”det instabila statligt” att utfärda. Det finns alltid den infinitesimal tidsperiod, när det ledar- ändrar värdera på bussa fodrar, och om det slav- läser på det, avkräver ögonblick som det ska får en oriktig läsning.

Du som är föreslagen ”en synkronisering, tar tid på bet” som både styra och slava aktien. Du kallade denna som giltigheten bet. Ta tid på bet är fastställd vid det ledar-, och läst av det slav-. Det ledar- ser till att det på resningen kantar av ta tid på som värdera på databitarna är stabil. Det slav- vet för att läsa databitarna, när endast ta tid på går kicken. Detta kan göras direkt i maskinvara på den jämna signalera (e.g. en verilog eller en VHDL går runt programmerat på en FPGA), eller du kan göra den på ett högre jämnt (e.g. en mikroprocessornågot liknande som en Altera stiger ombord, som har ett kastat maskinvarumellanjobb, då den synkronisering bet går kicken).

Så i stort jag funderare dig är fullständigt korrekt, realiserar precis dig stilla sparat 2 gpioben, inte precis 1, därför att om även du gjorde det första långt, du skulle fortfarande behov som synkroniseringen tar tid på bet.
Andra lösningar  
 
programming4us programming4us