00001
00059 #ifndef DMA_DRIVER_H
00060 #define DMA_DRIVER_H
00061
00062 #include "avr_compiler.h"
00063
00064
00070 #define DMA_Enable() ( DMA.CTRL |= DMA_ENABLE_bm )
00071
00076 #define DMA_Disable() ( DMA.CTRL &= ~DMA_ENABLE_bm )
00077
00078
00079
00081 void DMA_Reset( void );
00082 void DMA_ConfigDoubleBuffering( DMA_DBUFMODE_t dbufMode );
00083 void DMA_SetPriority( DMA_PRIMODE_t priMode );
00084 uint8_t DMA_CH_IsOngoing( volatile DMA_CH_t * channel );
00085 uint8_t DMA_IsOngoing( void );
00086 uint8_t DMA_CH_IsPending( volatile DMA_CH_t * channel );
00087 uint8_t DMA_IsPending( void );
00088 uint8_t DMA_ReturnStatus_non_blocking( volatile DMA_CH_t * channel );
00089 uint8_t DMA_ReturnStatus_blocking( volatile DMA_CH_t * channel );
00090 void DMA_EnableChannel( volatile DMA_CH_t * channel );
00091 void DMA_DisableChannel( volatile DMA_CH_t * channel );
00092 void DMA_ResetChannel( volatile DMA_CH_t * channel );
00093 void DMA_SetIntLevel( volatile DMA_CH_t * channel,
00094 DMA_CH_TRNINTLVL_t transferInt,
00095 DMA_CH_ERRINTLVL_t errorInt );
00096 void DMA_SetupBlock( volatile DMA_CH_t * channel,
00097 const void * srcAddr,
00098 DMA_CH_SRCRELOAD_t srcReload,
00099 DMA_CH_SRCDIR_t srcDirection,
00100 void * destAddr,
00101 DMA_CH_DESTRELOAD_t destReload,
00102 DMA_CH_DESTDIR_t destDirection,
00103 uint16_t blockSize,
00104 DMA_CH_BURSTLEN_t burstMode,
00105 uint8_t repeatCount,
00106 bool useRepeat );
00107 void DMA_EnableSingleShot( volatile DMA_CH_t * channel );
00108 void DMA_DisableSingleShot( volatile DMA_CH_t * channel );
00109 void DMA_SetTriggerSource( volatile DMA_CH_t * channel, uint8_t trigger );
00110 void DMA_StartTransfer( volatile DMA_CH_t * channel );
00111
00112 #endif