TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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!
-
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!
-
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.