TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Gargantua en 01 de Mayo de 2009, 17:18:17
-
Hola, tengo un pic 18F4550 a 48MHz con un cristal de 4Mhz que uso con mi brazo robot por USB, Actualmente quiero cambiar de motores DC a servomotres para el brazo asi que me puse a investigar como se manejan serovs desde los pics, descubri que con pics a 4mhz es muy sencillo y despues de mucho intentar logre moverlo configurando el pic con DEFINE OSC 4, pero obiamente ahora no funciona el USB.
Loq ue queiro es poder manejar los servos por usb, Como no pude encontrar una manera que yo entendiera de manejarlos, desisdi tratar de usar mi controladora de servos de parallax, que se le envian los datos de mansera serial, pero por mas que intente tampoco pude mandar los datos seriales!!!!, no me responde la conatroaldora.
SUpongo que tanto probelma deve ser por la velocidad del reloj del pic, quisiera saber si alguien me puede ayudar a lograr cualqueira de las dos, El lenguaje que uso es el Pic Baisc Pro.
Aqui les dejo el codigo que no es mas que el que genera el Easy HID.
Saludos
asm
__CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
; ; ; USB clock source comes from the 96 MHz PLL divided by 2
; ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
; No prescale (4 MHz oscillator input drives PLL directly)
__CONFIG _CONFIG1H, _FOSC_XTPLL_XT_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
; ; ; Oscillator Switchover mode disabled
; ; Fail-Safe Clock Monitor disabled
; XT oscillator, PLL enabled, XT used by USB
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_2_2L & _VREGEN_ON_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H
__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
endasm
DEFINE OSC 48
USBBufferSizeMax con 8 ' maximum buffer size
USBBufferSizeTX con 8 ' input
USBBufferSizeRX con 8 ' output
' the USB buffer...
USBBufferIn Var Byte[USBBufferSizeMax]
USBBufferOut Var Byte[USBBufferSizeMax]
USBBufferCount Var Byte
x VAr byte
Accion VAR Byte
Tiempo Var Byte
TRISB=0 'todo el puerto B y como salida
TRISD=0
' ************************************************************
' * main program loop - remember, you must keep the USB *
' * connection alive with a call to USBService every couple *
' * of milliseconds or so... *
' ************************************************************
usbinit ' initialise USB...
ProgramStart:
CODIGO PARA LOS SERVOS O EL ENVIO DE DATOS SERIAL AQUI
Goto ProgramStart
' ************************************************************
' * receive data from the USB bus *
' ************************************************************
DoUSBIn:
USBBufferCount = USBBufferSizeRX ' RX buffer size
USBService ' Accioneep connection alive
USBIn 1, USBBufferIn, USBBufferCount, DoUSBIn ' read data, if available
USBService
return
' ************************************************************
' * wait for USB interface to attach *
' ************************************************************
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' TX buffer size
USBService ' Accioneep connection alive
USBOut 1, USBBufferOut, USBBufferCount, DoUSBOut ' if bus available, transmit data
return
De antemano muchas gracias
-
compañero solucionaste tu problema. a mi me psa algo igual los servo no me funcionan porque los estoy controlando por usb
-
No pude Manejar servos con ese pic , pero resolvi el problema de la comunicacion srial y use una controladora externa