Autor Tema: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88  (Leído 3435 veces)

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

Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Buenas noches a todos, soy nuevo en el foro , el programa que estoy haciendo es un control de arranque, paro, inversion de giro, con corriente trifasica con el PIC16F88 mediante la comunicacion RS232 y una interfaz en labview estuve obligando a que mis librerias ocuparan memoria de otros bancos pero sin remedio de solucionar mi problema en proteus sobre desbordamiento de memoria y unos warnings que de mplab que les adjuntare, les agradeceria si me pudieran guiar , gracias.
 Empezare con los Warnings y errores de desbordamiento y finalmente colocare el codigo y librerias.

WARNING!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Release build of project `C:\Users\candi\Desktop\comunicacionserialPIC-PC\Pic16f88\RS232.disposable_mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Thu Aug 27 00:25:50 2015
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F88 "RS232.ASM" /l"RS232.lst" /e"RS232.err"
Message[302] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\LCD_4BIT.INC 105 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\LCD_4BIT.INC 117 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 63 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 65 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 107 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 110 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 113 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 115 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 155 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 158 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 161 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 164 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 166 : Invalid RAM location specified.
Warning[219] C:\USERS\CANDI\DESKTOP\COMUNICACIONSERIALPIC-PC\PIC16F88\RETARDOS.INC 168 : Invalid RAM location specified.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe" /p16F88 "RS232.o" /z__MPLAB_BUILD=1 /o"RS232.cof" /M"RS232.map" /W /x
MPLINK 4.35, Linker
Copyright (c) 2009 Microchip Technology Inc.
Errors    : 0

Loaded C:\Users\candi\Desktop\comunicacionserialPIC-PC\Pic16f88\RS232.cof.
----------------------------------------------------------------------
Release build of project `C:\Users\candi\Desktop\comunicacionserialPIC-PC\Pic16f88\RS232.disposable_mcp' succeeded.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Thu Aug 27 00:25:51 2015
----------------------------------------------------------------------
BUILD SUCCEEDED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ERRORES PROTEUS

[PIC16 MEMORY] PC= 0x1AF. Attempt to write unimplemente memory location 0x001C with 0x15 ignored
[PIC16 MEMORY] PC= 0x1B1. Attempt to write unimplemente memory location 0x001B with 0xF9 ignored
[PIC16 MEMORY] PC= 0x1B3. Attempt to write unimplemente memory location 0x001B ignored
.......
..............
.................. Y asi sucesivamente
----------------------------------------------------------------------------------------------

CODIGO

; PROGRAMA PARA ARRANCAR,PARO, INVERSION DE GIRO DE UN MOTOR TRIFASICO CON INTERFAZ EN LABVIEW
   LIST      P=16F88
   INCLUDE  <P16f88.INC>
   __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
   __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

   CBLOCK   0x0C      
   TeclaPulsada         ; Va a guardar el contenido de la tecla pulsada.
   MensajeApuntado         ; Va a guarda la dirección del mensaje apuntado.
   ENDC

#DEFINE  EnciendeMotor      PORTB,3   ; Define dónde se sitúan las salidas.
#DEFINE  ApagaMotor          PORTB,2
#DEFINE  Cambiodegiro       PORTB,1
#DEFINE  ArranqueInv      PORTB,0

TeclaEmotor      EQU   'e'         ; Enciende el motor.
TeclaAmotor      EQU   'a'         ; Apaga el motor
TeclaIgiro     EQU   'g'         ; Invierte el giro
TeclaAinverso   EQU   'r'         ; Vuelve arrancar en sentido contrario
TeclaParada      EQU   ' '         ; Para el sistema.
; ZONA DE CÓDIGOS ********************************************************************

   ORG   0
Inicio
   call   LCD_Inicializa
   call   RS232_Inicializa
   bsf      STATUS,RP0         ; Configura como salidas las 4 líneas del
   bcf      EnciendeMotor      ; del Puerto B respetando la configuración del
   bcf      ApagaMotor         ; resto de las líneas.
   bcf      Cambiodegiro
   bcf      ArranqueInv
   bcf      STATUS,RP0
   call   Parado            ; En principio todas las salidas deben estar
Principal                  ; apagadas.
   call   RS232_LeeDato      ; Espera a recibir un carácter.
   call   TesteaTeclado
   goto   Principal

; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
   addwf   PCL,F
MensajeParado
   DT " SISTEMA PARADO", 0x00
MensajeEncendido
   DT " MOTOR ENCENDIDO", 0x00
MensajeApagado
   DT " MOTOR APAGADO", 0x00
MensajeArranque
   DT " ARRANQUE DELTA", 0x00
MensajeCambio
   DT " CAMBIO DE GIRO", 0x00

; Subrutina "TesteaTeclado" -------------------------------------------------------------

; Testea el teclado y actúa en consecuencia.

TesteaTeclado
   movwf   TeclaPulsada      ; Guarda el contenido de la tecla pulsada.
   xorlw   TeclaEmotor         ; ¿Es la tecla para encender el motor?
   btfsc   STATUS,Z
   goto   Adelante         ; Sí, se desea encender el motor.

   movf   TeclaPulsada,W      ; Recupera el contenido de la tecla pulsada.
   xorlw   TeclaAmotor         ; ¿Es la tecla del movimiento para apagar el motor?
   btfsc   STATUS,Z
   goto   Atras            ; Sí, se desea apagar el motor.

   movf   TeclaPulsada,W      ; Recupera el contenido de la tecla pulsada.
   xorlw   TeclaIgiro         ; ¿Es la tecla del movimiento para invertir el giro?
   btfsc   STATUS,Z
   goto   Izquierda         ; Sí, se desea girar el motor.

   movf   TeclaPulsada,W      ; Recupera el contenido de la tecla pulsada.
   xorlw   TeclaAinverso      ; ¿Es tecla del movimiento arrancar con el giro invertido?
   btfsc   STATUS,Z
   goto   Derecha            ; Sí, se desea arrancar en ese sentido.

   movf   TeclaPulsada,W      ; Recupera el contenido de la tecla pulsada.
   xorlw   TeclaParada         ; ¿Es la tecla para parar el sistema?.
   btfss   STATUS,Z
   goto   Fin               ; No es ninguna tecla de movimiento. Sale.
Parado
   bcf      EnciendeMotor      ; Como se ha pulsado la tecla de parada se
   bcf      ApagaMotor         ; desactivan todas las salidas.
   bcf      Cambiodegiro
   bcf      ArranqueInv
   movlw   MensajeParado
   goto   Visualiza
Adelante
   bcf      ApagaMotor
   bsf      EnciendeMotor
   bcf      Cambiodegiro
   bcf      ArranqueInv
   movlw   MensajeEncendido
   goto   Visualiza
Atras
   bcf      EnciendeMotor
   bsf      ApagaMotor
   bcf      Cambiodegiro
   bcf      ArranqueInv
   movlw   MensajeApagado
   goto   Visualiza
Izquierda
   bcf      EnciendeMotor
   bcf      ApagaMotor
   bsf      Cambiodegiro
   bcf      ArranqueInv
   movlw   MensajeArranque
   goto   Visualiza
Derecha
   bcf      EnciendeMotor
   bcf      ApagaMotor
   bcf      Cambiodegiro
   bsf      ArranqueInv
   movlw   MensajeCambio

; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
; el monitor del ordenador.

Visualiza
   movwf   MensajeApuntado      ; Guarda la posición del mensaje.
   call   LCD_Borra         ; Borra la pantalla del modulo LCD.
   movf   MensajeApuntado,W   ; Visualiza el mensaje en la pantalla
   call   LCD_Mensaje         ; del visualizador LCD.
   call   RS232_LineasBlanco   ; Borra la pantalla del ordenador.
   movf   MensajeApuntado,W
   call   RS232_Mensaje      ; Lo visualiza en el HyperTerminal.
   call   RS232_LineasBlanco
Fin   return
   INCLUDE  <RS232.INC>
   INCLUDE  <RS232MEN.INC>
   INCLUDE  <LCD_4BIT.INC>
   INCLUDE  <LCD_MENS.INC>
   INCLUDE  <RETARDOS.INC>
   END
   

LIBRERÍAS

Se las dejo todas en un link para que si van a probar, incluido el código.

     www.mediafire.com/download/appechb5cp08e6j/Codigo+Librerias.rar

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #1 en: 27 de Agosto de 2015, 03:48:14 »
Imagino que es por que no estas definiendo las constantes en los CBLOCK.

El CBLOCK simplemente asigna constantes. Te doy 2 ejemplos (al lado en comentario pongo el valor asignado):

Código: ASM
  1. CBLOCK   0x0C      
  2.    TeclaPulsada          ;0x0C
  3.    MensajeApuntado    ;0x0D
  4.    ENDC
  5.  
  6.    CBLOCK
  7.    TeclaPulsada          ;0x00
  8.    MensajeApuntado    ;0x01
  9.    ENDC

Si no definis un valor comienza de 0x00. Ahora si miras tus librerias cada una posee un CBLOCK. entonces por ejemplo utilizando el de Retardos.inc y el de LCD_4bits.inc

Código: ASM
  1. ;Retardos.inc
  2.     CBLOCK
  3.     R_ContA     ;0x00
  4.     R_ContB     ;0x01
  5.     R_ContC     ;0x02
  6.     ENDC
  7.  
  8.   ;LCD_4BITS.INC
  9.     CBLOCK
  10.     LCD_Dato     ;0x00
  11.     LCD_GuardaDato     ;0x01
  12.     LCD_GuardaTRISB     ;0x02
  13.     LCD_Auxiliar1     ;0x03
  14.     LCD_Auxiliar2     ;0x04
  15.     ENDC

Entonces ocurre algo muy bueno. Si haces un

MOVLW 0x10
MOVWF LCD_Dato

Estas intentando poner ese 0x10 en el registro con la direccion 0x00, es decir el registro INDF ( que es el de acceso indirecto )
Pero aun mas lindo es que R_ContA y LCD_Dato estan apuntando al mismo registro.

Veo 2 soluciones a esto.

1- Utilizar las directivas del linker para ubicar datos y que sea el linker quien diga donde debe ubicarse. Esto requiere modificar las librerias quitandoles el CBLOCK y poniendo la directiva udata, + poner directivas como CODE, etc. Tal ves es la solucion mas compleja, pero que evita estos problemas.

Código: ASM
  1. udata
  2. Var1 res 1
  3. Double res 2
  4. Var2 res 1

2- La otra es que le pongas la direccion a cada uno de los CBLOCK.

la del archivo .ASM incluso esta mal.
Los registros de proposito general comienzan en 0x20 y vos tenes puesto 0x0C
Bueno en ese registro tenes 2 variables que ocuparian las posiciones 0x20 y 0x21
Podes poner a retardos que comienze desde 0x22, tiene 3 registros por lo cual usaria 0x22 0x23 0x24
Y asi con todos los demas. es algo bastante engorroso y haria que si tenes que agregar una variable mas tengas que cambiar todo.

O podes comenzar desde 0x40 para todas las liberias y eso te dejaria espacio para 32 variables de tu programa principal (el cual comenzaria por 0x20) Ejemplo:

Código: ASM
  1. ;RS232.asm
  2.    CBLOCK 0x20
  3.    TeclaPulsada          ;0x20
  4.    MensajeApuntado    ;0x21
  5.    ENDC
  6.  
  7.  ;Retardos.inc
  8.     CBLOCK 0x40
  9.     R_ContA     ;0x40
  10.     R_ContB     ;0x41
  11.     R_ContC     ;0x42
  12.     ENDC
  13.  
  14.   ;LCD_4BITS.INC
  15.     CBLOCK 0x43
  16.     LCD_Dato     ;0x43
  17.     LCD_GuardaDato     ;0x44
  18.     LCD_GuardaTRISB     ;0x45
  19.     LCD_Auxiliar1     ;0x46
  20.     LCD_Auxiliar2     ;0x47
  21.     ENDC
Vos elegiras cual es la mas adecuada
« Última modificación: 27 de Agosto de 2015, 03:51:26 por KILLERJC »

Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #2 en: 27 de Agosto de 2015, 14:09:29 »
Ante todo KILLERJC gracias por compartir tu conocimiento y tiempo, si tenias razón era las direcciones del CBLOCK, no obte la otra solución por mi desconocimiento , se han corregido los warnings memoria invalida , arregle algunas cosas pero otras no ,al final les expongo mis soluciones, mis inconvenientes, y mi simulacion.
CAMBIOS HECHOS
------------------------------------------------------------------------------------------
RS232.ASM
   CBLOCK   0x21      
   TeclaPulsada         ; Va a guardar el contenido de la tecla pulsada.
   MensajeApuntado         ; Va a guarda la dirección del mensaje apuntado.
   ENDC
------------------------------------------------------------------------------------------
LCD_4BIT.INC
    CBLOCK 0x24
    LCD_Dato
    LCD_GuardaDato
    LCD_GuardaTRISB
    LCD_Auxiliar1
    LCD_Auxiliar2
    ENDC
LCD_MENS.INC
-----------------------------------------------------------------------------------------
CBLOCK 0x30
    LCD_ApuntaCaracter                ; Indica la posición del carácter a visualizar
                                    ; respecto del comienzo de todos los mensajes,
                                    ; (posición de la etiqueta "Mensajes").
    LCD_ValorCaracter                ; Código ASCII del carácter a
    ENDC                            ; visualizar.
-----------------------------------------------------------------------------------------
RETARDOS.INC
    CBLOCK 0x33
    R_ContA                        ; Contadores para los retardos.
    R_ContB
    R_ContC
    ENDC
-----------------------------------------------------------------------------------------
RS232.INC
    CBLOCK 0x37
    RS232_ContadorBits
    RS232_Dato
    ENDC
-----------------------------------------------------------------------------------------
RS232MEN.INC
    CBLOCK 0x40
    RS232_ApuntaCaracter            ; Apunta al carácter a visualizar.
    RS232_ValorCaracter                ; Valor ASCII del carácter a visualizar.
    ENDC
--------------------------------------------------------------------------------------------------------------------------------------------
AL COMPILARLO
----------------------------------------------------------------------
Release build of project `C:\Users\candi\Desktop\Codigo+simulacion+fotos\Codigo+Librerias\RS232.disposable_mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Thu Aug 27 12:15:36 2015
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Users\candi\Desktop\Codigo+simulacion+fotos\Codigo+Librerias\RS232.mcs".
Clean: Done.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F88 "RS232.ASM" /l"RS232.lst" /e"RS232.err"
Message[302] C:\USERS\CANDI\DESKTOP\CODIGO+SIMULACION+FOTOS\CODIGO+LIBRERIAS\LCD_4BIT.INC 105 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\USERS\CANDI\DESKTOP\CODIGO+SIMULACION+FOTOS\CODIGO+LIBRERIAS\LCD_4BIT.INC 117 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe" /p16F88 "RS232.o" /z__MPLAB_BUILD=1 /o"RS232.cof" /M"RS232.map" /W /x
MPLINK 4.35, Linker
Copyright (c) 2009 Microchip Technology Inc.
Errors    : 0

Loaded C:\Users\candi\Desktop\Codigo+simulacion+fotos\Codigo+Librerias\RS232.cof.
----------------------------------------------------------------------
Release build of project `C:\Users\candi\Desktop\Codigo+simulacion+fotos\Codigo+Librerias\RS232.disposable_mcp' succeeded.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Thu Aug 27 12:15:37 2015
----------------------------------------------------------------------
BUILD SUCCEEDED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INCONVENIENTES PROTEUS, Se uso la version 7.7, primero comenzo a salir unos mensajes al simular stack overflow executing call instruction (asi que supuse que se refería a que no estaba poniendo return despues de cada call que hacia , y luego lo volvi a recargar el codigo , dejo de salir estos mensajes , corre la simulacion pero cuando me fijo en los bits que se envian entre el pic y el lcd el RS esta en 0 es en estado control/instruccion cuando este deberia estar en 1 registro de datos , y en el virtual terminal salen muchos caracteres cuando deberia empezar con la palabra Sistema parado, por lo mismo que explique antes. A continuacion les subo en un link la simulacion y codigo + librerias, y fotos de como es que deberia salir y como es que me sale a mi donde les explicare mas
detallado.
LINK :
http://www.mediafire.com/download/bkyc37uvv17xj48/Codigo+simulacion+fotos.rar
« Última modificación: 27 de Agosto de 2015, 14:16:21 por xbyte »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #3 en: 27 de Agosto de 2015, 18:48:38 »
Bueno, al menos se corrigieron todos los "errores" quedo solo:

Message[302] C:\USERS\CANDI\DESKTOP\CODIGO+SIMULACION+FOTOS\CODIGO+LIBRERIAS\LCD_4BIT.INC 105 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\USERS\CANDI\DESKTOP\CODIGO+SIMULACION+FOTOS\CODIGO+LIBRERIAS\LCD_4BIT.INC 117 : Register in operand not in bank 0.  Ensure that bank bits are correct.

Esto es un simple recordatorio que ahi estas modicando registros que estan fuera del banco 0
Eso lo podes quitar poniendole un

errorlevel -302

Esto ya te dice que esta bien escrito. pero no que funcione como deberia

Citar
stack overflow executing call instruction (asi que supuse que se refería a que no estaba poniendo return despues de cada call que hacia

Exactamente, ese era el problema.

Te sugiero por ahora es que vayas incstruccion por instruccion en el Proteus, cargando el .cof, de esa forma ver si es que algun valor esta fuera de lugar o se esta cargando/enviando mal.
Yo no tengo el Proteus por el cual no puedo probarlo.
Por otro lado ahora intenta probar solo una libreria por 1. Es decir, proba la del LCD solo,  si tenes que recibir datos desde el RS232 directamente ponele unas constantes, es decir rellena al inicio con valores constantes.
La idea es que probes como te dije uno por uno, de esa forma ir eliminando las causas del problema. Sino todo junto es bastante complicado.

EDIT:
Recien acabo de ver algunas cosas mas y tenes mas problemas todavia :), tu RS232 esta realizado por software, esto significa que puede perder muchisimos datos que le lleguen desde la computadora. es algo que vas a tner que cambiar y hacerlo por interrupcion con el modulo de la UART, es decir reformar el codigo de la UART. Al menos no te sirve para algo como lo que estas haciendo.

Hay MAS errores.
TeclaPulsada es un registro, pero que nunca se le asigna un valor, luego lo comparas sin sentido ya que siempre va a valer 0 ( si es que en el reset es 0 ).

Las demas cosas no me fije. Pero en ASM mejor ir probando parte por parte que hacer todo junto. es una Recomendacion que te doy.
« Última modificación: 27 de Agosto de 2015, 22:39:30 por KILLERJC »

Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #4 en: 28 de Agosto de 2015, 16:05:02 »
 nuevamente muy agradecido, killerjc, con tu guia, y  las increíbles herramientas de seguimiento  paso a paso de código que tiene el proteus (ref: libro compilador c y simulador proteus para microcontroladores) , vi que estaba equivocado en los pines de recepción y transmisión , ademas de eso vi otro error como decias el uart se debe reformar ya que cambia de pic a pic. estoy muy agradecido, por todo su conocimiento y ayuda , en lo que pueda compartir con este gran foro estoy dispuesto, si me equivoque en alguna forma de publicar solo les pido que me corrijan soy nuevo, ahora hacer la interfaz y implementar, gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #5 en: 28 de Agosto de 2015, 20:15:24 »
No hay problema, cualquier duda que tengas alguien va a tratar de solucionartela en lo posible

Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #6 en: 30 de Agosto de 2015, 01:36:12 »
Gracias por todo el conocimiento, es el foro mas completo sobre micro controladores , ya he terminado mi código 100% sin errores en compilación y también en solucionan corre perfecto, ahora lo estuve haciendo en físico, pero en el lcd no se muestra que haya una comunicación entre la pc y el pic, en los libros micro controladores pic de omar enrique , compilar c de eduardo garcia y el desarrollo de proyectos me dicen que debe haber un voltaje de -12 volts cuando es un alto(1) y un 12+ cuando es un bajo(0) en transmisión,recepcion , o cuando esta en reposo debe haber un voltaje en los pines, lo he medido con mi multitester pero en ninguno de los casos antes mencionados hay voltaje, le he dado muchas vueltas y no doy con la solucion
 usb serial macho que les dejo para que lo vean a ver si alguien uso uno de estos para una implementacion o algo similar

LINK DE EL USB-SERIAL QUE ME COMPRE
___________________________________________________________________________________________________________________________________________________________________________________________________

https://www.google.com.pe/search?q=usb+serial+rs232&espv=2&biw=1536&bih=713&source=lnms&tbm=isch&sa=X&ved=0CAYQ_AUoAWoVChMI_8b0uPrPxwIVx6GACh0o9gwG#imgdii=SCqKF2lQfbvX1M%3A%3BSCqKF2lQfbvX1M%3A%3Bno-6KJuIzN1y8M%3A&imgrc=SCqKF2lQfbvX1M%3A ,

Nota : Ya he revisado las conexiones de mi lcd y he probado con otros programas que no tienen comunicacion rs232 y todo esta bien, ademas revise pin por pin los voltajes y mi codigo e interfaz.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #7 en: 30 de Agosto de 2015, 01:44:52 »
No creo que tengas mas de 5V a la salida de ese RS232 por que el USB tiene una tension de 5V ( a no ser que exista un elevador de tension el cual no creo ).

Por otro lado vas a tener que verlo con un osciloscopio que permita un captura de disparo unico. o un analizador logico. sino no creo que lo puedas medir con el tester y poder asegurarte.
Tambien debes tener que tener el HW para convertir ese RS232 para que entre en la UART (El circuito mas popular usa un MAX232), con buscar PIC RS232 te van a salir unos cuantos ejemplos/circuitos

Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #8 en: 30 de Agosto de 2015, 11:08:51 »
gracias por responder, Si como dices deberia tener al menos 5 volts como pensaba, que es lo logico para que envie los datos, pero nada 0v, entre tierra y los demas pines, la ultima opción como dices es ir al osciloscopio , lo que no te entendi es hw para converitr ese rs232
para que entre a la uart, estoy usando el integrado RS232 para comunicarlo con mi pic, y de mi cable usb serial que tiene salida macho, le adapte un cable rs232 hembra-hembra, le puse  unos cables para ver que la transimision se hiciese pero nada,  de ahi solo le deje al cable usb-serial macho conectado a una hembra y de la hembra solde tres cables y lo conecte al rs232, no se si este bien asi la conexion o me estoy equivocando, talvez tiene que ser una conexion rs232 hembra-macho.

Video de donde contrui mi cable rs232 hembra-hembra

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #9 en: 30 de Agosto de 2015, 23:42:34 »
Lo unico que te interesa son los pines RX / TX y GND , lo que no se si tu conversor USB/RS232 cuando lo convierte usara las señales de -5/+5V o directamente se movera desde 0 a 5V, pero esto es por si el micro necesita algun integrado que convierat los niveles.
Por lo otro que no tenes señal, puede ser por que no se esta enviando nada. Deberias usar un osciloscopio como dije. conectarlo al pin que transmite la PC y observar si esta la señal.

Pienso que es un error de HW (Hardware) o en la conexcion, ya que el programa corre bien en el proteus dijiste. Por ahi suele funcionar mal en fisico cuando estan mal puestos los fuses, pero si decis que lo unico que esta mal es el tema de la recepcion de los datos hay que concentrarse en eso.


Desconectado xbyte

  • PIC10
  • *
  • Mensajes: 6
Re: Arranque de motor trifasico con interfaz en labview,desborde de memoria.PIC16F88
« Respuesta #10 en: 01 de Septiembre de 2015, 01:23:23 »
si estuve revisando bien mi conexión, y es la que estaba fallando, desarme el adaptador usb-rs232 y tenia 7v entre pin de transimision y tierra y 4 aprox entre recepción y tierra, ya lo he solucionado mejorando la soldadura ya que por 1 o 2 dolares para el estaño que le colocan, funciona todo correctamente, gracias por todo igual me sirvió bastante tu guía, ahora bueno solo a hacer la etapa de potencia, y si por ahí les gustaría que dejara mi informe como lo fui construyendo la etapa de potencia, me avisan que con gusto se los subiré. :)


 

anything