Search the Community

Showing results for tags 'interrupt'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Test and Measurement
    • Measurement Computing (MCC)
    • Add-on Boards
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions
    • Archived

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 5 results

  1. Hi All, I'm start working with the AXI UART Lite in my Block Design with a Microblaze soft core. Actually I've the whole design working, using the xil_printf I'm able to send data out the board to the PC through the Virtual COM Port exposed by the board itself. The better approach involve the use of interrupts in order to manage the RX and TX operations. My first try was to found some documents about this point, found it into the yourdesign_bsp > BSP Documentation > uartlite_v3_2 folder: right click and select Open Documentation give the API list on the browser, the documentation reside locally on the following path (I'm using VIVADO 2016.1): C:/Xilinx/SDK/2016.1/data/embeddedsw/XilinxProcessorIPLib/drivers/uartlite_v3_2/doc/html/api/index.html Opening the: C:/Xilinx/SDK/2016.1/data/embeddedsw/XilinxProcessorIPLib/drivers/uartlite_v3_2 inside the examples there are several examples how to use interrupt with this peripheral, I took the xuartlite_intr_tapp_example.c file. Concerning this example I've some question to asking. Looking through the source code I see: #ifdef XPAR_INTC_0_DEVICE_ID #include "xintc.h" #include <stdio.h> #else #include "xscugic.h" #include "xil_printf.h" #endif First question is about this conditional statement. Starting from the SDK I've opened the xparameters.h file: scroll down until you reach the xparameters.h file. Double click on to open the file and make a search for the XPAR_INTC_0_DEVICE_ID label: This label should be the reference to the AXI Interrupt Controller present into the Block Design (system.pdf).with name microblaze_0_axi_intc. Now I need to know the exact difference between this two type of controller, the AXI is into the Fabric and I think is automatically managed from the Microblaze side by means of a dedicated software layer also the Generic Interrupt Controller I think is also managed by Microblaze but may be I've to configure it in order to instruct what peripheral have to use I'm correct? In this example I'm using the AXI Interrupt Controller so I can avoid to insert the whole code related the Generic Interrupt Controller, correct? Another question is if I'm using the AXI Interrupt Controller there are some reason to use also the Generic Interrupt Controller or I can't use it due to some constraints or other reasons? Someone can give me some explanation about this point? Thank!
  2. Is there any way to program an interrupt when a digital input pin goes high in WaveForms SDK with Analog Discovery 2 or Digital Discovery? I want to write a code (using WaveForms SDK), with which I wait for a digital input pin to go high. After the pin goes high, I want to continue with the program. Something like the following code: # Some code while (not digitalInputPinIsHigh()): continue # Continue with the program The problem is that the pin's output is a pulse that is only high for 30 μs, so if I continuously check the digital input pin until it goes high, I think I can miss the pulse. Is there a way to program an interrupt (some code/function that is executed when the pin goes high)? Something like the following code: def ISR(): digitalInputPulseArrived = True # Some code digitalInputPulseArrived = False while (not digitalInputPulseArrived): continue # Continue with the program
  3. Hello, I checked the tutorials and read the pdf-s on the AXI Interrupt controller. However, i could use come clarification about a couple of things. In Microblaze advanced configuration there's an option to set interrupts to NONE/NORMAL/FAST, or leave it in AUTO mode. Is this setting linked to the AXI interrupt controller creation process? I mean if it run Block Automation, and enable Interrupt Controller, then AXI Interrupt Controller IP is created, but the setting doesn't change in the microblaze settings (for example it stays AUTO/NONE). Does that mean if i want a normal mode interrup controller setup, then i have to set it to normal in the AXI Interrupt Controller, also in the microblaze settings? What are the differences between FAST and NORMAL mode? Docu states: "In this mode, AXI INTC provides the interrupt vector address using the interrupt_address signal, and the processor acknowledges an interrupt through the processor_ack signal." Does that mean that if i have it in NORMAL mode, then it will not send the vector to the processor, and those lines doesn't need to be connected? Does the Interrupt interface on the microblaze and the AXI Interrupt Controller have to be connected in both NORMAL and FAST mode? If not, they communicate over AXI? If i have a timer that is the only interrupt source in my design, and i want a callback function to be called every time the timer sends an interrupt, how can i implement this with the simplest AXI INTC? Can i do this in normal mode?
  4. Hello I have a microblaze running a LwIP server adapted from the lwIP server example where everything works fine. LwIP stops working when I use another peripheral with an interrupt attached to it. In my case I have an SPI EEprom running perfectly, but after initialization LwIP stops working. The EEprom code is also standard code from the example. Interrupts are all connected to the microblaze with a concat IP. Has anybody experience in this topic?
  5. Hi, I am having a problem with GPIO interrtupt on Arty A7 board. + 2 GPIO with each of them is dual channel. + INTC instance to connect the interrtup with Microblaze. After I used below software, I can not see the interrupt. Would you please tell me how to debug in next step ? Sorry, I am new to SDK and Arty A7. I want to connect the switch or button as interrupt, and do some task inside a handler. I want to clarify below of my understanding, whether it is correct or not: 1. hardware: - Enable register access in INTC to make the software can access INTC registers. - Choose level (high) as interrupt type. - Fast interrupt is enable. 2. Software: #--------------------------------- /***************************** Include Files *********************************/ #include "xparameters.h" #include "xil_exception.h" #include "xintc.h" #include "xgpio.h" #include "xil_printf.h" #define UART_INT_CHANNEL 0 #define GPIO0_INT_CHANNEL 1 #define GPIO1_INT_CHANNEL 2 XGpio Gpio0; /* The Instance of the GPIO0 Driver */ XGpio Gpio1; /* The Instance of the GPIO1 Driver */ XIntc Intc; /* The Instance of the Interrupt Controller Driver */ void UART_HANDLER(void *Callbackref); void GPIO0_HANDLER(void *Callbackref); void GPIO1_HANDLER(void *Callbackref); void GPIO0_HANDLER(void *Callbackref) { xil_printf("Handler GPIO0 !! \r\n"); //write out GPIO0, LED 0101 XGpio_DiscreteWrite(&Gpio0, 1, 0x05); //Write out GPIO1, LED RGB XGpio_DiscreteWrite(&Gpio1, 1, 0xAA55); } // Main program int main(void) { // 0. Initial GPIO0 Status = XGpio_Initialize(&Gpio1, XPAR_GPIO_1_DEVICE_ID); if (Status != XST_SUCCESS) { return XST_FAILURE; } //Configure the IO direction for GPIO0 ( push button is in channel2): XGpio_SetDataDirection(&Gpio1, 1, 0x00000 ); XGpio_SetDataDirection(&Gpio1, 2, 0xFFFFF ); //1. Init the Interrupt controller Status = XIntc_Initialize(&Intc, 0); if (Status != XST_SUCCESS) { return XST_FAILURE; } //2. Connect the handlers Status = XIntc_Connect(&Intc, GPIO0_INT_CHANNEL, (XInterruptHandler) &GPIO0_HANDLER, (void *) 0); if (Status != XST_SUCCESS) { return XST_FAILURE; } //3. Enable the INTC XIntc_Enable(&Intc, GPIO0_INT_CHANNEL); XIntc_Enable(&Intc, GPIO1_INT_CHANNEL); //4. Start the INTC Status = XIntc_Start(&Intc, XIN_REAL_MODE); if (Status != XST_SUCCESS) { return XST_FAILURE; } //5. Enable interrupt for GPIO0 XGpio_InterruptEnable( &Gpio0, 0x0000); XGpio_InterruptGlobalEnable( &Gpio0 ); // 6. Initi the exception Xil_ExceptionInit(); // Xil_ExceptionRegisterHandler(1, (Xil_ExceptionHandler)GPIO0_HANDLER, 0); // // /* Enable non-critical exceptions */ Xil_ExceptionEnable(); xil_printf("Waiting for interrupt... !! \r\n"); while(1) { } //return return XST_SUCCESS; } //--------------------------------------------------------------------------------