Versão limpa em 04/09/2014. Telnet funcionando.

Dependencies:   EthernetInterface mbed-rtos mbed NTPClient

Committer:
rebonatto
Date:
Thu Sep 04 19:40:18 2014 +0000
Revision:
0:66d8bd1f9d4c
Vers?o do protegemed com limpeza da memoria. Est? com mailbox de 10 posi??es e telnet funcinando.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rebonatto 0:66d8bd1f9d4c 1 /*
rebonatto 0:66d8bd1f9d4c 2 * dma.c
rebonatto 0:66d8bd1f9d4c 3 *
rebonatto 0:66d8bd1f9d4c 4 * Created on: 03/07/2011
rebonatto 0:66d8bd1f9d4c 5 * Author: francisco
rebonatto 0:66d8bd1f9d4c 6 */
rebonatto 0:66d8bd1f9d4c 7 #include <LPC17xx.h>
rebonatto 0:66d8bd1f9d4c 8 #include "dma.h"
rebonatto 0:66d8bd1f9d4c 9
rebonatto 0:66d8bd1f9d4c 10 #define LPC_GPDMACH ((LPC_GPDMACH_TypeDef **) LPC_GPDMACH0_BASE )
rebonatto 0:66d8bd1f9d4c 11
rebonatto 0:66d8bd1f9d4c 12 void init_dma()
rebonatto 0:66d8bd1f9d4c 13 {
rebonatto 0:66d8bd1f9d4c 14 LPC_SC->PCONP |= 1<<29; //Power GPDMA module
rebonatto 0:66d8bd1f9d4c 15
rebonatto 0:66d8bd1f9d4c 16 LPC_GPDMA->DMACConfig = 1; //Enable GPDMA
rebonatto 0:66d8bd1f9d4c 17
rebonatto 0:66d8bd1f9d4c 18 //Clear any previous interrupts
rebonatto 0:66d8bd1f9d4c 19 LPC_GPDMA->DMACIntTCClear = 0xFF;
rebonatto 0:66d8bd1f9d4c 20 LPC_GPDMA->DMACIntErrClr = 0xFF;
rebonatto 0:66d8bd1f9d4c 21
rebonatto 0:66d8bd1f9d4c 22 NVIC_SetPriority(DMA_IRQn,(1<<__NVIC_PRIO_BITS) - 1);
rebonatto 0:66d8bd1f9d4c 23 NVIC_EnableIRQ(DMA_IRQn);
rebonatto 0:66d8bd1f9d4c 24 }
rebonatto 0:66d8bd1f9d4c 25
rebonatto 0:66d8bd1f9d4c 26 void setup_channel(dmaLinkedListNode* pList,int ch,int src,int dst)
rebonatto 0:66d8bd1f9d4c 27 {
rebonatto 0:66d8bd1f9d4c 28 //Initialize the channel with previously configured LL;
rebonatto 0:66d8bd1f9d4c 29 LPC_GPDMACH0->DMACCSrcAddr = pList->sourceAddr;
rebonatto 0:66d8bd1f9d4c 30 LPC_GPDMACH0->DMACCDestAddr = pList->destAddr;
rebonatto 0:66d8bd1f9d4c 31 LPC_GPDMACH0->DMACCControl = pList->dmaControl;
rebonatto 0:66d8bd1f9d4c 32 LPC_GPDMACH0->DMACCLLI = (unsigned long int) pList & 0xFFFFFFFC; //Lower bits must be 0
rebonatto 0:66d8bd1f9d4c 33
rebonatto 0:66d8bd1f9d4c 34 int transfer_type;
rebonatto 0:66d8bd1f9d4c 35 if(src == DMA_MEMORY && dst != DMA_MEMORY)
rebonatto 0:66d8bd1f9d4c 36 {
rebonatto 0:66d8bd1f9d4c 37 transfer_type = DMA_MEMORY_TO_PERIPHERAL;
rebonatto 0:66d8bd1f9d4c 38 src = 0;
rebonatto 0:66d8bd1f9d4c 39 }
rebonatto 0:66d8bd1f9d4c 40 else if(src != DMA_MEMORY && dst == DMA_MEMORY)
rebonatto 0:66d8bd1f9d4c 41 {
rebonatto 0:66d8bd1f9d4c 42 transfer_type = DMA_PERIPHERAL_TO_MEMORY;
rebonatto 0:66d8bd1f9d4c 43 dst = 0;
rebonatto 0:66d8bd1f9d4c 44 }
rebonatto 0:66d8bd1f9d4c 45 else if(src == DMA_MEMORY && dst == DMA_MEMORY)
rebonatto 0:66d8bd1f9d4c 46 {
rebonatto 0:66d8bd1f9d4c 47 transfer_type = DMA_MEMORY_TO_MEMORY;
rebonatto 0:66d8bd1f9d4c 48 src=dst = 0;
rebonatto 0:66d8bd1f9d4c 49 }
rebonatto 0:66d8bd1f9d4c 50 else if(src != DMA_MEMORY && dst != DMA_MEMORY)
rebonatto 0:66d8bd1f9d4c 51 transfer_type = DMA_PERIPHERAL_TO_PERIPHERAL;
rebonatto 0:66d8bd1f9d4c 52
rebonatto 0:66d8bd1f9d4c 53 //Set up all relevant bits
rebonatto 0:66d8bd1f9d4c 54 LPC_GPDMACH0->DMACCConfig = (src<<1) | (dst<<5) | (transfer_type<<11) | (1<<15);
rebonatto 0:66d8bd1f9d4c 55
rebonatto 0:66d8bd1f9d4c 56 //Finally, enable the channel -
rebonatto 0:66d8bd1f9d4c 57 LPC_GPDMACH0->DMACCConfig |= 1<<0;
rebonatto 0:66d8bd1f9d4c 58 }
rebonatto 0:66d8bd1f9d4c 59
rebonatto 0:66d8bd1f9d4c 60 void stop_channel()
rebonatto 0:66d8bd1f9d4c 61 {
rebonatto 0:66d8bd1f9d4c 62 LPC_GPDMACH0->DMACCConfig &= ~(1<<0);
rebonatto 0:66d8bd1f9d4c 63 }