Moderadores: andre_luis, 51, guest2003, Renie
Andre_Cruz escreveu:Pessoal alguém pode dar uma "lussss" ?
Compilei e gravei o exemplo da MikroC que envia o valor de uma variável pela USB.
O pc reconhece o PIC, quando abro o HID Terminal do MikroC e seleciono "mikroC HID Library test" não vejo nem um valor enviado pelo PIC.
Como faço pra receber ou visualizar os dados enviados pelo PIC pela porta USB ?
André Cruz
#include USBdsc.c;
unsigned short m, k;
unsigned short userRD_buffer[64];
unsigned short userWR_buffer[64];
void interrupt() {
asm CALL _Hid_InterruptProc
asm nop
}
void Init_Main() {
// Disable all interrupts
// Disable GIE, PEIE, TMR0IE, INT0IE,RBIE
INTCON = 0;
INTCON2 = 0xF5;
INTCON3 = 0xC0;
// Disable Priority Levels on interrupts
RCON.IPEN = 0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
// Configure all ports with analog function as digital
ADCON1 |= 0x0F;
// Ports Configuration
TRISA = 0;
TRISB = 0;
TRISC = 0xFF;
TRISD = 0xFF;
TRISE = 0x07;
LATA = 0;
LATB = 0;
LATC = 0;
LATD = 0;
LATE = 0;
// Clear user RAM
// Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
asm {
LFSR FSR0, 0x000
MOVLW 0x08
CLRF POSTINC0, 0
CPFSEQ FSR0H, 0
BRA $ - 2
}
// Timer 0
T0CON = 0x07;
TMR0H = (65536-156) >> 8;
TMR0L = (65536-156) & 0xFF;
INTCON.T0IE = 1; // Enable T0IE
T0CON.TMR0ON = 1;
}
/** Main Program Routine **/
void main() {
Init_Main();
Hid_Enable(&userRD_buffer, &userWR_buffer);
do {
for (k = 0; k < 255; k++) {
// Prepare send buffer
userWR_buffer[0] = k;
// Send the number via USB
Hid_Write(&userWR_buffer, 1);
}
} while (1);
Hid_Disable();
}
Jorge_Francisco escreveu:Para delphi é o mesmo código, sendo que com poucas modificações no que diz respeito a declaração das variáveis.
unsigned char userWR_buffer[64]; //Buffer de transmissão serial
unsigned char userRD_buffer[64]; //Buffer de recepção serial
char recebe;
void Init_Main() {
// Disable all interrupts
// Disable GIE, PEIE, TMR0IE, INT0IE,RBIE
INTCON = 0;
INTCON2 = 0xF5;
INTCON3 = 0xC0;
// Disable Priority Levels on interrupts
RCON.IPEN = 0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
// Configure all ports with analog function as digital
ADCON1 |= 0x0F;
// Ports Configuration
TRISA = 0;
TRISB = 0xFF;
TRISC = 0xFF;
TRISD = 0xFF;
TRISE = 0x07;
}
void interrupt()
{USB_Interrupt_Proc();} //Tratamento da interrupção de USB
void main(){
Init_main();
HID_Enable(&userRD_buffer, &userWR_buffer);//Inicializa a USB
while (1)
{
if (portb.rb0==0)
{
userWR_buffer[0]=0x01; //Carrega byte a ser enviado para o PC
while (!HID_Write(&userWR_buffer, 1)) ; //Envia e aguarda finalizar o envio do byte pela USB
}
else
{
userWR_buffer[0]='0'; //Carrega byte a ser enviado para o PC
while (!HID_Write(&userWR_buffer, 1)) ; //Envia e aguarda finalizar o envio do byte pela USB
}
recebe=hid_read(); //Verifica se há algum byte no buffer de recepção
if (recebe!=0) //Há algum byte para receber?
{
if(userRD_buffer[0]=='A') //É o 'A'?
porta.ra1=1; //Sim, então liga o led
if(userRD_buffer[0]=='B') //É o 'B'?
porta.ra1=0; //Sim, então desliga o led
Delay_ms(1000); //Delay para atualização
}
}
HID_Disable();
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante