Autor Tema: Manejo de tmr0 en proton  (Leído 2972 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pablusmed

  • PIC10
  • *
  • Mensajes: 2
Manejo de tmr0 en proton
« en: 03 de Marzo de 2008, 02:05:29 »
ecesito ayuda soy nuevo manejando proton y necesito ayuda para usar los TImers del microcontrolador, para mi trabajo de grado estoy trabajando en la tarjeta de control de un brazo robot, este brazo consta de un tarjeta de control principal y se conecta con otros 6 pic, se comuncan con un protocolo de comunicacion llamado TR-BUS, este protocolo fue ideado por el  fabricante del brazo robot.  funciona de la siguiente manera, cada pulso dura 100us y tiene un bit de parada e inicio, y envia palabras de 8 bit , al inicio la señal de reloj esta en estado alto y la señal de dato esta en estado bajo, para enviar una palabra de dato, la señal de reloj cae a 0 y en preciso instante la señal de dato se pone en alto,  la señal de reloj dura 100us en 0 luego vuelve a 1 logico, al momento que ocurre el flanco de subida la señal de datos sigue manteniendose en alto espera 50us para iniciar la trasmision, luego de trascurrido envia el bit de inicio que es un 0 logico que dura 100us luego envia la palabra de datos del menos significativo al mas significativo, luego envia el bit de parada que corresponde a 1 logico que dura tambien 100 us, a continucion agrego el programa de prueba para las palabras de dato que hice, lo que quiero lograr en esta rutina es hacer que estos pulsos duren exactamente 100us y generar pausas exactas, ya que porbando con el robot me responde a algunas palabaras de datos, pero algunas los pulsos que logro generar duran 80 us o 120 us, lo cual hace que no se envie la palabra de dato correctamente, sabria agradecer sus ayuda.
device=16f877
xtal=20

dim x as word
dim index as word


x=%0010101001 'bit de inicio+palabra de dato + bit de parada'
high portb.1  ' condiciones iniciales'
low portb.0
main:
high portb.1
low portb.0
if portb.2=1  then
high portb.0 'condicion de start
    pulsout portb.1,50  ' pulso de reloj para iniciar la trasmisio
    delayus 50    'pausa para el inicio de la tramision'
    trisb.0=0     ' coloco el puerto b.0 como salida'
    for index=0 to 9 step 1   ' hago un bucle y cada 100us leo el bit de la variables x'
        portb.0=getbit x, index
        delayus 100
    next
else

high portb.1
low portb.0

endif
goto main









 

anything