Stm32 gpio external interrupt example - Configure an LED pin as GPIOOutput (PG14 on NucleoF439ZI).

 
I have written everything you need to start. . Stm32 gpio external interrupt example

The calculation would be. Step5 Go To The Clock Configuration. Cannot retrieve contributors at this time. Here, these bits are located in the control register AFIOEXTICR1. Configure the STM32CubeMX project and synchronize files with Source Insight. Then click the Next button. It's true that number of external GPIO interrupts are limited to 16 and you can't configure PA0 and PB0 as source at the same time. Notice that the NVICISER0 is bit 25 that is set to enable interrupt 25 through. They work fine. - STM32-TutorialSTM32 Tutorial 07 - GPIO Interrupts (EXTI) using HAL (and FreeRTOS). 1 Answer. Unmask the interrupt mask register. You can compile it first. The pending bit corresponding to the interrupt line is also set. Click on the pin in the diagram and select GPIOOutput from dropdown menu. TIMITConfig(TIM2, TIMITUpdate, ENABLE); This will enable the update interrupt for the timer. For global interrupts enableirq() enable all interrupts disableirq() disable all interrupts Returns the current state of the priority mask bit from the Priority Mask Register. Each STM32F4 device has 23 external interrupt or event sources. For ARM-based controllers (the STM32F401RE being one) typically the following steps need to be done Configure and enable interrupts at the peripheral level (Ex. If you don&39;t do this, the chip will lock up because it is continuously entering the interrupt handler. The EXTI (EXTernal InterruptEvent) controller consists of up to 40 edge detectors for generating eventinterrupt requests on STM32L47xL48x devices. ) tasks and semaphore get created and schedular gets running 2. 3V (High) , 0V 0 (Low) , 3. Mar 21, 2020 STM32F103 ExtI0 schematic That means that you cannot connect both PA0 and PB0 to EXTI0. After Building and Loading the Project onto STM32 Board. The STM32CubeMX Software comes in handy when configuring the parameters of these pins. For example, a prescaler of 80 would turn an 80 MHz clock into a 1 MHz clock. An example shows how to configure external interrupt lines to blink a LED on button events (repository path. Hence, in default condition, the state of the input pin remains active high. This article describes GPIO interrupts, including examples of interrupts and their various functions. The con. It turns out that the STM32 SPI requres an inordinate amount of delay between NSS falling and SCK rising, which the AD7768 does not provide, so it will not work. General-purpose timer cookbook for STM32 microcontrollers Introduction The timer peripheral is part of the essential set of peripherals embedded in all the STM32 microcontrollers. When an external interrupt is given by the change of state using a push-button, the control is transferred (pre-empted) to the ISR and it does the needful. The aim of this series is to provide easy and practical examples that anyone can understand. The GPIO port A pin 0 will be given a higher priority than the GPIO port A pin 2. The most common types of IRQ pins are dedicated external interrupt pins and IOC (interrupt-on-change) pins. STM32 Interrupt vector table . Finally, we&x27;ll check the interrupt response time and interrupt latency. 2 Configure the Interrupt. c and setting it 1 inside the EXTI1IRQHandler and also tried using the GPIO Callback function. the STM32 EXTI specific method of writing to the EXTI Software interrupt event register (EXTISWIER). So, we need to first enable external interrupt for our push button (I assume here that you use STM32F407VG discovery board) In "Pinout & Configuration" tab click on pin PA0 which is connected to the push button and choose GPIOEXTI0 which enables external interrupt on that pin. By pressing buttons S2 or S3 the LED PB8 toggles. To do this, we mmust supply GPIO pin 0 a . This means you can use Px0 - Px15 pins for interrupt. "payload""allShortcutsEnabled"false,"fileTree""""items""name""STM32 Tutorial 000 - Introduction","path""STM32 Tutorial 000 - Introduction","contentType. Then click Next. External Interrupt (EXTI) Interfacing in STM32 using STM32CUBEMX ARM Cores also support interrupts lines which are external to the core itself. 4 Generate project and edit main. When I press and release the button, I see the following In GPIOCIDR (the GPIO input register), I can see bit 13 change, which tells me the GPIO block is working. m share the same interrupt number. Stop bit 1. For example, a prescaler of 80 would turn an 80 MHz clock into a 1 MHz clock. Those pins are grouped by some name. Several definitions can be redefined by the end user by different ways using buildopt. After creating the project in Stm32CubeIDE, it will open the default page for you called Device Configuration Tools. The LPC11xx (Cortex-M0) has 4 levels for GPIO pins, all the pins from GPIO0. Create a New Project in STM32CubeIDE. LKML Archive on lore. Exercise 2 Pushy Blinky. Dec 15, 2021 &0183;&32;A quadrature encoder has 2 output signals. Then your sensor would be connected separately to the ADC. The EXTI (EXTernal InterruptEvent) controller consists of up to 40 edge detectors for generating eventinterrupt requests on STM32L47xL48x devices. Power Management. Software Interrupts These are interrupts that are being fired by the user, the programmers. For STM32 microcontrollers, we use EXTI (external interrupt controller). This article describes GPIO interrupts, including examples of interrupts and their various functions. On line 206, the GPIO mode is set to detect interrupts on falling edges. n share the same interrupt number, and all the pins from GPIO3. USART UART Hardware In STM32 2. However, external interrupts are not the only way to read button states. Become hacker of window OS with CMD (. It is designed to easily enabledisable interrupt and handle irq requests. For example an STM32F4 family MCU, we would enable the SYSCFG (System Configuration controller) . requests Interrupt vectorsdetermine what function is executed for each type of interrupt request. Those pins are grouped by some name. ) tasks and semaphore get created and schedular gets running 2. 10 How To Use Gpio External Interrupt Stm32f103c8t6. It offers a wide range of functionalities and is widely used in embedded systems development. I don&39;t think in the first method the interrupts are distinguishable because STIR. However, it seems that the Pin is detected as a high continuously. Usually used to interface Flash Memories, ADC, DAC, RTC, LCD, SDcards, and. Additionally, we will also show you how to measure Blue Pill interrupt latency via an oscilloscope measurement. PA1215 GPIO Output. 1 STM32 USART Highlights. They are in table below This table show you which IRQ you have to set for NVIC (first column) and function names to handle your interrupts (second column). Switches work in the realm of 10&39;s of milliseconds. describing the example behavior and the environment required to run. It is designed to easily enabledisable interrupt and handle irq requests. How interrupts are generated and how. Also, the InterruptIn object is set to trigger on the rising edge however sometimes it also executes on the falling edge (when the joystick is returend to. In this tutorial, we are using the NUCLEO-F446RE board. STM8 MCUs. This gives lots of freedom to decide on which pin to generate an interrupt on which channel. Then I&39;d set an interrupt on a rising edge on one of the NSS pins (EXTI still works even if the pin is in alternate function mode), and read all data at once. and learn some GPIO functions including writing, toggling, and reading. For example, if you enable the "timer update" interrupt via the UIE bit, you will need to then clear the corresponding UIF bit in the status register. Unlike AVR based Arduino boards, my understanding is that interrupts can be configured on any GPIO pin on STM32 boards. First, create a new project in STM32CubeIDE by selecting File > New > STM32 Project. Additionally, we will also show you how to measure Blue Pill interrupt latency via an oscilloscope measurement. Button S2 (pin PA0) and. - - - GPIOIOToggle How to configure and use GPIOs through the HAL API. You can read LPC2148 RTX RTOS, a project creating for STM32 without RTOS, a project creating for STM32. Following is the code generated by STM32CubeIDE related to EXTI brief This function handles EXTI line0 interrupt. I don&39;t think in the first method the interrupts are distinguishable because STIR. How interrupts are generated and how. So, we are going to toggle the onboard LED in every 1-second delay. 6 thg 4, 2021. Take a look to your hardware before setting a pullup. Ok if you want to wake the cpu from sleep, but beyond that disable the external interrupt and use a timer tick to poll the input and filterdebounce it. Then your sensor would be connected separately to the ADC. While somewhat trickier to set up and use than a GPIO peripheral, the U (S)ART of STs STM32 families is fairly uncomplicated to use, and immediately provides one with an easy way to communicate. The EXTI (EXTernal InterruptEvent) controller consists of up to 40 edge detectors for generating eventinterrupt requests on STM32L47xL48x devices. General-purpose timer cookbook for STM32 microcontrollers Introduction The timer peripheral is part of the essential set of peripherals embedded in all the STM32 microcontrollers. The other ports on Line x are ignored as far as external interrupts are concerned. Setting of a GPIO pin interrupt flag after detection of an event that . Button S2 (pin PA0) and. Also, you should follow the STM32 GPIOEXTI examples for help, and fill in your exact code that you are using. We will Understand some basic knowledge about interrupts of STM32F0. I have tried using a variable declared in. Applicable products Type Products Expansion Package X-CUBE-RTC Microcontrollers. Tutorial documents in Markdown. Setting of a GPIO pin interrupt flag after detection of an event that . It is designed to easily enabledisable interrupt and handle irq requests. (7 points) Either modify the example code given or start from scratch, accomplish the following functionality The on-board LED is OFF at system reset and the system clock is set to 16M H z 16 M H z. You can read LPC2148 RTX RTOS, a project creating for STM32 without RTOS, a project creating for STM32. So, we need to first enable external interrupt for our push button (I assume here that you use STM32F407VG discovery board) In "Pinout & Configuration" tab click on pin PA0 which is connected to the push button and choose GPIOEXTI0 which enables external interrupt on that pin. Feb 17, 2023 &0183;&32;This is the Series of tutorials on the STM32 Microcontroller. describing the example behavior and the environment required to run. 5 V and then go back to 3. Switches work in the realm of 10&39;s of milliseconds. Configure an input pin and set the edge detection. png&92;"><img src&92;"dekuNukemSTM32tutorialsraw. The con. In Device Configuration Tools go to Categories > Middleware > FREERTOS. On pressing the button, the pin goes from a HIGH. The new FreeRTOS for STM32 recommend to use signals as faster and simpler alternative to Semaphores, especially for the interrupt synchronization with a task. pdf at master &183; mne. In the above photo you see my hardware. This detection can then be used to. A rising edge detection may happen or may not happen when you drop to just 1. The GPIO port A pin 0 will be given a higher priority than the GPIO port A pin 2. We will demonstrate this through an example by toggling an LED after a set number of time. ARM v7 Cortex Exceptions Interrupts 1. const byte interruptPin 2;. If you could, please also specify your platform. Problem is, after the trigger has started your first DMA transfer it has to be changed to SPI RX buffer empty trigger which can not be done automatically. Your interrupt probably triggers for every falling edge or something, so it triggers multiple times for each byte. STM8 MCUs. However, external interrupts are not the only way to read button states. The C code below was tested with CCS C compiler. But no luck. 29 thg 2, 2020. Here in this project, for understanding the Interrupts in STM32F103C8, we will use push button as external interrupt. 38th are external interrupts. 50 Tutorials. In this example, we are just going to use the TIM3 to generate a delay of 1 second. I am using (as an exercise) external interrupts to toggle onoff a led, by pressing an external switch wich in turn is connected to PC13. 1 What is an external interruptevent controller (EXTI) 2 Configure EXTI to turn on a LED when a user button is pressed. Then with that knowledge confirmed with the NVICICPR0,1,2 registers that it was interrupt 25. It is basically a same thing like dealing with the ADC hardware in the interrupt routine, send a signal to the task with the osSignalSet (). External Interrupt (EXTI) Interfacing in STM32 using STM32CUBEMX ARM Cores also support interrupts lines which are external to the core itself. Mar 14, 2019 &0183;&32;3. Lesson 3 UART Receive and External Files. Step2 Choose The Target MCU & Double-Click Its Name. 3V and logic level 1 will be 0V. It creates the following code by default for MXGPIOInit in main. You may think of this as just a configuration function for the GPIO as systemclockconfig might be. Lesson 5 SPI and I2C Communication. This request is reset by writing a 1 in the pending. May 22, 2022 &0183;&32;EXTI External Interrupt Interrupt CPU() . Available options can be seen on the image below Next step is to enable the corresponding interrupt. The following code is used to activate interrupt on pin PA0 and the buttonISR will help in toggling the LED. And please add a resistor for that LED, 1 k is ok, if it turns on it will probably fry. Only One GPIO pin should be turned on once and the other GPIO pin should be turned off. If a pin was configured as Active Low, physical level low will be considered as logical level 1 (an active state. This tutorial will also introduce the working with interrupts in STM32 I am going to focus on F4 and F1 series here. For example when we need to use EXTI2, we can use either PA2, PB2, PC2, etc. Each IO port bit is freely programmable, however, the IO port registers have to be accessed as 32-bit words (half-word or byte accesses. STM32 Timer Timer Mode LAB Config. Example solution For example something like if (EXTI->PR & EXTIPRPR6) GPIOE->BSRR GPIOBSRRBS8; EXTI->PR EXTIPRPR6; Note this will not toggle the LED but simply set it. A typical example is to move a block of external memory to a faster memory area inside the chip. Several irqchip drivers are consequently required, one per hardware block. When it reached a 1-second delay, it will trigger the interrupt. As far as I understand, I create a continuous loop that will check each GPIO consecutively. 2- UART with DMA STM32F7 Tutorial Example cod. 2 STM32F429I example) a word access on memory and byte access on GPIO has been used STM32F429 DMA will write 4x8-bit data into the GPIO for each 32bit data read in external memory On STM32L4x6 code example (see Section 2. I am trying to use an external button connect to PA1 to trigger an external interrupt in order to switch on a LED (on PD12). An example shows how to configure external interrupt lines to blink a LED on button events (repository path. I&39;m working with an STM32L073RZ on a custom board. Right click go to authentication of void exti4 Irqhandler (void), available in stm32f1xx it. Lesson 5 SPI and I2C Communication. Step2 Choose The Target MCU & Double-Click Its Name. Then I looked at the GPIO example for the M4 projects and was planning on using the GPIO initialization function from that. To use external interrupt lines, the port must be . Example With an ADCCLK 14 MHz and a sampling time of 1. If you could, please also specify your platform (processor, eval-board, any tiesconnections you have placedsoldered, etc). At this moment we are going to . This is another tutorial in the Register based programming series and today we will see how can we use the external interrupt in. Each interrupt request has an interrupt number assigned. Timer period can be calculated using the formula Period (Number of Clock Cycles) (Clock Frequency). The thing is, whenever I push the button, nothing happens. Mar 3, 2023 &0183;&32;Also, you should follow the STM32 GPIOEXTI examples for help, and fill in your exact code that you are using. THIS LESSON Lesson 2 External GPIO Interrupts. DMA configuration Clock configuration 72MHz engineering management Generate code 5. There are two ways of generating a software interrupt on STM32F4. toc Required Components For LABs. An LED is wired in series with a 330 ohms resistor between pin 14 of port B and ground. Table 1. - - - HAL HALTimeBase How to customize the HAL using a general-purpose timer as main source of timebase, instead of the SysTick. Well discuss this in a more detailed manner when we get into the EXTI (external interruptevent controller) topic. 1 I see in STM32F103 series, the GPIO extra interrupt is set to the EXTI. First interrupt section is for external pins (P0 to P15) on each port,. 3 Create project in STM32CubeMX . Then for the target selection, specify the STM32 Blue Pill board number. STM32F429 has 16 GPIO Interrupt line. However, in the ARM documentation, interrupt is used to describe a type of exception. For example, there is a Touch Interrupt which happens when touch is detected and a GPIO interrupt when a key is pressed down. Configuration of the GPIO Pin for the . Apr 17, 2015 &0183;&32; EXTI Regiser Map. Each interrupt request has an interrupt number assigned to it, see the Position entry in the table above. NVIC checks if that interrupt of EXTI is enabled, and if it is, it triggers the ISR. I have six momentary buttons and an STM32 Discovery board. Example solution For example something like if (EXTI->PR & EXTIPRPR6) GPIOE->BSRR GPIOBSRRBS8; EXTI->PR EXTIPRPR6; Note this will not toggle the LED but simply set it. If you dont know how EXTI works on STM32F4 or STM32F7 lines, you should take a look here. For demonstration purposes, the pushbutton will be able to generate the interrupt. For ARM-based controllers (the STM32F401RE being one) typically the following steps need to be done Configure and enable interrupts at the peripheral level (Ex. GPIO as Interrupt Interrupt lines I will show now how to configure GPIO. STM32 Interrupt vector table . Here we will increment a number from 0 and display it on 16x2 LCD, and whenever the push button is pressed the led turns ON and the LCD display shows INTERRUPT. 1 Answer. On STM32MP1 devices, a hardware interrupt can be generated by GIC, EXTI, PWR or GPIO. So, that one group is called GPIO port. Then when you receive an interrupt from your digital signal, you would then read from the ADC. 5medspace s T f T 1 500 0. Configure the input pin to be an interrupt source on the rising edge. Vo mc GPIO, chn nhng chn khi to ngt ngoi cu hnh nh. Abstract This chapter present the external interrupt operation flow of STM32. org help color mirror Atom feed PATCH v1 12 gpio wcd934x Remove duplicate assignment of ofgpioncells 2023-01-12 1639 Andy Shevchenko 2023-01-12 1639 PATCH v1 22 gpio wcd934x Use proper headers and drop OFGPIO dependency Andy Shevchenko 0 siblings, 1 reply; 6 messages in thread. You have probably also figured, that only lines 0 to 4 have own IRQ handler. So let&x27;s get started. kassadin aram build, chicago craglist

The information if an eventinterrupt has occurred could be found in the EXTIPR register. . Stm32 gpio external interrupt example

Let it be A9 pin for example Its EXTI line 9 (Well connect a push button to it). . Stm32 gpio external interrupt example sexy ebony feet

How to create stm32 project in stm32cubeide with example code. Step3 Click On The Pin You Want To Configure As An Output & Select Output Option. Button S2 (pin PA0) and. EXTI library is used to set GPIO pin as external interrupt. Is it possible to get multiple interrupts from te same EXTI line for par example for PA1 and PC1 they are both on EXTI1. Mar 3, 2023 &0183;&32;Also, you should follow the STM32 GPIOEXTI examples for help, and fill in your exact code that you are using. We will demonstrate this through an. Each interrupt request has an interrupt number assigned. TIMITConfig(TIM2, TIMITUpdate, ENABLE); This will enable the update interrupt for the timer. PA1215 GPIO Output. At this moment we are going to . The aim of this series is to provide easy and practical examples that anyone can understand. In this STM32F0 tutorial, we will learn how to. Okay, that was a lot of text. Each input . Configure the input pin to be an interrupt source on the rising edge. The current executing application on a processor can be interrupted by either internal system exception or external interrupt. By pressing buttons S2 or S3 the LED PB8 toggles. Step3 Click On The Pin You Want To Configure As An Output & Select Output Option. 4) register. So you don&39;t need 16 interrupts, just 8. STM32CubeMX Pin "GPIOEXTI" , - STM32CubeMX PinOut GPIOEXTI . Also you have to check if the EXT Pin interrupt can be used as a DMA trigger. 1 I see in STM32F103 series, the GPIO extra interrupt is set to the EXTI. Enable interrupts at the nested vectored interrupt controller (NVIC) level. Sep 4, 2020 &0183;&32;I'm trying to get a fundamental understanding of programming for STM32 microcontrollers. The onboard push button of STM32 Nucleo is connected to an external pull-up resistor. In this video, I will show how to use the HAL EXTI Interrupt function. STM32 bluepill on the breadboard. Only One GPIO pin should be turned on once and the other GPIO pin should be turned off. It allows mapping multiple GPIO lines to NVIC external interrupt inputs. I don&39;t think you want to use an analog signal to generate an interrupt. Right click go to authentication of void exti4 Irqhandler (void), available in stm32f1xx it. I have some problems with I2C2 interrupts, I have enabled the interrupt but the handler interrupt never executes. STM32 CubeMX Configurations. 19 thg 1, 2011. c file. Interrupts sensitive to pin logical level take into account GPIOACTIVELOW flag. Trong GPIO chn cc chn PA0,PA1,PB3 l GPIOEXTI. I want to change the DMA memory. Jan 21, 2022 &0183;&32;The steps are as follows Configure RCC and turn on the clocks of the peripherals involved here. I included screen shots of the GPIOs that were listed. 1See more. 0 but primarily working with the HAL API. For more information about STM32CubeMX , refer to the STM32CubeMX for STM32 configuration and initialization C code generation user. I&39;m using ARM Mbed OS 5. 5 14 cycles 1 &181;s. On other STM32 controllers you can select the DMA trigger interrupt to be e. Apr 30, 2021 &0183;&32;ESP32 External Interrupts Code (in Arduino) In this section, Ill give you a step-by-step approach for what to do in order to configure and initialize an external. GPIO as Interrupt Interrupt lines I will show now how to configure GPIO. Several definitions can be redefined by the end user by different ways using buildopt. The current value of the timer counts is captured when an external event occurs and an interrupt is fired. 1See more. External interrupts from microcontroller pins arent traced directly to NVIC as youd expect. . Peripheral Pin Select (PPS). So, we are going to toggle the onboard LED in every 1-second delay. The external interruptevent controller consists of up to 23 edge detectors for generating eventinterrupt requests. A typical example is to move a block of external memory to a faster memory area inside the chip. Exceptions are identified by the. The in the ISR, check the flags to see whether the interrupt was caused by 0 (falling) or 2 (rising). In this tutorial, well discuss the STM32 GPIO hardware. External Interrupt Pins. In this course, youll learn the basics of STM32 ARM-Based microcontrollers architecture, STM32 hardware peripherals, and develop some interfacing upper-layer firmware components that are configurable and reusable in different projects. Cortex-M processors have 15 system Exceptions and 240 Interrupts. 26 thg 3, 2021. So, we are going to toggle the onboard LED in every 1-second delay. First interrupt section is for external pins (P0 to P15) on each port, and other section is for other events, like RTC interrupt, Ethernet interrupt, USB interrupt and so on. Also in this case I get the interrupt on both edges. ADC with DMA STM32 Example code STM32 with Std Lib. First interrupt section is for external pins (P0 to P15) on each port, and other section is for other events, like RTC interrupt, Ethernet interrupt, USB interrupt and so on. So, that one group is called GPIO port. This gives lots of freedom to decide on which pin to generate an interrupt on which channel. Via ARM-core CMSIS 1. 5 12. Each STM32F4 device has 23 external interrupt or event sources. In the STM32, GPIO interrupts are considered a type of external interrupt. selected depending on the VDD value. 10 How To Use Gpio External Interrupt Stm32f103c8t6. It turns out that the STM32 SPI requres an inordinate amount of delay between NSS falling and SCK rising, which the AD7768 does not provide, so it will not work. 0 but primarily working with the HAL API. for 4 days now, I am struggling to set up External interrupt on my STM32 and I have gone through tons of reading and other people's code to get it. selected depending on the VDD value. Take a look to your hardware before setting a pullup. 300px 300px. using pushbuttonswitches external signals with external interrupts. I am using StdPeriph Library. Automotive Microcontrollers. Step6 Open The NVIC Tab And Enable The EXTI line9 Interrupt. User LED (LD2, Green) is connected to PA5. UART receive interrupt with length 1, receives one byte data and stops. I am using (as an exercise) external interrupts to toggle onoff a led, by pressing an external switch wich in turn is connected to PC13. . Here in this project, for understanding the Interrupts in STM32F103C8, we will use push button as external interrupt. Introduction To SPI Communication. I tried to use another pin on the same port, but I observe identical behavior. Click the Black reset button on the Board. To review, these chips have core NVIC interrupts which need to be enabled in addition to the actual. I have modified a standard peripheral library example from the ST web page and the current program simply toggles a LED at each. Which includes the Nested Vectored Interrupt Controller (NVIC). GPIO as Interrupt Interrupt lines I will show now how to configure GPIO. Configure the input pin to be an interrupt source on the rising edge. In this tutorial, we are using the NUCLEO-F446RE board. Moreover, your interrupt routine turns on the led but it&39;s never turned off. Vo mc GPIO, chn nhng chn khi to ngt ngoi cu hnh nh. Dec 15, 2021 &0183;&32;A quadrature encoder has 2 output signals. 2016 simon burkhardt page 1 5 GPIO Interrupts (EXTI) on STM32 Microcontrollers using HAL with FreeRTOS enabled The STM32 microcontroller family offers multiple GPIO interrupt pins. Click USART3 on the left panel to open peripherals. First interrupt section is for external pins (P0 to P15) on each port,. I will show 3 example programs that demonstrate GPIO interrupt. You should reconfigure it after receiving the byte. png&92;"><img src&92;"dekuNukemSTM32tutorialsraw. Here is an example code for a button debouncing. GPIO Interrupts (EXTI) on STM32 Microcontrollers using HAL with FreeRTOS enabled The STM32 microcontroller family offers multiple GPIO interrupt pins. - - - GPIOIOToggle How to configure and use GPIOs through the HAL API. Apr 7, 2020 &0183;&32;2. . desi sex sites