TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: gio en 25 de Julio de 2007, 20:47:01
-
Estoy en un proyecto manejando servomotores, lo que quiero hacer es enviar los datos por el puerto en serie de la posicion de los servos, bueno esno es el problema el problema es que la instruccion SERIN se ejecuta en el pic pero no deja segir con el programa hasta que no le envie los datos y como los servos se deven de estar refrescando continuamente se queta en esa intruccion y no deja segir, en la intruccion encontre un parametro que dise time&&& el cual sirve para eso pero dela forma que lo coloque me marca error si alguien tiene un ejemplo o alguna otra forma de hacerlo se lo agradesco.
-
Alguien que nos mueva este tema al subforo de Basic.
Y Gio si usas un Pic que cuente con modulos serie via hardaware tu problema se solucionara si usas el comando HSEROUT y HSERIN
-
HOLA GIO!
ESE PROBLEMA LO PUEDES RESOLVER UTILIZANDO INTERRUPCIONES DE FORMA TAL, QUE CUANDO EL PIC DETECTE UNA RECEPCION EN CURSO ESTE SALTE A UNA SUBRUTINA DONDE LEA EL DATO QUE LE LLEGA Y LUEGO ACTUALICE LA POSICION DE LOS SERVOS!!
ESO EVITARIA QUE LOS SERVOS PIERDAN LA POSICION LO OTRO QUE TE RECOMIENDO ES QUE UTILICES UN CRISTAL DE 20MHZ PARA QUE EL PROGRAMA SE ACTUALICE LO MAS RAPIDO POSIBLE Y LOS SERVOS NO PIERDAN SU POSICION! :mrgreen:
SALUDOS.
-
Amigo Ralf2, según las Reglas (http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1) del Foro especifican "No escribas todo en MAYÚSCULAS. Evita también los caracteres especiales, los "!!!!!", los "¿?¿?¿?" y otras filigranas en los títulos para llamar la atención;" Te ruego que la tomes en cuenta.
Que tengas un feliz estancia entre nosotros. Gracias y un saludo.
-
vien ya lo resolvi y me queda asi
INCLUDE ""modedefs.bas"
SI VAR PORTA.0
pos VAR BYTE
portb = %00000000
trisb = %00000000
trisa = %00000001
pos = 0
LOW PORTB.0
PAUSE 250
start:
PULSOUT PORTB.0,pos
SERIN SI,N2400,20,nx, #pos
nx: GOTO start
END
vueno aora el problema es que solo me permite 193 pasos aprosimadamente y cuando programo en ensamblador los 256 pasos pero no puedo leer en ensamblador el puerto serial por eso lo hago en picbasic, aora lei y me parese que si aumento el cristal aumenta la resolucion del servo, pero le puse uno de 20 mhz y ya no me lee el puerto serial ni subiendo la velocadad de transmicion, alguna opcion, sale gracias por sus posts
-
Y cuando metiste el crsital de 20 tambien lo definiste en el programa, DEFINE OSC 20 y yo insisto, si para ti es mejor usar el hardware serie usa el comando HSERIN y HSEROUT
-
no, no me funciona el hserin no entran ni los datos en el 16f84 con el serin masomenos ingresava los valores pero el que voy a utilizar es el 16f877 y ai no me ingresa nada, no se si tienes un ejemplo podrias postearlo pofa porque no lo puedo solucionar, otra que vi es que en unos sircuitos no utilizan un acoplador de señal y en otros si que seria el MAX232 No se si es lo mismo con el o sin el
sale saludos..
-
Revisa esto:
http://www.microengineeringlabs.com/resources/samples/xusb/pbp/hserxu.bas
http://www.microengineeringlabs.com/resources/samples/xusb/pbp/hserxu.bas
-
Si mira:
1.-Priemro verifica que tus PIcs soportan cristales de 20MHZ
2.-El comando SERIN es un comando que emula via software la comunicacion serie, por lo cual cualquier PIC es capaz de usarlo.
3.-El comando HSERIN se refiere al uso del Hardware Serie del PIC, lo cual hace que soo algunos modelos lo inlcuyan; el 16F84 no posee hardware serie -¿como sabes cuales si y cuales no? leyendo sus datasheets-
4.-El uso del Max232 segun yo entendi ya hace rato es para acoplar los niveles de voltaje y garantizar la transmision entre un PC y el PIC, cuando comunico mi PC con el PIC yo lo uso, cuando comunico 2 PIC's entre si no lo uso.
5.- Los mejores ejemplos sobre el uso del uso del hardware serie los puedes encontrar en Rentron y usando el buscador del foro.
Saludos
-
Hola de nuevo con otra duda estoy armando el circuito del max232 pero de cunto deven ser los 4 capacitores, en todos los circuito que e visto en los buscadores todos los manejan diferentes, cual recomiendas... sale gracias..
-
5.- Los mejores ejemplos sobre el uso del uso del hardware serie los puedes encontrar en Rentron y usando el buscador del foro.
Hola de nuevo con otra duda estoy armando el circuito del max232 pero de cunto deven ser los 4 capacitores, en todos los circuito que e visto en los buscadores todos los manejan diferentes, cual recomiendas... sale gracias..
Utiliza estos:
http://www.rentron.com/PicBasic/MCS_X3.htm
Recuerda que deben ser de mas de 10 volts (de preferencia) por que utilizarás el MAX232 (niveles de voltaje).
-
Saludos amigos, he realizado un proyecto sencicllo usnado modulos rf de alcance 100 metros, use también el code HT12E y el deco HT12D, para enviar a traves del code un "1" (5 voltios) y luego un "0" cero voltios, por el mismo pin, de tal manera que el el deco (luego del receptor) realice una acción otro circuito y luego se detenga. Mi problema es que hace varios meses que no encuentro estos modulos code, y que llegará el proximo año. Por favor, quiero reemplazar estos codec por programa en pic 16f84; de tal manera que accionado un boton pulsador (un puerto) envíe al modulo rf un "1" y soltándolo envíe un "0", pero nunca he trabajado con el envío de data en serie. Usando el serin y el serout. Por favor, necesito alguna ayuda o sugerencia. Gracias.
palmas
-
Revisa el indice de este hilo:
http://www.todopic.com.ar/foros/index.php?topic=14917.0
Busca:
"TRABAJANDO CON COMUNICACION POR RF, MODULOS DE TX Y RX DE AUREL Y LAIPAC"
-
Hola amigos , no se quien me podra ayudar con el siguiente codigo:
pbp
Desde visual Basic en vio lo siguiente a mi pic16f628a:
Mscom.output="125"
programa del pic:
dato var byte
inicio:
serin portb.0,n9600,dato
pause 100
serout portb.0,n9600,[dato]
Problema:
Al parecer el pic solo recibe el primer valor osea "1" ..porque a mi pc llega el número 1 y no 125.Es que necesito que me lleguen los 125 para poder controlar el servo...
Alguien tiene la solución frente a esto?
-
Hola:
Muy sencillo ,cuando vos mandas el numero 123 realmente estas mandando 3 bytes ,el 1 ,el 2 y el 3 ,asi que deberias almacenarlo en 3 variables .
No se para que vas a usar tu probgama ,pero proba con esto:
dato var byte
dato1 var byte
dato2 var byte
inicio:
serin portb.0,n9600,dato ,dato1,dato2
pause 100
serout portb.0,n9600,[dato,dato1,dato2]
goto inicio
-
wilfo esa yo la se...
si en vez de 123 pones @123 te lo toma como un numero y no como 3 letras...