Autor Tema: PWM+pic pero sin utilizar el modulo interno [C18]  (Leído 2956 veces)

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

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
PWM+pic pero sin utilizar el modulo interno [C18]
« en: 16 de Abril de 2009, 17:08:11 »
bueno, la idea es la siguiente queria saber si alguien ha logrado hacer por medio de codigo en C18 un pwm sin utilizar el modulo interno del microcontrolador es decir hacer que una salida digital haga la funcion de un pwm.
de manera que haga lo siguiente, que el ciclo de trabajo sea regulable y lo haga por medio de funciones matematicas, una de las ideas que tenia era diseñar algo que cumpla la siguiente funcion:

RH0 = 0 [esta seria la salida que haria el pwm]

y la funcion matematica haria la operacion para definir el duty cycle  del pwm haciendo una simple diferencia

x - y = f

x es un valor aleatorio
y es un valor aleatorio
f es el duty cycle

como puedo hacer para que RH0 varie sus tiempos de prendido y apagado [duty cycle] por medio del valor f?

si alguien se le ocurre algun codigo que me diga por que realmente no se como hacerlo.

Gracias!

Saludos

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #1 en: 17 de Abril de 2009, 10:22:18 »
nunca hice algo asi, pero a ojo de lince te digo que podrias apoyarte usando unos de los timers o incluso dos, para generar los ciclos del 1 logico y del cero.

saludos  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #2 en: 17 de Abril de 2009, 16:01:04 »
gracias por responder de hecho dada la circunstancia de que veo un poco complicado el hecho de hacerlo sin el modulo pwm me he puesto a leer un poco y es posible el uso del mismo solo que tengo problemas con el pic 18f97j60 por que al usar el stack no entiendo muy bien a donde debo configurarle los pwm para que los pines de salida multiplexados esten a donde deben. entonces la pregunta del millon.
Como debo hacer para que los pines que estan multiplexados esten a donde yo quiero y no donde el micro los trae por defecto?

Gracias!

Saludos!

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #3 en: 17 de Abril de 2009, 16:32:35 »
ese pic trae los pines del pwm re-mapeables?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #4 en: 17 de Abril de 2009, 20:59:43 »
si pero no puedo terminar de enteder de que manera se debe mapear el puerto en el caso de usar el TCP/IP Stack 4.51 y definitivamente es demasiado complicado el entorno y no tengo idea a donde puede estar o como esta definido y los manuales de C18 que salen en internet NO ME SIRVEN por que no sale como mapear los puertos del pwm como yo quiero y los intentos fallidos que tuve me han terminado por ganar realmente no se como hacerlo. si tenes alguna idea de como lo harian en C18 te agradeceria una sugerencia.
saludos.

CsDFiV

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #5 en: 18 de Abril de 2009, 08:03:15 »
tengo unos apuntes pero en c30, dejame buscarlos derepente te pueden servir. nadie a usado ese pic en el foro?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #6 en: 18 de Abril de 2009, 13:56:53 »
el que ha usado este microcontrolador es PICMOUSE en su placa ethernet pero no puedo dar con el para ver si es que conoce algo acerca del tema. Logre avanzar algo leyendo un poco mas la hoja de datos y los archivos de C18 pero no lo suficiente para poder terminar de mapear los puertos del PWM :S

estare esperando alguna respuesta.

Saludos!.


CsDFiV

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: PWM+pic pero sin utilizar el modulo interno [C18]
« Respuesta #7 en: 21 de Abril de 2009, 14:12:30 »
aca

Código: Objective-C
  1. //--------------------------------------------------------------------------------------------------------------------------------------//
  2. // Programa                                     : p7
  3. // Descripcion                          : manejo de MMC/SD cards
  4. // Frecuencia Externa   : Cristal 10MHz con PLL = 80MHz
  5. //      Frecuencia de Reloj     : 80MHz/2 = 40MHz = 40MIPS
  6. //      Nombre de Archivo       : p7.c
  7. // Compilador                           : C30 Compiler by Microchip Technology
  8. //--------------------------------------------------------------------------------------------------------------------------------------//
  9. #include "p33FJ16GP304.h"//encabezado
  10. _FOSCSEL(0x0003);//controla los CB del oscilador
  11. _FOSC(0x00e2);//controla los CB del oscilador
  12. #define FCY 40000000UL//frecuencia de operación
  13. #define Fms (FCY/1000) //coeficiente para milisegundos
  14. #define Fus (FCY/1000000) //coeficiente para microsegundos
  15. #include "h_libpic30.h"
  16. #include "sd_card.h"
  17.  
  18.  
  19. int respuesta;
  20.  
  21. /*inicio de funcion principal*/
  22. int main(void)
  23. {
  24. //configuración del oscilador del microcontrolador
  25. //se utilizará un cristal externo de 10MHz conectado
  26. //al oscilador primario, luego se le aplicará el PLL
  27. //para obtener 80MHz es decir 40MIPS
  28. //80MHz =  ( (10MHZ/N1)xM)/N2
  29.         CLKDIVbits.PLLPRE=0; // N1=2 primero se divide la frecuencia entre N2
  30.         PLLFBD=30; // M=32 luego se le multiplica por M
  31.         CLKDIVbits.PLLPOST=0; // N2=2 finalmente se le divide entre N1
  32.  
  33. //configuracion de puertos como salidas digitales
  34.         AD1PCFGL=0Xffff;//configuro todos los pines como digitales
  35.         TRISA=0;//todos los pines del porta son salida
  36.         TRISB=0;//todos los pines del portb son salida
  37.         PORTA=0;//dispara 1 en todos los pines del porta
  38.         PORTB=0;//dispara 1 en todos los pines del portb
  39. //
  40. //-------------------------------------------------------------------------
  41. //remapeando los pines del spi modo master
  42. //en los siguientes pines:
  43. //SDO-----      pin11   RP13            output
  44. //SDI----       pin14   RP14            input
  45. //CLK-----      pin15   RP15            output
  46. //-------------------------------------------------------------------------
  47.         _RP13R=7;//sdo se conecta con rp13
  48.         _SDI1R=14;//sdi se conecta con rp14
  49.         _RP15R=8;//clk se conecta con rp15
  50. //
  51. //-----------------------------------------------------------------------
  52. //configurando el modulo SPI del microcontrolador
  53. //para Modo Master con 3 Pines de Bus de Control
  54. //-----------------------------------------------------------------------
  55.         configura_spi();
  56.        
  57.         respuesta=configura_sd();
  58.  
  59.         while(1);
  60.  
  61. }
  62. /* Fin de la funcion principal */
  63.  
  64.  
  65. //
  66. //----------------------------------------------------------------------------
  67. //configura el modulo spi del microcontrolador
  68. //en modo master,para un clock de 208Hz
  69. //----------------------------------------------------------------------------
  70. void configura_spi()
  71. {
  72.         _TRISB12=0;//pone como salida el pin sdcs
  73.         sdcs=1;//tarjeta sin seleccionar
  74.         // init the spi module for a slow (safe) clock speed first
  75.         SPI1CON1 = 0x013c;  // CKE=1, SMP=0, CKP=0, prescale 1:64
  76.         SPI1STAT = 0x8000;  // enable the SPI2 peripheral
  77. }
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com


 

anything