Autor Tema: He regresado, y cos dudas :-)  (Leído 2739 veces)

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

Desconectado Joga

  • PIC10
  • *
  • Mensajes: 31
He regresado, y cos dudas :-)
« en: 15 de Enero de 2009, 12:39:49 »
Hola a todos, me alegra decirles que después de una buena temporada sin poder hacer nada de electrónica debido al tiempo libre, lo he retomado.
He estado haciendo unos circuitos para ir probando el usb, el i2c, conversor A/D.. etc, y aquí os pongo unas fotillos:

Esta es una fuente de 5v y 1A.



Esta placa es para conectar LCD 2x16 y tiene un puente para encender la luz de fondo, un potenciometro para el contraste y conexión para cable plano.



Esta es la que controla todo, es un pic 18F2550 con un reset (botón reciclado de un viejo cdrom) y un pulsador, para conectarlo al ordenador e ir haciendo pruebas.



Esta la última que he hecho, lleva un RTC de Philips con alarma, un sensor de temperatura LM35 y un pot.



Aquí la veis por debajo, después de varios intentos fallidos y las placas anteriores (las he hecho por el método de la plancha), es la que mejor me ha quedado.



A ver que os parece, intento aprender poco a poco como manejar el LCD, comunicación USB, conversor A/D, bus i2C, utilizar un RTC gracias a estas placas.

Y tengo un problema con la emulación de puertos serie por usb, he hecho un pequeño programa para que reciba del ordenador caracteres, hasta recibir el signo -(menos), momento en el que tiene que mostrar en el lcd lo que se ha pasado, pero no se espera en la instrucción usb_cdc_kbhit(), y no para de pedirme caracteres por la hyperterminal sin mostrar nada por el lcd (Las conexiones están bien, ya la pantalla funciona perfectamente). Les dejo el código:

Código: [Seleccionar]
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#include "usb_cdc.h"
#include "usb_desc_cdc.h"
#include "flex_lcd_2.c"

#define LED_r     PIN_A1
#define LED_v     PIN_A0

#ZERO_RAM


void main() {

   char *cad;
   char  car;

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   port_b_pullups(FALSE);

   set_tris_a(0b0000000);
   set_tris_b(0b00000000);
   set_tris_c(0b0000000);
   
   output_low (LED_v);
   output_high (LED_r);
   
   lcd_init();
   lcd_putc("\f");
 
   
   
   delay_ms(300);
   usb_cdc_init();
   usb_init();
   while(!usb_cdc_connected()) {}
   
   do {
    usb_task();
      if (usb_enumerated()) {
         
         if (input_state(LED_r) == 1){ 
            output_low (LED_r);
            delay_ms (10);
            output_high (LED_v);
            lcd_putc("Conectado");
            printf(usb_cdc_putc, "\r\nPrueba usb v0.1 ");
         }
            printf(usb_cdc_putc, "\r\nIntroduce caracteres de texto(- para terminar): ");
            if (usb_cdc_kbhit()){
               car = usb_cdc_getc();
               if (car == '-')
                  lcd_putc(cad);
           
               else
                  cad = cad + car;
            }
      }
   
    } while (TRUE);
}

Un saludo a todos. :-/

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: He regresado, y cos dudas :-)
« Respuesta #1 en: 15 de Enero de 2009, 13:24:09 »
Con una simple mirada parece estar bien el programita, Controla si esta bien configurado el flex_lcd (los pines) y para ver si llega bien los datos, cierra el bucle al llegar la primera palabra terminada en -, asi vas controlando paso a paso porque no funciona.-
No contesto mensajes privados, las consultas en el foro

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: He regresado, y cos dudas :-)
« Respuesta #2 en: 15 de Enero de 2009, 15:44:51 »
Cambia esto para la recepcion de caracteres:


   #include <string.h>


   char cad[30];
   char car[1];
   //
   car[0]=usb_cdc_getc();
   if (car[0]==0x2D || car[0]==0xB0) // Se recibe "-".-
       printf(lcd_putc,"%s",cad);
   else
      strcat(cad,car);// le vas agregando caracteres a la cadena.-
No contesto mensajes privados, las consultas en el foro

Desconectado Joga

  • PIC10
  • *
  • Mensajes: 31
Re: He regresado, y cos dudas :-)
« Respuesta #3 en: 15 de Enero de 2009, 17:50:20 »
Muchas gracias por la respuesta, mañana lo pruebo a ver que pasa.

Un saludo.

Desconectado Joga

  • PIC10
  • *
  • Mensajes: 31
Re: He regresado, y cos dudas :-)
« Respuesta #4 en: 16 de Enero de 2009, 19:09:11 »
Ahora si funciona bien, muchas gracias Suky  :-).

Segiré haciendo pruebas con la LCD y con el cdc,


Un saludo.