![](/media/cache/profiles/fa7518562603d5c4a7ad69e2e5726f5f.50x50_q85.jpg)
Real Time FIR Filter - Distinctive Excellence award winner :)
Diff: dma.h
- Revision:
- 0:b3e50e98acac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dma.h Sat Aug 13 17:35:52 2011 +0000 @@ -0,0 +1,39 @@ + + +#ifndef DMA_H_ +#define DMA_H_ + +#include "mbed.h" + + +/************************************DEFINICIONES DE TIPOS********************************************/ +/*Estructura de los nodos usados por las Listas del DMA*/ +typedef struct +{ + unsigned long int sourceAddr; /*Direccion inicial de la memoria/periferico de partida*/ + unsigned long int destAddr; /*Direccion inicial de la memoria/periferico de destino*/ + unsigned long int nextNode; /*Proximo nodo de la lista (una vez que se enviaron todos los datos*/ + unsigned long int dmaControl; /*Registro de configuracion del DMA que puede ser modificado nodo a nodo*/ + /* Detalle dmaControl: Pagina 603 del User Manual del LPC1768 */ +}dmaLinkedListNode; + +/* Tipo de dato booleano */ +typedef enum {FALSE, TRUE} bool_t; + +/* Tipo de dato usado para saber que buffer debo procesar/escribir */ +typedef enum {PING, PONG} pingpong_t; + +/*****************************************VARIABLES***************************************************/ +/* Se decidio el uso de variables globales en lugar de wrappers para agilizar el codigo lo mas posible. */ + +/* Esta variable indica si se atendio una interrupcion */ +/* Nos indica si se completo la adquisicion de uno de los buffers */ +extern bool_t BufferTransferCompleted; + +/* Esta variable indica que buffer debo procesar/escribir */ +extern pingpong_t BufferToProcess; + +/*****************************************FUNCIONES***************************************************/ +void initDMAs(dmaLinkedListNode *, dmaLinkedListNode *); /* Inicializacion de los canales DMA */ + +#endif /* DMA_H_ */