Frage zum Handshake im Bellatrix-Code
Verfasst: So 6. Jul 2014, 16:30
Ich hab mir noch mal das "Build your OS part 2" Tutorial durchgelesen, in dem Regnatix Zeichen über den Bus an Bellatrix sendet. Mit dem Ablauf des Handshake im Bellatrix-Code hab ich ein Problem:
Funktioniert offenbar, ich hätte das allerdings niemals nicht so gemacht. Konkret versteh ich nicht, wieso das bus_hs Signal gesetzt und gleich wieder zurückgenommen wird, ich hätte die letzten drei Zeilen garantiert so geschrieben:
Offenbar funktioniert es auf beide Arten (hab das gerade mal getestet), aber wieso die obere Variante stabil funktioniert ist mir vom Prinzip nicht ganz klar - eventuell gehts nur deshalb gut weil die Zeichenübertragung die Props ohnehin nicht bis an die Grenze ihrer Leistungsfähigkeit fordert? Im oberen Fall könnte ich mir prinzipiell vorstellen dass Regnatix die Quittierung verpasst, weil diese viel zu schnell vorbeihuscht. Oder irre ich mich?
Code: Alles auswählen
PUB bus_getchar : zeichen 'BUS: Ein Byte über BUS empfangen
{{ein byte über bus empfangen Regnatix --> Bellatrix}}
waitpeq(M1,M2,0) 'busclk=1? & prop2=0?
zeichen := ina[7..0] 'daten einlesen
outa[bus_hs] := 0 'daten quittieren
outa[bus_hs] := 1
waitpeq(M3,M4,0) 'busclk=0?
Code: Alles auswählen
outa[bus_hs] := 0 'daten quittieren
waitpeq(M3,M4,0) 'busclk=0?
outa[bus_hs] := 1