DMA

Boa Tarde.
No âmbito da execução de um projeto utilizando o arduino due, tenho duvidas na forma de enviar para a memoria um sinal ADC por intermédio d DMA. É uma tecnologia que ainda estou numa fase de aprendizagem e como tal se alguém tiver conhecimento sobre este assunto gostaria que me desse informações para tentar chegar a solução.

Obrigado...

A arquitetura do ATMEGA328 e similares não provê acesso direto a memória a partir dos periféricos internos ao MCU. O DMA a que você se refere seria isso, certo?

Abraços

nu

Boa Tarde.

O que pretendia é o que mostra a imagem, o sinal recebido na ADC passa para a memória por intermédio da DMA e depois essa informação vai para a DAC.

Sem Título.png

Já pesquisaste as bibliotecas do Arduino?

Isso apenas funciona com o Due. Porque queres transferir algo analógico para outro sinal analógico com um sistema digital?

Para o trabalho que estou a fazer estou a utilizar o arduino DUE, e nas bibliotecas não descobri grande coisa. O trabalho que tenho de fazer consiste num sistema de localização indoor. Numa fase de teste vou usar o som, para isso, tenho que usar um microfone para captar um sinal e enviá-lo para a DAC. Mas no tratamento deste sinal queria que pode-se guardar esse sinal na memoria e à medida que recebia um novo sinal o que estava na memória passava para a DAC e assim sucessivamente. E isto só me parece possível a partir da iteração com a DMA.

Infelizmente ainda não instalei a IDE que funciona com o DUE... e a julgar pela qualidade do DUE, não me vejo a fazer isso nos tempos mais próximos.

Já experimentei DMA em ARM com uma Maple Leaf e aquilo funcionou bastante bem, mas as bibliotecas deles podem estar mais desenvolvidas. Já espiaste nos directórios do Arduino para ver o que lá tem sobre DMA? Pode ser que já haja uma biblioteca ou isso.

Vou tentar fazer algo a partir do datasheet do chip. Mas obrigado pelos conselhos.

É mais simples ver se alguém já inventou a roda...

Dá uma olhada nos ficheiros da IDE. Nunca se sabe.