TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: fr4n en 21 de Marzo de 2011, 15:51:04

Título: Transmitir datos por pin del PIC
Publicado por: fr4n 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!
Título: Re: Transmitir datos por pin del PIC
Publicado por: Suky 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!
Título: Re: Transmitir datos por pin del PIC
Publicado por: fr4n 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.