Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola chicos, he visto algunos ejemplos donde usan instrucciones como printf que por lo que he leido se envian por el puerto serie.
Yo estoy usando un PIC 16F876 y me gustaría contar con esta facilidad, por lo que he leido, se usan dos pines del PIC que son los que soportan esta funcionalidad.
Mi pregunta es que lo que no he encontrado la conexión del puerto serie con estos dos pines, ya que en puerto DB9 consta de 9 Pines, se que los que interesan son TX/RX pero y el resto de pines?
Alguien podría comentarme si me hace falta alguna cosa adicional o como debo realizar la conexión entre los pines?
Gracias de antemano!
XyVy, la UART es para controlar la lógica del puerto serie (para que no te tengas que preocupar en ir mandando los bits uno a uno), el MAX232 es el driver, es decir adapta los niveles de tensión y corriente a los adecuados.
S2
Ranganok Schahzaman
Okey Ranganok, como se suele decir "más claro agua", pues nada me haré con un integrado de estos....
Ciao y gracias una vez más!
Aunque lo que quieres es conectar el micro al puerto serie del pc con conector DB9 no está de más comentar que también se puede utilizar por ejemplo un integrado FTDI232 con el que podrás crear un puerto serie virtual y conectar el micro al pc mediante usb. La pega que tiene este integrado es que es SMD y es difícil de soldar.
Yo por ejemplo tengo un ordenador portátil que no tiene conector de puerto serie y todo hay que hacerlo por usb.
Okey chicos, ya estamos con el MAX232, concretamente me han pasado un MAX232N, hemos pillado también unos condesadores de 100nF que hemos visto en un ejemplo.
Ya os cuento como os va todo!
Ciao.
Bueno pues por ahora os puedo contar que no funciona....
Debo tener en cuenta algo especial, estamos usando 4 condensadores de 100nF, y del RS232 hemos sacado 3 hilos unicamente, TX, RX y GND.
En el MAX232 conectamos dos pines a dos pines del PIC, y el TX/RX del cable los conectamos invertidos a dos pines del MAX232.
Luego arrancamos hyperterminal con 9600 baudios, 8 bits de datos, sin control de flujo y 1 bit de parada.
Nuestro use es:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Y nuestro programa:
#include <16F876A>
#include <stdio>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
char cuenta;
SET_TRIS_C(0x7F);
do{
cuenta++;
if (cuenta==10){
cuenta=0;
printf("Cuenta: %dn", cuenta);
// %d para enteros, %c para caracteres
}
} while(1);
}
ciao y gracias.