Autor Tema: Transmitir datos por pin del PIC  (Leído 2439 veces)

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

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Transmitir datos por pin del PIC
« en: 21 de Marzo de 2011, 15:51:04 »
Hola a todos, me gustaria transmitir datos por un pin concreto de mi PIC 18F4550,
uso para ello estas funciones en CCS:

   for(i=0 ;i < 8; i++){
   output_bit(PIN_RD1, shift_left(&byte,1,0));
   }

El problema es que necesito transmitir cada bit a una velocidad determinada (4us cada bit) y no se como hacerlo.
He pensado en crear un timer que interrumpa cada 4us y que envie el bit que toque, pero tampoco tengo claro como son los calculos para configurar el timer ni como crear la interrupción. Uso un cristal de 20 Mhz.

¿Alguien me puede iluminar?

Muchas gracias!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Transmitir datos por pin del PIC
« Respuesta #1 en: 21 de Marzo de 2011, 15:55:30 »
Una opción sencilla es hacer debug y determinar cada cuanto tiempo envía la rutina que muestras. Y luego agregar Nop o delay_cycles(x) para que envíe cada 4us.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Transmitir datos por pin del PIC
« Respuesta #2 en: 21 de Marzo de 2011, 16:11:30 »
Una opción sencilla es hacer debug y determinar cada cuanto tiempo envía la rutina que muestras. Y luego agregar Nop o delay_cycles(x) para que envíe cada 4us.


Saludos!

Gracias por contestar!
El problema es que a veces se enviarán 2 bytes y otras veces 3 bytes o más, según factores externos y entre bytes tambien tengo que respetar esos 4us para cada bit si envio muchos bytes seguidos, pos eso era lo de usar algun timer que me interrumpa y enviar los datos almacenados en algun lugar.

Saludos.