| /* ---------------------------------------------------------------------------- |
| * ATMEL Microcontroller Software Support |
| * ---------------------------------------------------------------------------- |
| * Copyright (c) 2010, Atmel Corporation |
| * |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * - Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the disclaimer below. |
| * |
| * Atmel's name may not be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR |
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE |
| * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
| * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * ---------------------------------------------------------------------------- |
| */ |
| |
| /** |
| * \page sam3s_ppc SAM3S PIO Parallel Capture |
| * |
| * \section Purpose |
| * |
| * Interface for configuration the PIO Parallel Capture peripheral. |
| * |
| * \section Usage |
| * |
| * -# Configurate the interrupt for PIOA, can be done by PIO_InitializeInterrupts() |
| * -# Initialize the PIO Parallel Capture API by filing the SpioCaptureInit structur. |
| * 2 options: |
| * - alwaysSampling: for sample data with or without take in account ENABLE pins. |
| * - halfSampling: for sample all data or only one time out of two |
| * -# Call PIO_CaptureInit() for init and enable the PDC, init the PIO capture. |
| * -# Call PIO_CaptureEnable() for enable the PIO Parallel Capture. |
| * -# When an interrupt is received, the PIO_CaptureHandler() is call and the respective |
| * callback is launch. |
| * -# When the transfer is complete, the user need to disable interrupt with |
| * PIO_CaptureDisableIt(). Otherway, the PDC will send an interrupt. |
| * -# The data receive by the PIO Parallel Capture is inside the buffer passed in the |
| * PIO_CaptureInit(). |
| * |
| */ |
| |
| #ifndef PIO_CAPTURE_H |
| #define PIO_CAPTURE_H |
| |
| /*---------------------------------------------------------------------------- |
| * Types |
| *----------------------------------------------------------------------------*/ |
| |
| /** \brief PIO Parallel Capture structure for initialize. |
| * |
| * At the end of the transfer, the callback is invoked by the interrupt handler. |
| */ |
| typedef struct _SpioCaptureInit { |
| |
| /** PIO_PCRHR register is a BYTE, HALF-WORD or WORD */ |
| uint8_t dsize; |
| /** PDC size, data to be received */ |
| uint16_t dPDCsize; |
| /** Data to be received */ |
| uint32_t *pData; |
| /** Parallel Capture Mode Always Sampling */ |
| uint8_t alwaysSampling; |
| /** Parallel Capture Mode Half Sampling */ |
| uint8_t halfSampling; |
| /** Parallel Capture Mode First Sample */ |
| uint8_t modeFirstSample; |
| /** Callback function invoked at Mode Data Ready */ |
| void (*CbkDataReady)( struct _SpioCaptureInit* ); |
| /** Callback function invoked at Mode Overrun Error */ |
| void (*CbkOverrun)( struct _SpioCaptureInit* ); |
| /** Callback function invoked at End of Reception Transfer */ |
| void (*CbkEndReception)( struct _SpioCaptureInit* ); |
| /** Callback function invoked at Reception Buffer Full */ |
| void (*CbkBuffFull)( struct _SpioCaptureInit* ); |
| /** Callback arguments.*/ |
| void *pParam; |
| |
| } SpioCaptureInit ; |
| |
| |
| /*---------------------------------------------------------------------------- |
| * Global Functions |
| *----------------------------------------------------------------------------*/ |
| extern void PIO_CaptureDisableIt( uint32_t itToDisable ) ; |
| extern void PIO_CaptureEnableIt( uint32_t itToEnable ) ; |
| extern void PIO_CaptureEnable( void ) ; |
| extern void PIO_CaptureDisable( void ) ; |
| extern void PIO_CaptureInit( SpioCaptureInit* pInit ) ; |
| |
| #endif /* #ifndef PIO_CAPTURE_H */ |
| |