Buscar este blog

lunes, 17 de noviembre de 2014

PRACTICA # 12 GPIO --> PS (Processing System)



  • 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