fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

printf, puerto seri...
 
Avisos
Vaciar todo

printf, puerto serie y CCS

14 Respuestas
3 Usuarios
0 Reactions
5,121 Visitas
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

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!

Responder
13 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

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

Responder
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

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!

Responder
mediopixel
Respuestas: 41
(@mediopixel)
Eminent Member
Registrado: hace 19 años

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.

Responder
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

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.

Responder
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

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.

Responder
Página 2 / 3
Compartir: