void USB_debug(){
LED_ON(LED_RED);
LED_OFF(LED_GREEN);
usb_wait_for_enumeration();
LED_ON(LED_GREEN);
LED_OFF(LED_RED);
}
void config_adcon2(void) {
movlw 0b10111110
iorwf 0xFC0,1
}
int8 recibe[USB_EP1_RX_SIZE];
int8 envia[USB_EP1_TX_SIZE];
int8 valorPWM1_H=0;
int8 valorPWM2_H=0;
int8 valorPWM1_L=0;
int8 valorPWM2_L=0;
int8 valorPWM1=0;
int8 valorPWM2=0;
int8 valor_adc_alta=0;
int8 valor_adc_baja=0;
void main(void)
{
set_tris_b(0xF0);
output_b(0x00);
set_tris_c(0b00111000);
setup_adc_ports(AN0_TO_AN2);
setup_adc(ADC_CLOCK_DIV_64);
config_ADCON2();
LED_OFF(PWM1);
LED_OFF(PWM2);
usb_init();
usb_task();
USB_debug();
while (TRUE)
{
if(usb_enumerated())
{
valorPWM1_H=valorPWM1;
valorPWM1_L=255-valorPWM1_H;
for(valorPWM1_H;valorPWM1_H>0;valorPWM1_H--){
LED_ON(PWM1);}
for(valorPWM1_L;valorPWM1_L>0;valorPWM1_L--){
LED_OFF(PWM1);
}
valorPWM2_H=valorPWM2;
valorPWM2_L=255-valorPWM2_H;
for(valorPWM2_H;valorPWM2_H>0;valorPWM2_H--){
LED_ON(PWM2);}
for(valorPWM2_L;valorPWM2_L>0;valorPWM2_L--){
LED_OFF(PWM2);
}
if(input_state(SW1)==0x01){delay_ms(20); envia[0]=0x01;}else{envia[0]=0x00;}
if(input_state(SW2)==0x01){delay_ms(20); envia[1]=0x01;}else{envia[1]=0x00;}
if(input_state(SW3)==0x01){delay_ms(20); envia[2]=0x01;}else{envia[2]=0x00;}
if(input_state(SW4)==0x01){delay_ms(20); envia[3]=0x01;}else{envia[3]=0x00;}
set_adc_channel(0);
delay_us(10);
valor_adc_alta = (read_adc()>>8);
valor_adc_baja = (int)(read_adc());
envia[4]=valor_adc_alta;
envia[5]=valor_adc_baja;
set_adc_channel(2);
delay_us(10);
valor_adc_alta = (read_adc()>>8);
valor_adc_baja = (int)(read_adc());
envia[6]=valor_adc_alta;
envia[7]=valor_adc_baja;
usb_put_packet(1, envia, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
if (usb_kbhit(1))
{
usb_get_packet(1, recibe, USB_CONFIG_HID_RX_SIZE);
if(recibe[0]==ACTIVA_SALIDAS){
switch(recibe[1]){
case LED_1:
output_toggle(PIN_B0);
break;
case LED_2:
output_toggle(PIN_B1);
break;
case LED_3:
output_toggle(PIN_B2);
break;
case LED_4:
output_toggle(PIN_B3);
break;
}
}
if(recibe[0]==PWM_CONTROL1)
{valorPWM1=recibe[2];}
if(recibe[0]==PWM_CONTROL2)
{valorPWM2=recibe[3];}
}
}
}
}
aca va el C
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace MecaniqueUK
{
class EasyHID
{
public const UInt32 VENDOR_ID = 1781;
public const UInt32 PRODUCT_ID = 07D0;
public const int BUFFER_IN_SIZE = 32;
public const int BUFFER_OUT_SIZE = 32;
private const int WM_APP = 0x8000;
public const int WM_HID_EVENT = WM_APP + 200;
public const int NOTIFY_PLUGGED = 0x0001;
public const int NOTIFY_UNPLUGGED = 0x0002;
public const int NOTIFY_CHANGED = 0x0003;
public const int NOTIFY_READ = 0x0004;
[DllImport("mcHID.dll")]
public static extern bool Connect(IntPtr pHostWin);
[DllImport("mcHID.dll")]
public static extern bool Disconnect();
[DllImport("mcHID.dll")]
public static extern UInt32 GetItem(UInt32 pIndex);
[DllImport("mcHID.dll")]
public static extern UInt32 GetItemCount();
[DllImport("mcHID.dll")]
public static extern bool Read(UInt32 pHandle, IntPtr pData);
[DllImport("mcHID.dll")]
private static extern bool Write(UInt32 pHandle, IntPtr pData);
[DllImport("mcHID.dll")]
private static extern bool ReadEx(UInt32 pVendorId, UInt32 pProductId, IntPtr pData);
[DllImport("mcHID.dll")]
private static extern bool WriteEx(UInt32 pVendorId, UInt32 pProductId, IntPtr pData);
[DllImport("mcHID.dll")]
public static extern UInt32 GetHandle(UInt32 pVendorID, UInt32 pProductId);
[DllImport("mcHID.dll")]
public static extern UInt32 GetVendorID(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern UInt32 GetProductID(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern UInt32 GetVersionID(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern UInt32 GetInputReportLength(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern UInt32 GetOutputReportLength(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern void SetReadNotify(UInt32 pHandle, bool pValue);
[DllImport("mcHID.dll")]
public static extern bool IsReadNotifyEnabled(UInt32 pHandle);
[DllImport("mcHID.dll")]
public static extern bool IsAvailable(UInt32 pVendorId, UInt32 pProductId);
public static bool Read(UInt32 pHandle, out byte[] pData)
{
IntPtr unmanagedBuffer = Marshal.AllocHGlobal(BUFFER_IN_SIZE);
bool result = Read(pHandle, unmanagedBuffer);
try { pData = new byte[BUFFER_IN_SIZE]; Marshal.Copy(unmanagedBuffer, pData, 0, BUFFER_IN_SIZE); }
finally { Marshal.FreeHGlobal(unmanagedBuffer); }
return result;
}
public static bool Write(UInt32 pHandle, byte[] pData)
{
IntPtr unmanagedBuffer = Marshal.AllocHGlobal(BUFFER_OUT_SIZE);
bool result;
try { Marshal.Copy(pData, 0, unmanagedBuffer, BUFFER_OUT_SIZE); result = Write(pHandle, unmanagedBuffer); }
finally { Marshal.FreeHGlobal(unmanagedBuffer); }
return result;
}
}
}
Cambio de vid,pid
namespace MecaniqueUK
{
class EasyHID
{
public const UInt32 VENDOR_ID = 1781;
public const UInt32 PRODUCT_ID = 07D0;
public const int BUFFER_IN_SIZE = 32;
public const int BUFFER_OUT_SIZE = 32;