Autor Tema: Problems with PIC16F88 and PWM in MirkoBASIC  (Leído 2123 veces)

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

Desconectado ESA_Worker

  • PIC10
  • *
  • Mensajes: 2
Problems with PIC16F88 and PWM in MirkoBASIC
« en: 12 de Diciembre de 2010, 15:09:04 »
Hi all,

I have been trying to implement an ultrasonic meassurement and I am not able to throw a PWM into RB0, here is the code:

'Definición de variables Globales
 dim   FueraRango as char
 const PULSO      as longint = 300
 const MAXIMO     as longint = 15
 
'Programa de interrupción
sub procedure interrupt
 if(PIR1.TMR1IF) then
      FueraRango=1
      PIR1.TMR1IF=0
   end if
end sub

sub procedure init_lcd
   Lcd_Config(PORTB,7,6,5,4,PORTA,2,1,0)
   Lcd_Cmd(Lcd_Clear)
end sub

sub procedure printvar (dim byref n as char[16], dim a as byte)
    dim res as char [16]
    Lcd_Cmd(Lcd_Clear)
    ByteToStr (a, res)

    Lcd_Out(1,1,n)
    Lcd_Out(2,1, res)
end sub

sub procedure pwm_ini
    Pwm_Init(40000)
    Pwm_Change_Duty(128)
end sub

sub procedure pwm_on
       Pwm_Start
       Delay_us(PULSO)
       Pwm_Stop
       Delay_us(PULSO*2)
end sub

sub procedure initerrup
    INTCON.GIE=1   'todas las int
    INTCON.PEIE=1  'overflow
    PIE1.TMR1IE=0  ' high
    PIE1.CCP1IE=1
    PIR1.TMR1IF=0  ' low
    T1CON.TMR1ON=0 'stop
end sub

sub procedure interactua
          T1CON.TMR1ON=0
          FueraRango=0
          TMR1H=0
          TMR1L=0
          T1CON.TMR1ON=1
          PIE1.TMR1IE=1
end sub

sub procedure initialization

  CMCON=0x07
  ANSEL=0x10  'Usar pines como digitales
  TRISA=0x00  'Puerto A como salida
  TRISB=0x00  'Puerto B como salida
  TRISA.3=0xFF  'Pulsador
  TRISA.4=0xFF  'Receptor
  T1CON.TMR1CS=0
  init_lcd

end sub

sub procedure espera_boton
    'Esperamos a que el botón se pulse
    while PORTA.3 <> 0
    wend
    'Esperamos a que el botón se suelte
    while PORTA.3 = 0
    wend
end sub

main:
   initialization
   pwm_ini
initial:
   initerrup
   while true
       printvar ("Pulse el boton",1)
       delay_us(100000)
       interactua
       espera_boton
       printvar ("Lanzado",1)
       delay_us(100000)
       printvar ("TXR1",PORTB.0)
       delay_us(100000)
       pwm_on

       while PORTA.3 <> 0
          printvar ("TXR2",PORTB.0)
          delay_us(100000)
       wend
       T1CON.TMR1ON=0
       PIE1.TMR1IE=0
       INTCON.GIE=1
     
   wend
end.


I want to know why pulse is not going thorugh the transmisor when in the laboratory without code, only inserting frequencies the board work fine.

Thanks!!!

IN SPANISH: El caso es que no me sale el pulso por el transmisor de ultrasonido, la placa está bien porque metiendole directamente la frecuencia y midiendo con el osciloscopio funiona, pero no sé por qué no me sale el pulso por el transmisor...si alguien pudiera ayudarme...GRACIAS!!!!

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Problems with PIC16F88 and PWM in MirkoBASIC
« Respuesta #1 en: 12 de Diciembre de 2010, 17:02:01 »
Hola ESA_Worker.

Exactamente no entiendo tu problema, pero he logrado ver que en tu código tienes 2 procedimientos de interrupción, esto posiblemente provoque ambiguedades al complidador.

En MikroBasic lo recomendable es que solo exista un procedimiento de Interrupción y que ahí preguntes que activo la interrupción y luego tomar las dieciciones correspondientes.

Te recomiendo que pongas un esquema del proyecto así podremos entenderte mejor, también que digas con que programa y con que versión estas trabajando.

Para poner una imagen puedes leer este link http://www.todopic.com.ar/foros/index.php?topic=8120.0.

Tambien revisa este otro http://www.todopic.com.ar/foros/index.php?topic=20332.0

Como dije antes, no se exactamente cual es tu problema, es decir, no se si tu problema es que el PIC no genera la onda PWM o si el PIC genera la onda PWM y el transmisor no la recibe y la retrasnmite.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado ESA_Worker

  • PIC10
  • *
  • Mensajes: 2
Re: Problems with PIC16F88 and PWM in MirkoBASIC
« Respuesta #2 en: 12 de Diciembre de 2010, 18:45:14 »
Hola bigluis,

mi problema es que el PIC no genera la onda y por lo tanto el receptor no la recibe, no sé cómo comprobar que el PIC produce la onda. Yo hago visualizar la patilla RB0 en el LCD,pero siempre es cero...con lo cual no sé si hay onda o no....¿eso te sirve?

Un saludo,

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Problems with PIC16F88 and PWM in MirkoBASIC
« Respuesta #3 en: 12 de Diciembre de 2010, 23:05:22 »
¿Que PIC estas utilizando?

Según leo en tu código usas las funciones PWM_init y PWM_start, estas funciones solo sirven si el PIC que estas utilizando posee un modulo CCP, además en la mayoría de PIC que he utilizado la salida PWM no es en el PIN RB0, por lo cual dudo mucho que te funcione.

Lo otro podría ser que intentas implementar la señal PWM mediante software, pero tampoco miro por ningún lado donde mandas a activar y desactivar el pin RB0.

Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Problems with PIC16F88 and PWM in MirkoBASIC
« Respuesta #4 en: 13 de Diciembre de 2010, 01:03:34 »
Ese codigo te lo bajaste de un sitio mejor seria hacer un codigo mas chico directo al pwm para mejor entendimiento del mikro basic.