- El objetivo de esta práctica es solo utilizar las I/O del ARM como se muestra en las siguientes figuras marcadas en círculos rojos:
- Para esta práctica utilizaremos 2 push buttom y un led. Dichos componente están identificados de acuerdo al manual de la ZedBoard en:
- El código para el SDK en eclipse es el siguiente:
#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "xgpiops.h"
#define SW1 50
#define SW2 51
#define LED 7
int main()
{
long int ust_limit = 83333323;
long int delay, i;
char cnt, xStatus;
int Data_SW1, Data_SW2;
static XGpioPs PsIO; // MIO and EMIO
XGpioPs_Config* PsIO_ConfigPtr;
// Variables to read
GPIO into
volatile u32 pushbuttons,
dipswitches, psPushbuttons;
init_platform();
print("Test GPIO - PS\n\r");
print("Carlos
Silva - LiCORE 2014\n\r");
//PS GPIO Intialization
PsIO_ConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
if(PsIO_ConfigPtr ==
NULL)
{
print(" PS GPIO INIT FAILED \n\r");
return XST_FAILURE;
}
xStatus = XGpioPs_CfgInitialize(&PsIO, PsIO_ConfigPtr,
PsIO_ConfigPtr->BaseAddr);
if(XST_SUCCESS !=
xStatus)
{
print(" PS GPIO INIT FAILED \n\r");
}
/*
* Set the direction for the pin to be output and
* Enable the Output enable for the LED Pin.
*/
XGpioPs_SetDirectionPin(&PsIO, LED, 1);
XGpioPs_SetOutputEnablePin(&PsIO, LED, 1);
XGpioPs_SetDirectionPin(&PsIO, SW1, 0x0);
XGpioPs_SetDirectionPin(&PsIO, SW2, 0x0);
for(delay=0;delay<(3*ust_limit);delay++){};
while(1)
{
XGpioPs_WritePin(&PsIO,LED,0);
for(delay=0;delay<ust_limit;delay++){};
XGpioPs_WritePin(&PsIO,LED,1);
for(delay=0;delay<ust_limit;delay++){};
Data_SW1 =
XGpioPs_ReadPin(&PsIO, SW1);
Data_SW2 =
XGpioPs_ReadPin(&PsIO, SW2);
printf("SW1 =
%i\n\r",Data_SW1);
printf("SW2 =
%i\n\r",Data_SW2);
}
return 0;
}
- Corriendo en el debug de Eclipse:
- Corriendo en ZedBoard!
No hay comentarios.:
Publicar un comentario