Escolar Documentos
Profissional Documentos
Cultura Documentos
2.- Marco Terico.En la informtica, un puerto ata puerto es una forma genrica de
denominar a una interfaz a travs de la cual los diferentes tipos de datos
se pueden enviar y recibir. Dicha interfaz puede ser de tipo fsico, o
puede ser a nivel de software (por ejemplo, los puertos que permiten la
transmisin de datos entre diferentes ordenadores) (ver ms abajo para
ms detalles), en cuyo caso se usa frecuentemente el trmino puerto
lgico.
El Universal Serial Bus (bus universal en serie), abreviado
comnmente USB, es un puerto que sirve para conectar perifricos a un
ordenador. Fue creado en 1996 por siete empresas (que actualmente
forman el consejo directivo): IBM, Intel, Northern Telecom, Compaq,
Microsoft, Digital Equipment Corporation y NEC.
USB 3.0
3.- Instrumentos y herramientas usadas:
PIC 16F8550
Resistencias
Pulsadores
Leds
Condensadores
Reles
Cristal
Diodo
Sensores de temperatura
Fin de carrera
Contactor 220
Sensor de nivel industrial
Conector usb
Electrovlvula
Soporte para recipiente
Esquema.-
Interfaz.-
namespace WindowsFormsApplication1
{
public partial class USB_FORM : Form
UInt32 controlador;
uint ADCValue1 = 0;
uint ADCValue2 = 0;
public USB_FORM()
{
InitializeComponent();
TANQUE_LLENO.Visible = true;
TANQUE_VACIO.Visible = false;
}
else {
TANQUE_LLENO.Visible = false;
TANQUE_VACIO.Visible = true;
}
if (BufferINP[2] == 0x01)
{
IN_DIGITAL_2.BackColor = Color.Red;
LBL_REC.Text = "NO HAY RECIPIENTE";
}
else
{
IN_DIGITAL_2.BackColor = Color.Green;
LBL_REC.Text = "SI HAY RECIPIENTE";
}
if (BufferINP[2] != 0x01 && BufferINP[1] == 0x01)
{
OUT_ELECTROVALVULA.Enabled = true;
}
else
{
OUT_ELECTROVALVULA.Enabled = false;
}
LBL_TEMP.Text = Convert.ToString((int)ADCValue2/2);
}
}
break;
case EasyHID.NOTIFY_READ:
Lee_datos((UInt32)message.LParam.ToInt32());
break;
}
}
base.WndProc(ref message);
}
BufferOUT[2] = 0x10;
EasyHID.Write(controlador, BufferOUT);
}
this.Close();
}
OUT_ELECTROVALVULA.Enabled = true;
}
#use fast_io(b)
#use fast_io(c)
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) {
#asm
movlw 0b10111110
iorwf 0xFC0,1
#endasm
}
void main(void)
{
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;
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;
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];}
}
}
}
}
#define SW1
PIN_B4
#define SW2
PIN_B5
#define SW3
PIN_B6
#define SW4
PIN_B7
PIN_C7
#define PWM1
PIN_C2
#define PWM2
PIN_C1
#define USB_CONFIG_HID_TX_SIZE 32
#define USB_CONFIG_HID_RX_SIZE 32
#define ACTIVA_SALIDAS
0x0A
#define PWM_CONTROL1
0x0B
#define PWM_CONTROL2
0x0C
#define LED_1
0x10
#define LED_2
0x20
#define LED_3
0x30
#define LED_4
0x40
void USB_debug();
void config_adcon2(void);
#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__
#ifndef USB_CONFIG_PID
#define USB_CONFIG_PID 0x07D0
#endif
#ifndef USB_CONFIG_VID
#define USB_CONFIG_VID 0x1781
#endif
#ifndef USB_CONFIG_BUS_POWER
#define USB_CONFIG_BUS_POWER 100
#endif
#ifndef USB_CONFIG_VERSION
#ifndef USB_CONFIG_HID_TX_SIZE
#define USB_CONFIG_HID_TX_SIZE 32
#endif
#ifndef USB_CONFIG_HID_RX_SIZE
#define USB_CONFIG_HID_RX_SIZE 32
#endif
#ifndef USB_CONFIG_HID_TX_POLL
#define USB_CONFIG_HID_TX_POLL 10
#endif
#ifndef USB_CONFIG_HID_RX_POLL
#define USB_CONFIG_HID_RX_POLL 10
#endif
#ifdef USB_HID_DEVICE
#undef USB_HID_DEVICE
#endif
#ifdef USB_EP1_TX_ENABLE
#undef USB_EP1_TX_ENABLE
#endif
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#ifndef USB_EP1_TX_SIZE
#if (USB_CONFIG_HID_TX_SIZE >= 64)
#define USB_EP1_TX_SIZE
64
#else
#define USB_EP1_TX_SIZE
(USB_CONFIG_HID_TX_SIZE+1)
#endif
#endif
#ifdef USB_EP1_RX_ENABLE
#undef USB_EP1_RX_ENABLE
#endif
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#ifndef USB_EP1_RX_SIZE
64
#else
#define USB_EP1_RX_SIZE
(USB_CONFIG_HID_RX_SIZE+1)
#endif
#endif
#include <usb.h>
0x15, 0x80,
0x25, 0x7F,
0x75, 8,
0x95, USB_CONFIG_HID_TX_SIZE,
0x81, 2,
0x19, 1,
0x29, 8,
0x75, 8,
0x95, USB_CONFIG_HID_RX_SIZE,
0x91, 2,
0xc0
};
const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
{
0
};
32
};
#DEFINE USB_TOTAL_CONFIG_LEN
USB_DESC_CONFIG_LEN,
USB_DESC_CONFIG_TYPE,
USB_TOTAL_CONFIG_LEN,0,
1,
0x01,
0x00,
#if USB_CONFIG_BUS_POWER
0x80,
#else
0xC0,
#endif
USB_CONFIG_BUS_POWER/2,
USB_DESC_INTERFACE_LEN,
USB_DESC_INTERFACE_TYPE,
0x00,
0x00,
2,
0x03,
0x00,
0x00,
41
0x00,
USB_DESC_CLASS_LEN,
USB_DESC_CLASS_TYPE,
0x00,0x01,
0x00,
0x01,
0x22,
USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00,
USB_DESC_ENDPOINT_LEN,
USB_DESC_ENDPOINT_TYPE,
0x81,
USB_EP1_TX_ENABLE,
USB_EP1_TX_SIZE,0x00,
USB_CONFIG_HID_TX_POLL,
USB_DESC_ENDPOINT_LEN,
USB_DESC_ENDPOINT_TYPE,
0x01,
USB_EP1_RX_ENABLE,
USB_EP1_RX_SIZE,0x00,
USB_CONFIG_HID_RX_POLL
};
#define USB_NUM_HID_INTERFACES 1
#define USB_MAX_NUM_INTERFACES 1
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};
const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][1][1]=
{
18
};
char USB_STRING_DESC_OFFSET[]={0,4,12};
char const USB_STRING_DESC[]={
4,
USB_DESC_STRING_TYPE,
0x09,0x04,
8,
USB_DESC_STRING_TYPE,
'C',0,
'C',0,
'S',0,
32,
USB_DESC_STRING_TYPE,
'J',0,
'E',0,
'T',0,
'S',0,
'-',0,
'U',0,
'S',0,
'B',0,
'-',0,
'U',0,
'E',0,
'P',0,
'S',0,
'A',0
};
#ENDIF