Autor Tema: dudas DMA  (Leído 6829 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: dudas DMA
« Respuesta #15 en: 27 de Febrero de 2014, 17:51:23 »
También es útil (y creo que fué el primer uso que se le dió) para poder copiar bloques de memoria a memoria (por ej. hacer el famoso memcpy) sin requerir del uso del procesador.


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: dudas DMA
« Respuesta #16 en: 27 de Febrero de 2014, 19:00:18 »
otro ejemplo que te pongo es el siguiente:

Tengo un IC ADC externo, este tiene 16 canales. Pues con el DMA+SPI lo activo y me olvido totalmente de hacer nada mas, cuando necesite saber que valor tiene un canal simplemente accedo a la memoria CANAL
  • y ahi obtengo el resultado del ultimo valor recogido. Todo esto esta ordenado, es decir el canal 0 pertenece a la memoria CANAL[0] asi ordenadito. Tambien se puede usar con el ADC interno el MCU el cual tambien tengo 5 canales sampleando y cuando quiera ver el valor de ese canal simplemente accedo a la memoria CANAL
  • .
Lees los 16 canales con DMA ??
Como seria esto??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: dudas DMA
« Respuesta #17 en: 27 de Febrero de 2014, 19:05:00 »
El ADC se activa en modo sampleo, lo que hace es cuando acaba un canal empieza con el otro automaticamente, pues bien ahora le metemos que el DMA cuando acabe el ADC haga la transferencia a una memoria que le indiques y ahi tienes el resultado. Es simple pero hay que configurar unos cuantos registros.

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: dudas DMA
« Respuesta #18 en: 27 de Febrero de 2014, 19:09:00 »
Y el disparador del DMA sería un pin tipo Data Ready del ADC que entraría al PIC?
-
Leonardo Garberoglio

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: dudas DMA
« Respuesta #19 en: 01 de Marzo de 2014, 21:23:01 »
Si te refieres al ADC interno del uC este tiene un evento que activa la transferencia una vez acabada la conversion y asi infinitamente, la seleccion de canales se puede especificar y tambien el orden en la memoria, el propio modulo cambia el puntero de memoria segun el canal. Si te refieres al ADC externo por SPI funciona mediante el SPI y se activa como cualquier lectura SPI, el propio SPI cuando acaba una lectura activa un evento que hace que la transferencia se active y asi infinitamente.
« Última modificación: 01 de Marzo de 2014, 21:26:48 por MerLiNz »

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: dudas DMA
« Respuesta #20 en: 14 de Marzo de 2014, 10:06:28 »
Una conulta un poco específica;

Tengo el LPC1769. Configuro el timer 1 para que resetee la cuenta con el MR0. Configuro el MR0 como para que cuente 10mseg.
Configuro el SSP0 como SPI y habilito el uso de DMA.
Configuro el DMA. Como line request uso el MAT1.0 (o sea, el pedido de DMA lo dispara el Match Register 0 del Timer1). Como surce elijo un aarray de char, como dest uso el SSP0->DR (la direccion del DATA REGISTER del SSI). Configuro el incrmeento del origen, no incremento del destino (solo quiero sacar bits por el MOSI, no quiero una comunicacion SPI con otro dispositivo)...
Pruebo todo con el analizador lógico y veo que por el MOSI salen los datos perfectos, pero lo hace solo una vez... yo esperaba que con cada Match del timer 1 con el MR0 se iba a disparar el request al DMA... no es así? que debería hacer para que se vuelva a disparar con el próximo Match?

Saludos!
-
Leonardo Garberoglio


 

anything