Hallo, ich habe einen Microbalze aufgesetzt, bei dem ich im Moment bei meinem Spartan3AN Board die Stellung der Switches mit den LEDs anzeige. Das funktioniert mit folgendem Code sehr gut: #include "platform.h" #include "xparameters.h" #include "xgpio.h" int main() { init_platform(); Xuint32 value; Xuint32 stop; XGpio gpio_led; XGpio gpio_switch; XGpio gpio_stop; XGpio_Initialize(&gpio_led, XPAR_LEDS_8BIT_DEVICE_ID); XGpio_Initialize(&gpio_switch, XPAR_DIPS_4BIT_DEVICE_ID); XGpio_Initialize(&gpio_stop, XPAR_BTNS_4BIT_DEVICE_ID); XGpio_SetDataDirection(&gpio_led, 1, 0x00000000); XGpio_SetDataDirection(&gpio_switch, 1, 0xffffffff); XGpio_SetDataDirection(&gpio_stop, 1, 0xffffffff); while(1) { value = XGpio_DiscreteRead(&gpio_switch, 1); XGpio_DiscreteWrite(&gpio_led, 1 , value); stop = XGpio_DiscreteRead(&gpio_stop,1); if(stop == 0x01) { break; } } cleanup_platform(); return 0; } Meine erste Frage wäre nun, was genau macht denn die XGpio_SetDataDirection() Methode? Denn eigentlich kann ich hier denn Hex-Wert setzen wie ich möchte, oder sie ganz weg lassen. Das Programm funktioniert so oder so. Als nächstes würde ich gerne die drei Gpio Instanzen für LEDs, Switches und den Stop Button durch nur einer Gpio Instanz ersetzen. Das müsste doch irgendwie gehen, wegen 32Bit System. Ich weiss dazu unter anderem nicht wie ich dieses Gpio dann Initialisieren kann, damit nur 7 Register für die LEDS, 4 Register für die Switches und 4 Register für die Buttons hergenommen werden. Und wie verschachtel ich dazu die Device_Ids? Bis jetzt habe ich immer die Device_IDs aus der xparameters.h hergenommen. Muss man evt. was in XPS ändern? Ich verwende ISE 13.4 zur Programmierung. Danke schon mal für eure Hilfe. Mirco
Mirco schrieb: > Meine erste Frage wäre nun, was genau macht denn die > XGpio_SetDataDirection() Methode? Denn eigentlich kann ich hier denn > Hex-Wert setzen wie ich möchte, oder sie ganz weg lassen. Das Programm > funktioniert so oder so. Na es schaltet deine IO's als Eingang oder Ausgang. Das du nichts davon merkst dürfte mit zusammenhängen, dass du für die LEDs vermutlich einen _O und keinen _IO Port nutzt... Aber um das zu verstehen Hilft dir das Datenblatt zu dem IP-Core und dessen Treibern (die Beschreibung der Methoden die du nutzt) > > Als nächstes würde ich gerne die drei Gpio Instanzen für LEDs, Switches > und den Stop Button durch nur einer Gpio Instanz ersetzen. Das müsste > doch irgendwie gehen, wegen 32Bit System. Jap. Da die GPIO-Cores bis zu 2x32 IOs können. > Ich weiss dazu unter anderem nicht wie ich dieses Gpio dann > Initialisieren kann, damit nur 7 Register für die LEDS, 4 Register für > die Switches und 4 Register für die Buttons hergenommen werden. mit Register meinst du vermutlich Bit also z.B. 7 LEDs .. oder? Zumindest sieht deine Benennung oben danach aus ;) Wenn ja dann z.B. so (unterste Bits LEDs):
1 | XGpio_SetDataDirection(&dein_neuer_gpio, 1, 0xffffff80); |
> Und wie verschachtel ich dazu die Device_Ids? Bis jetzt habe ich immer > die Device_IDs aus der xparameters.h hergenommen. Wieso verschachteln? Du willst doch nur noch eine Instanz deines GPIO-Cores haben. Also hast du auch nur noch eine Device-ID. > Muss man evt. was in XPS ändern? Natürlich. Du willst ja etwas an deiner Hardware ändern. Du musst deine LEDs, Schalter und Buttons auf einen GPIO legen. Ist nicht schwer und sollte mit Google recht schnell bewältigbar sein! Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.