Olá galera, sou novo aqui. Estou precisando enviar para o pc informação de tensão e para isso estou utilizando o 18f4550, só que não consigo simular no proteus. A rotina feita no ccs segue abaixo. T+!
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#DEFINE USB_HID_DEVICE TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 8
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_RX_SIZE 8
#use rs232(baud=9600, xmit=PIN_C4, rcv=PIN_C5)
#include <pic18_usb.h>
#include <usb_desc_hid.h>
#include <usb.c>
#DEFINE LED1 PIN_A5
#define LED2 PIN_B4
#define USB_CON_SENSE_PIN PIN_B2
#byte porta = 0x05 // Declaracao de registro de hardware
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
#define LED_ON output_high
#define LED_OFF output_low
void usb_debug_task(void) {
static int8 last_connected;
static int8 last_enumerated;
int8 new_connected;
int8 new_enumerated;
new_connected=usb_attached();
new_enumerated=usb_enumerated();
if (new_enumerated)
LED_ON(LED1);
else
LED_OFF(LED1);
if (new_connected && !last_connected)
printf("\r\n\nUSB connected, waiting for enumaration...");
if (!new_connected && last_connected)
printf("\r\n\nUSB disconnected, waiting for connection...");
if (new_enumerated && !last_enumerated)
printf("\r\n\nUSB enumerated by PC/HOST");
if (!new_enumerated && last_enumerated)
printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration...");
last_connected=new_connected;
last_enumerated=new_enumerated;
}
void main()
{
int8 out_data[20];
int8 in_data[2];
int8 send_timer=0;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
usb_init();
while (TRUE)
{
usb_task();
usb_debug_task();
if (usb_enumerated())
{
if (!send_timer)
{
send_timer=250;
out_data[0]=read_adc();
delay_ms(10);
if (usb_put_packet(1, out_data, 2, USB_DTS_TOGGLE))
printf("\r\n<-- Sending 1 byte: 0x%X", out_data[0]);
}
if (usb_kbhit(1))
{
usb_get_packet(1, in_data, 2);
printf("\r\n--> Received data: 0x%X",in_data[0],);
if (in_data[0]) {LED_ON(LED2);} else {LED_OFF(LED2);}
}
send_timer--;
delay_ms(1);
}
}
}