Frage : Rechte Weise, GPIO Schnittstelle einzuführen

So müssen wir zwei Mikroprozessoren herstellen, miteinander zu sprechen.  Eins ist ein Meister und man ist ein Sklave, und wir möchten die gegenwärtige Lage vom Sklaven zum Meister (z.B., init, bereites, beschäftigtes, Störung, usw.) zurückschicken.  Wir stellen dar, dass die einfachste Weise, dies zu tun mit gerade normalen Linien Input-/Output(GPIO), Sklavenmikrosätze eine oder mehrere Linien, Hauptmikroabstimmungen sie ist.  das

So sehr, sehr leichte Art, sie zu tun ist jeder Stift anzeigt einen state

Pin 0 Active: Init
Pin 1 Active: Ready
Pin 2 aktives Busy
Pin 3 aktives Error

However könnten wir GPIO konservieren, indem wir es mit zwei dem pins

Pin 0 unaktiviert taten, unaktivierter Pin 1: Init
Pin 0 unaktiviert, Pin1 Active: Ready
Pin 0 Active, Pin 1 unaktiviert: Busy
Pin 0 Active, Pin1 Active: Error

Note dieses benutzt zwei Stifte anstelle von 4.  Jedoch denke ich in der zweiten Technik, die wir das Risiko des Verfangens eines Überganges eingehen.  Z.B. ändert die Sklavenversuche zum Übergang von INIT zu den STÖRUNGS-Zuständen also -ihm den ersten Stift von 0 bis 1, dann ändert den zweiten Stift von 0 bis 1.  Jedoch wenn die Vorlagenabstimmungen zwischen den zwei Änderungen es 01 lesen würden, oder 10, das BEREIT oder BESCHÄFTIGT ist, und es konnte ein schlechtes action.

So nehmen, welches die Antwort vermutlich, einen dritten Stift zu benutzen ist, der die Gültigkeit der anderen zwei anzeigt.  Die Sklavensätze, die Tief feststecken, dann nimmt die Änderungen vor, dann stellt sie auf Höhe wieder ein und bedeutet, dass die anderen zwei Bits gültig sind.

So dieses würde drei Stifte nehmen, das noch Sparungen über den 4 ist, die durch das erste approach.

Can erfordert werden, das, ich einer Vernunftsüberprüfung auf alles dieses erhalte?  Die zweite Annäherung ist vorzuziehend, recht, vorausgesetzt wir die Extrastifttechnik verwenden?  Das ist notwendiges Recht?

Thanks für irgendein thoughts.

Antwort : Rechte Weise, GPIO Schnittstelle einzuführen

Ihnen werden es ziemlich genau genau recht, aber, es für Sie etwas anders als zu setzen erhalten:

1) Ihr erstes schlug vor, dass Methode Sie vier getrennte „Variablen“ im Auge behalten lässt, jedes, das fähig ist, auf einem von zwei verschiedenen Werten zu nehmen (hoch oder Tief). Dieses benutzt vier Stifte und es gibt 16 mögliche Zustände Ihrer Buslinie.

2) Ihr zweites schlugen vor, dass Methode Sie eine einzelne „Variable“ im Auge behalten lässt, die auf einem von vier verschiedenen Werten (00, 01, 10 oder 11) nehmen kann. Es gibt 4 mögliche Zustände zu Ihrer Buslinie.

Von, was Sie beschrieben, Klagen der Methode #2 Ihre Zwecke besser. Wenn Sie es die Weise #1 tun, haben Sie eine Buslinie, die 16 mögliche Werte hat, aber nur 4 der möglichen 16 Werte haben jede mögliche Bedeutung zu Ihnen (0001, 0010, 0100 und 1000). Alles anderes ist unzulässig. Damit ein Abfall der Betriebsmittel ist. Das ist, warum Sie Spitzen eines Paares speichern, indem Sie es die Weise der Methode #2 tun.

Jetzt ist die wichtige zu merken Sache dass gleichgültig, das Methode Sie, #1 benutzen, ODER #2, Sie immer die Ausgabe „des instabilen Zustandes“ hat. Es gibt immer diese winzige Zeitmenge, als der Meister den Wert auf der Buslinie ändert, und wenn der Sklave an diesem genauen Moment liest, erhält er einen falschen Messwert.

Sie schlugen ein „Synchronisieren des gebissenen Taktgebers“ vor, den Meister und Sklave teilen. Sie nannten dieses die Gültigkeitsspitze. Die Taktgeberspitze wird durch den Meister eingestellt und gelesen vom Sklaven. Der Meister garantiert, dass nach der steigenden Flanke des Taktgebers der Wert auf den Informationsbits beständig ist. Der Sklave weiß, um die Informationsbits zu lesen, nur wenn der Taktgeber auf HI geht. Dieses kann direkt in der Hardware auf dem Signalniveau getan werden (z.B. ein verilog oder DER VHDL Stromkreis programmiert worden auf ein FPGA), oder Sie können es an einem hochgradigen tun (z.B. ein Mikroprozessor wie ein Altera Brett, das eine geworfene Hardware-Unterbrechung hat, wenn diese Synchronisierungs-Spitze auf HI geht).

So im Allgemeinen denke ich, Sie, verwirklichen gerade vollständig korrekt sind, dass Sie noch 2 gpio Stifte, nicht gerade 1 speicherten, weil, selbst wenn Sie sie die erste Weise taten, Sie noch die Synchrounisierungstaktgeberspitze benötigen würden.
Weitere Lösungen  
 
programming4us programming4us