Autor Tema: Mis primeros pasos con el 18F4550  (Leído 199721 veces)

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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #120 en: 08 de Febrero de 2008, 19:32:20 »
Hola Pali, estoy probando los ejemplos:

- ejemplo6_parte5
- ejemplo6_parte6

El ejemplo6_parte5 no me funciona bien. No siempre que pulsas sobre enviar el caracter "a" lo hace, a veces lo hace y a veces no. Idem para la recepción del mensaje enviado por el PIC.

Creo que se debe a:

Código: [Seleccionar]
Private Sub Timer1_Timer()
On Error GoTo paca
DoEvents
If MSComm1.PortOpen = True Then
    DoEvents
    lblestado.Caption = "Conectado"
    Debug.Print "Conectado"
    MSComm1.PortOpen = False
    Exit Sub
Else
    DoEvents
    MSComm1.PortOpen = True
    Exit Sub
End If
paca: Debug.Print Err.Number & ": " & Err.Description
     Select Case Err.Number
        Case 8002   'Número de puerto no válido
            DoEvents
           lblestado.Caption = "Desconectado"
        Case 8005 'el puerto ya está abierto
            DoEvents
            lblestado.Caption = "puerto abierto"
        Case 8012 '8012 el dispositivo no está abierto
            DoEvents
            lblestado.Caption = "Desconectado"
        Case 8015
            DoEvents    ' para evitar retardos en bucles
            lblestado.Caption = "Desconectado"
    End Select
      Exit Sub
End Sub

En este procedimiento entra cada 10ms y está contínuamente cerrando y abriendo el puerto. Por eso si intentas enviar el caracter "a" y el puerto está cerrado pués no lo envia. Idem al recibir.

¿Qué te parece?


Hola pocher

me alegro que alguien haga prueba con esos ejemplos y exponga las fallas :mrgreen:

si es cierto, a veces lo envía y a veces no, y pienso que es por los tiempos del timer, también me ocurría a veces que se quedaba en un loop infinito y se colgaba la aplicación del vb.

pronto retomaré ese estudio, porque estoy en un proyecto que involucra esas transferencias, seguro que cuando vea esos codigos por segunda vez, ya habré madurado un poco esa parte de la programación y resolveré dichas fallas.

cuando hice esos programas, lo unico que me interesaba era entenderlo y que funcionara, y cumplió su cometido, ahora viene la segunda etapa, ajuste y depuración.



Otra cosilla, en el adjunto para bajar del ejemplo6_parte6 no aparece la parte de VB. El código se podría copiar pero la parte gráfica no. Que raro que en todo este año que ha pasado desde que lo publicaste nadie haya dicho nada.

sisi, que pena  :(, no subí ese ejemplo, ya lo busco a la casa y lo subo.  :o


he aquí el programa para el PC hecho en VB6.0 del ejemplo6parte6





« Última modificación: 09 de Febrero de 2008, 15:20:01 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Black_Knight.B

  • PIC10
  • *
  • Mensajes: 3
Re: Mis primeros pasos con el 18F4550
« Respuesta #121 en: 08 de Enero de 2009, 01:34:56 »
Que gran Topic en serio................. mis mas sinceras felicitaciones para PalitroqueZ, me esta siendo de mucha ayuda ahora q empiezo con este PIC.

Saludos

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Mis primeros pasos con el 18F4550
« Respuesta #122 en: 08 de Febrero de 2009, 22:45:11 »
Saludos! he estado mucho tiempo alejado de este mundillo, pero me he propuesto volver y seguir por donde me quede, empezando con el modulo usb y este hilo creo que me va a ser de gran ayuda, asi que queria darte las gracias por compartir tus hallazgos y trabajos con todo el foro.
Saludos desde Córdoba, españa

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Mis primeros pasos con el 18F4550
« Respuesta #123 en: 21 de Febrero de 2009, 19:36:29 »
Hola de nuevo, ya hice algunas cosas con el 18f4550, pero estoy a la mitad del camino. Me propuse usar el VisualBasic.Net, y he tenido problemillas en el uso de los comando para puerto serie en modo cdc, y ahora me propongo a intentarlo con el uso de la API,pero creo que tambien me dara dolores de cabeza. ¿Alguien ha usado visualbasic.net? porque una ayuda siempre viene bien.
Saludos desde Córdoba, españa

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Mis primeros pasos con el 18F4550
« Respuesta #124 en: 21 de Febrero de 2009, 21:16:24 »
Estoy realizando el ejemplo de abrir/cerrar el puerto ¿Hace falta enlazar a la mpusbapi.dll de alguna manera especial? Yo declaro las librerias, asi:

Código: [Seleccionar]
Public Declare Function MPUSBGetDLLVersion Lib "mpusbapi.dll" () As Long

    Public Declare Function MPUSBGetDeviceCount Lib "mpusbapi.dll" (ByVal pVID_PID As String) As Long

    Public Declare Function MPUSBOpen Lib "mpusbapi.dll" (ByVal instance As Long, ByVal pVID_PID As String, ByVal pEP As String, ByVal dwDir As Long, ByVal dwReserved As Long) As Long

    Public Declare Function MPUSBClose Lib "mpusbapi.dll" (ByVal handle As Long) As Long

    Public Declare Function MPUSBRead Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

    Public Declare Function MPUSBWrite Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

    Public Declare Function MPUSBReadInt Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

Cuando despues intento usar :

Código: [Seleccionar]
   Private Sub Form_Load()
   OpenMPUSBDevice     'abre comunicaciones
End Sub

Me dice que variable no esta declarada.

Sin usar esta declaración, me compila pero al intentar abrir me dice:
Código: [Seleccionar]
No se puede encontrar el punto de entrada denominado 'MPUSBOpen' en el archivo DLL 'mpusbapi.dll'.
La .dll esta en la misma carpeta, pero es como si no se "conectara" con la api. Uso visualbasic.net
Saludos desde Córdoba, españa

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Mis primeros pasos con el 18F4550
« Respuesta #125 en: 22 de Febrero de 2009, 22:00:55 »
del p...tas todo lo que han hecho con este pic, yo espero dominar el  877 (me ha sacado canas) y poder iniciarme en programas basicos con el 18F4550 como cuando me inicie con el 16F84A "prendiendo y apagando un led" :mrgreen:

Felicitaciones y gracias por estos aportes
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 230
Re: Mis primeros pasos con el 18F4550
« Respuesta #126 en: 22 de Febrero de 2009, 23:03:35 »
Buenas, despues de haber probado con exito el ejemplo de Diego, del keyboard USB, me dispuse a probar hacer un joystick, asi que con el mismo cirtuito, intento hacer andar el AD del 18f4550, pero no hay caso.. no funciona, el resultado siempre es 0, probe cambiando distintos canales, distntas frecuencias de conversion, y nada, lo utilice muchas veces a la conversion AD con el 18f452, y ahora no puedo hacer andar en el 455, pego un trozo del programa donde configuro distintas cosas para el AD, a ver si alguien ve un error, lamentablemente no tengo otro pic para comprobar que no este quemado el AD.
En este ejemplo envio el dato por USB, tambien para asegurarme que no era error del USB, hice la prueba con el puerto serie, pero siempre lo mismo.
Desde ya gracias.
Alejandro.
Código: CSS
  1. void main() {
  2.    int8 Trim[2];
  3.    int8 Buffer;
  4.  
  5.    set_tris_a(0b00001111);
  6.    //set_tris_c(0b11110000);
  7.    
  8.    setup_adc_ports(ADC_CLOCK_DIV_64);
  9.    setup_adc_ports( AN0_TO_AN3  );
  10.    setup_comparator(NC_NC_NC_NC);
  11.    setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 );
  12.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_BIT);
  13.  
  14.  
  15.    delay_ms(500);
  16.  
  17.    usb_init_cs();
  18.  
  19.  
  20.    port_b_pullups(false);
  21.  
  22.    set_tris_b(0b00000001);
  23.    ext_int_edge(0,L_TO_H);
  24.    enable_interrupts(int_ext);
  25.    disable_interrupts(INT_TIMER1);
  26.    disable_interrupts(int_tbe);
  27.    enable_interrupts(INT_TIMER0);
  28.    enable_interrupts(global);
  29.  
  30.    set_adc_channel(1);
  31.  
  32.  
  33. while (TRUE)
  34.    {
  35.       int8 rTemp;
  36.       usb_task();
  37.       usb_debug_task();
  38.      
  39.       if(usb_enumerated())          
  40.       {
  41.                if (fTX){
  42.                      TxUSB[0]=read_ADC();
  43.                      usb_put_packet(1, TxUSB, 8, USB_DTS_TOGGLE);
  44.                      fTX=0;
  45.                }
  46.             }
  47.  
  48.      }
  49. }

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #127 en: 26 de Febrero de 2009, 19:26:20 »
Estoy realizando el ejemplo de abrir/cerrar el puerto ¿Hace falta enlazar a la mpusbapi.dll de alguna manera especial? Yo declaro las librerias, asi:

Código: [Seleccionar]
Public Declare Function MPUSBGetDLLVersion Lib "mpusbapi.dll" () As Long

    Public Declare Function MPUSBGetDeviceCount Lib "mpusbapi.dll" (ByVal pVID_PID As String) As Long

    Public Declare Function MPUSBOpen Lib "mpusbapi.dll" (ByVal instance As Long, ByVal pVID_PID As String, ByVal pEP As String, ByVal dwDir As Long, ByVal dwReserved As Long) As Long

    Public Declare Function MPUSBClose Lib "mpusbapi.dll" (ByVal handle As Long) As Long

    Public Declare Function MPUSBRead Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

    Public Declare Function MPUSBWrite Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

    Public Declare Function MPUSBReadInt Lib "mpusbapi.dll" (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) As Long

Cuando despues intento usar :

Código: [Seleccionar]
   Private Sub Form_Load()
   OpenMPUSBDevice     'abre comunicaciones
End Sub

Me dice que variable no esta declarada.

Sin usar esta declaración, me compila pero al intentar abrir me dice:
Código: [Seleccionar]
No se puede encontrar el punto de entrada denominado 'MPUSBOpen' en el archivo DLL 'mpusbapi.dll'.
La .dll esta en la misma carpeta, pero es como si no se "conectara" con la api. Uso visualbasic.net



Hola kain, tienes que leer en la ayuda de msdn la forma de como hacer llamadas a apis, yo me estoy iniciando recien con el .net y una de las cosas que recomiendan es olvidarse de programar como se hacía en vb6 (aunque sea válida la sintáxis).

Hay un herramienta que sirve de transición de un código de vb6 a vb.net, se llama

Visual Basic 6.0 Code Advisor

el Code Advisor te analiza el código fuente de un proyecto vb6 y te dice que sentencias ya no son validas para el .net y las que tienen sustitución, ej: varptr ya no es soportado

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #128 en: 26 de Febrero de 2009, 19:28:36 »
Que gran Topic en serio................. mis mas sinceras felicitaciones para PalitroqueZ, me esta siendo de mucha ayuda ahora q empiezo con este PIC.

Saludos

del p...tas todo lo que han hecho con este pic, yo espero dominar el  877 (me ha sacado canas) y poder iniciarme en programas basicos con el 18F4550 como cuando me inicie con el 16F84A "prendiendo y apagando un led" :mrgreen:

Felicitaciones y gracias por estos aportes

gracias jhozate y a Black_Knight , me alegra que le pueda servir en algo estos post de iniciación :D

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #129 en: 26 de Febrero de 2009, 19:30:41 »
Buenas, despues de haber probado con exito el ejemplo de Diego, del keyboard USB, me dispuse a probar hacer un joystick, asi que con el mismo cirtuito, intento hacer andar el AD del 18f4550, pero no hay caso.. no funciona, el resultado siempre es 0, probe cambiando distintos canales, distntas frecuencias de conversion, y nada, lo utilice muchas veces a la conversion AD con el 18f452, y ahora no puedo hacer andar en el 455, pego un trozo del programa donde configuro distintas cosas para el AD, a ver si alguien ve un error, lamentablemente no tengo otro pic para comprobar que no este quemado el AD.
En este ejemplo envio el dato por USB, tambien para asegurarme que no era error del USB, hice la prueba con el puerto serie, pero siempre lo mismo.
Desde ya gracias.
Alejandro.
Código: CSS
  1. void main() {
  2.    int8 Trim[2];
  3.    int8 Buffer;
  4.  
  5.    set_tris_a(0b00001111);
  6.    //set_tris_c(0b11110000);
  7.    
  8.    setup_adc_ports(ADC_CLOCK_DIV_64);
  9.    setup_adc_ports( AN0_TO_AN3  );
  10.    setup_comparator(NC_NC_NC_NC);
  11.    setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 );
  12.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_BIT);
  13.  
  14.  
  15.    delay_ms(500);
  16.  
  17.    usb_init_cs();
  18.  
  19.  
  20.    port_b_pullups(false);
  21.  
  22.    set_tris_b(0b00000001);
  23.    ext_int_edge(0,L_TO_H);
  24.    enable_interrupts(int_ext);
  25.    disable_interrupts(INT_TIMER1);
  26.    disable_interrupts(int_tbe);
  27.    enable_interrupts(INT_TIMER0);
  28.    enable_interrupts(global);
  29.  
  30.    set_adc_channel(1);
  31.  
  32.  
  33. while (TRUE)
  34.    {
  35.       int8 rTemp;
  36.       usb_task();
  37.       usb_debug_task();
  38.      
  39.       if(usb_enumerated())          
  40.       {
  41.                if (fTX){
  42.                      TxUSB[0]=read_ADC();
  43.                      usb_put_packet(1, TxUSB, 8, USB_DTS_TOGGLE);
  44.                      fTX=0;
  45.                }
  46.             }
  47.  
  48.      }
  49. }


ALE, si tu código está incompleto, será dificil saber que puede estar mal, por lo que veo allí:

¿en que momento fTX es true?

además, leo que configuras 2 timer

¿que sucede en las interrupciones?

¿estás seguro que hay un resultado en TxUSB[0]=read_ADC(); ?

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Mis primeros pasos con el 18F4550
« Respuesta #130 en: 26 de Febrero de 2009, 21:44:29 »
Muchas gracias por la informacion PaLitroquez, no habia caido usar la ayuda del mdsn cosa que si hice para buscar informacion de como usar el usb como puerto serie, aunque no he conseguido que me funcione bien.

Estoy planteandome inicarme en VisualC#, pues con visualbasic,.net no he podido encontar ni ayuda ni informacion clara. Asi que si sigo con basic y lo consigo, posteare por aqui.
Saludos desde Córdoba, españa

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 230
Re: Mis primeros pasos con el 18F4550
« Respuesta #131 en: 27 de Febrero de 2009, 08:43:11 »
Palitroquez, gracias por la respuesta, te cuento que si bien el codigo que paso es incompleto, el error esta en la porcion del codigo que pase, leyendo el ASM generado, en la linea 11 y la 12, se escribe el mismo registro, y es ahi donde esta el error, la linea 11 deberia ser SETUP_ADC...., ya que si no, nunca se configura correctamente el AD, al cambiar esa linea el proyecto funciona bien.
La bandera fTX, se setea en una interrupcion por cambio de RB0, ya que por ese pin esta recibiendo una trama PPM, y se transmite al finalizar la decodificacion.

Gracias nuevamente por la respuesta.

Saludos
Alejandro.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #132 en: 27 de Febrero de 2009, 18:16:33 »
si la función setup_adc te da problemas, entonces tendrás que configurar el adc de forma manual (configurando bits individuales en cada registro) y mirar muy detenidamente mediante un simulador.






La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Mis primeros pasos con el 18F4550
« Respuesta #133 en: 21 de Mayo de 2009, 18:35:35 »
Hola estimados amigos..

En realidad mil disculpas por mi ignorancia, quisiera saber la trama que maneja el USB del pic, ya que a mucho pude meterme en el bolsillo el 16F877 para comunicaciones serie, pero este PIC4550 tiene la opción de manejar datos USB..

Si alguien puede orientarme un poco para empezar a familiarizarme con este dispositivo, le agradeceré millón, ya que tengo que presentar una propuesta de mejoras en un sistema de comunicaciones para la empresa donde trabajo, y el GPS que deseo manejar solo comunica via USB..

De antemano gracias por su acostumbrada colaboración..
"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros pasos con el 18F4550
« Respuesta #134 en: 21 de Mayo de 2009, 19:26:29 »
Aqui esta el tema muy bien explicado.
No contesto mensajes privados, las consultas en el foro