Ok. Klar leuchtet ein. xgpio funktioniert auch super. Das einzige was
nicht recht funktionieren will ist das korrekte Setzen des DDR mit
XGpio_SetDataDirection(). Nach dem Initialisieren schreibe ich hier z.B.
XGpio_SetDataDirection(1,0x01);
Damit sind bei einem 8-Bit-Register Pin 7 bis Pin 1 als Ausgang
definiert, Pin 0 ist ein Eingang.
Pin 0: IN (-> Schalter 0)
pin 1: OUT (-> Schalter 1) NUR ZUM TESTEN, OB FUNKTION KORREKT
ARBEITET
Pin 2: OUT (-> LED 2)
pin 3: OUT ...
Pin 4: OUT
pin 5: OUT
Pin 6: OUT
pin 7: OUT
( Probe: XGpio_GetDataDirection(1) = 0x01)
Liegt an Pin 0 und Pin 1 ein Schalter, an Pin 2 bis Pin 7 jeweils eine
LED, dann tritt folgendes Problem auf:
Lese ich den Port mit result = XGpio_DiscreteRead(&GPIO_Instance,1) aus,
dann erwarte ich, dass ich mit dem Schalter 0 an Pin 0 das letzte Bit
zwischen "0" und "1" kippen kann. Unabhängig davon, ob LED3,..,LED7
leuchten. Wenn ich Schalter 1 kippe, sollte sich nichts an dem "result"
ändern (Da Pin 1 ja als Ausgang und nicht als Eingang definiert wurde).
Sehe ich das so richtig?
Mit Schalter 1 kippe ich gegen meine Erwartungen das zweite Bit zwischen
"0" und "1".
In EDK Studio ist für den betreffenden GPIO IO als Direction
voreingestellt (müsste ich ja mit der XGpio_SetDataDirection()
eigentlich überschrieben haben?!).