Autor Tema: Problema con Mikcrobasic y pic16f819  (Leído 3318 veces)

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

Desconectado QUINO22

  • PIC10
  • *
  • Mensajes: 12
Problema con Mikcrobasic y pic16f819
« en: 15 de Junio de 2010, 12:11:52 »
Hola amigos,como estan?espero que me puedan ayudar.Les comento que estoy programando en microbasic con la libreria uart.El problema es que estoy comunicando 2 pic mediante uart(pic18f4550 y pic16f819) y cuando quiero enviar los datos via uart desde el pic16f819,el pin definido como transmisor siempre se me queda seteado y en el pin de recepcion pic18f4550 que esta programado como receptor siempre obtengo el valor 255 ya que siempre me esta enviando el valor $FF(255) desde el pic16f819.No se si en el codigo del 16f819 tendre algo mal con los registros de interrupcion o que.El asunto que el problema esta en el 16f819.Este es el codigo:

DIM BATERIA AS BYTE
DIM VALORBATERIA AS BYTE

INICIO:

TRISA=$F1
TRISB=$EE

PORTA=$00
PORTB=$00

ADCON1=$8E
ADCON0=$80

ADC_INIT()

BATERIA=ADC_READ(0)
IF BATERIA<=255 AND (BATERIA > 191) THEN
   VALORBATERIA=40 'BATERIA AL 100%
     ELSE
       IF BATERIA<=191 AND (BATERIA>127) THEN
         VALORBATERIA=41 'BATERIA AL 50%
             ELSE
              IF BATERIA<=127 THEN
               VALORBATERIA=42 'BATERIA AL 0%
              END IF
       END IF
END IF

SOFT_UART_INIT(PORTB,2,0,19200,0) THEN

SOFT_UART_WRITE(VALORBATERIA)
DELAY_MS(100)

GOTO INICIO.


Espero su respuesta y ayuda.Un abrazo!.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #1 en: 15 de Junio de 2010, 12:46:20 »
Hola, los errores que miro son los siguientes:

1. No aparece por ningun lado el Label main, lo que supongo que te dará errores.
2. La siguiente linea de código está mal
Código: Visual Basic
  1. SOFT_UART_INIT(PORTB,2,0,19200,0) THEN

Tienes que quitarle el THEN y deberías poner esta línea fuera del ciclo repetitivo que estas haciendo ya que supongo que solo necesitas inicializar una vez el UART.

Código: Visual Basic
  1. DIM BATERIA AS BYTE
  2. DIM VALORBATERIA AS BYTE
  3.  
  4. main:
  5.  
  6. TRISA=$F1
  7. TRISB=$EE
  8.  
  9. PORTA=$00
  10. PORTB=$00
  11.  
  12. ADCON1=$8E
  13. ADCON0=$80
  14.  
  15. ADC_INIT()
  16.  
  17. SOFT_UART_INIT(PORTB,2,0,19200,0)
  18.  
  19. BATERIA=ADC_READ(0)
  20.  
  21. INICIO:
  22. IF BATERIA<=255 AND (BATERIA > 191) THEN
  23.    VALORBATERIA=40 'BATERIA AL 100%
  24.     ELSE
  25.        IF BATERIA<=191 AND (BATERIA>127) THEN
  26.          VALORBATERIA=41 'BATERIA AL 50%
  27.             ELSE
  28.               IF BATERIA<=127 THEN
  29.                VALORBATERIA=42 'BATERIA AL 0%
  30.              END IF
  31.        END IF
  32. END IF
  33.  
  34. SOFT_UART_WRITE(VALORBATERIA)
  35. DELAY_MS(100)
  36.  
  37. GOTO INICIO.
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 QUINO22

  • PIC10
  • *
  • Mensajes: 12
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #2 en: 15 de Junio de 2010, 13:11:20 »
HOLA BIGLUIS NUEVAMENTE,LA VERDAD QUE MODIFIQUE EL CODIGO DE LA SIGUIENTE MANERA,SIGUIENDO TU CONSEJO PERO SIGUE SETEADO:

DIM BATERIA AS BYTE
DIM VALORBATERIA AS BYTE

SOFT_UART_INIT(PORTB,2,0,19200,0)

MAIN:

TRISA=$F1
TRISB=$EE

PORTA=$00
PORTB=$00

ADCON1=$8E
ADCON0=$80

ADC_INIT()

BATERIA=ADC_READ(0)
IF BATERIA<=255 AND (BATERIA > 191) THEN
   VALORBATERIA=40 'BATERIA AL 100%
     ELSE
       IF BATERIA<=191 AND (BATERIA>127) THEN
         VALORBATERIA=41 'BATERIA AL 50%
             ELSE
              IF BATERIA<=127 THEN
               VALORBATERIA=42 'BATERIA AL 0%
              END IF
       END IF
END IF



SOFT_UART_WRITE(VALORBATERIA)
DELAY_MS(100)

END.


CAPAZ QUE SEA UN PROBLEMA DE INTERRUPCIONES,QUIZA HABRA QUE DESACTIVARLAS.MIKROBASIC DICE QUE PARA UTILIZAR UART O I2C O USB HAY QUE DESACTIVAR INTERRUPCIONES Y DESPUES ACTIVARLAS NUEVAMENTE.ME CANSE DE COPIAR LOS EJEMPLOS DE MIKROBASIC PERO NO FUNCIONAN,ALGUNOS VIENEN CON ERRORES.LA VERSION QUE UTILIZO ES (MIKROBASIC PRO 8.3).ENCIMA DE INTERRUPCIONES NO TENGO NI IDEA.NO SE QUE HACER

Desconectado QUINO22

  • PIC10
  • *
  • Mensajes: 12
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #3 en: 15 de Junio de 2010, 13:13:31 »
SERA QUE EL PIC16F819 NO SOPORTA UART?Y ES POR ESO QUE ME QUEDA SETEADO?

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #4 en: 15 de Junio de 2010, 14:40:16 »
QUINO22,creo que efectivamente esa es la respuesta ya que ojeando el datasheet veo que el 16F818/819 solo tienen SSp module

Saludos

Desconectado QUINO22

  • PIC10
  • *
  • Mensajes: 12
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #5 en: 15 de Junio de 2010, 15:34:06 »
HOLA SOLAPOWER!.RECIEN ME FIJE PROBANDO CON EL PIC16F687 Y SOPORTA UART PERO IGUALMENTE EL PIN DE TRANSMICION SIGUE SETEADO.UNA VEZ CREO QUE CON EL PIC16F819 ME FUNCIONO LA TRANSMISION PERO CREO QUE HABIA TOCADO ALGO DE LAS INTERRUPCIONES,POR ESO FUNCIONO.PERO AHORA LE BORRE ESO DE LAS INTERRUPCIONES Y CREO QUE AHI ESTA EL PROBLEMA.EL TEMA DE LAS INTERRUPCIONES LAS HABIA COPIADO NO SE DE DONDE Y BUSQUE POR DOQUIER Y NO PUDE ENCONTRAR DE NUEVO EL CODIGO Y ENCIMA YO DE INTERRUPCIONES NO SE Y NO SE COMO VOLVER A CONFIGURARLO.NO SABRIAS COMO?MIKROBASIC DICE QUE HAY QUE TRABAJAR CON INTERRUPCIONES PARA TOCAR EL TEMA UART O USB O I2C.

Desconectado QUINO22

  • PIC10
  • *
  • Mensajes: 12
Re: Problema con Mikcrobasic y pic16f819
« Respuesta #6 en: 15 de Junio de 2010, 20:43:54 »
YA LO SOLUCIONE,EL PROBLEMA ERA QUE TENIA MAL CONFIGURADOS LOS PORTS Y NI ME DI CUENTA,EL ENCIERRO ME ESTA HACIENDO MAL JAJA.GRACIAS POR LA AYUDA.ABRAZO!


 

anything