Hola compañeros, mando grandes saludos a toda esta comunidad dedicada al apoyo y asesoria de dudas como la mia
. Bueno, mi situacion es esta: estoy simulando en proteus la conexion usb con la computadora y ademas que me muestre por la hyperterminal la cantidad de pulsos que se generan en un lapso de 1 minuto, los pulsos los genero en proteus por un switch que cierra el circuito, generando estados bajos y esos estados bajos deseo contarlos.
Ya lo hice fisico pero solo me conecta con la compu, no hace hace el conteo de pulsos ni muestra nada en hyper. Aqui dejo el codigo :
Dejo el archivo de proteus y el .hex con el driver por si acaso, una ayudita de como solucionar que lea los pulsos. Saludos
listo aqui esta el archivo
Ya lo hice fisico pero solo me conecta con la compu, no hace hace el conteo de pulsos ni muestra nada en hyper. Aqui dejo el codigo :
Código:
#include <18F2550.h> // Definición de registros internos.
#fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include "usb_cdc.h" // Descripción de funciones del USB.
#include "usb_desc_cdc.h" // Descriptores del dispositivo USB.
#define LED_V PIN_B6
#define LED_R PIN_B7
#define ON output_high
#define OFF output_low
int1 flag_listo = 0;
int16 cont_pulsos = 0;
int16 cont_pulsos_rec;
#INT_EXT
void interrupt_ext (void)
{
cont_pulsos++;
}
#INT_RTCC
void timer0 (void)
{
set_timer0(3036);
cont_pulsos_rec = cont_pulsos;
cont_pulsos = 0;
flag_listo = 1;
}
void main(void) {
ON(LED_R);
OFF(LED_V);
usb_cdc_init();
usb_init();
usb_wait_for_enumeration();
OFF(LED_R);
ON(LED_V);
set_tris_b(0x01);
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_16);
ext_int_edge(H_TO_L);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
set_tris_b (1);
set_timer0(3036);
do{
if(flag_listo)
{
flag_listo = 0;
printf("Pulsos: %Lu\r\n",cont_pulsos_rec);
}}while(1);
while(!usb_cdc_connected()) {}
// espera a detectar una transmisión de la PC (Set_Line_Coding).
do{
usb_task();
if (usb_enumerated()){ // Espera a que el dispositivo sea enumerado por el host.
if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepción.
if(usb_cdc_getc()=='x'){ //¿lo que llegó fué el caracter x?
printf(usb_cdc_putc, "Se recibe el caracter x.\n\r");
//si, entonces envía una cadena hacia el PC
}
if(usb_cdc_getc()=='a'){ //¿lo que llegó fué el caracter a?
printf(usb_cdc_putc, "Se recibe el caracter a.\n\r");
//si, entonces envía una cadena hacia el PC
}
}
}
}while (TRUE); // bucle infinito.
}
Dejo el archivo de proteus y el .hex con el driver por si acaso, una ayudita de como solucionar que lea los pulsos. Saludos
listo aqui esta el archivo
Adjuntos
Última edición: