|
|
Doble circuito auxiliar de comunicaciones
RS232 mediante el MAX232 (Rediseñado)
|
| |
Descripción:
|
|
Al igual que
en nuestro anterior AUX RS232 este circuito
auxiliar se encarga de las comunicaciones de nuestro PIC con el PC. En
realidad no es mas que un conversor de voltaje entre las salidas TX y RX
del PIC que nos dan ceros y unos con 0V y 5V y el estándar de RS-232 que
hace la misma modulación pero con +12V y -12V. Esa conversión es de la que
se encarga el circuito integrado
MAX232 del fabricante
Maxim
En este nuevo diseño vamos a utilizar los dos canales que
implementa el MAX232, pudiendo utilizarlos indistintamente. Vamos a
colocarle dos juegos de clemas Tx-Rx para poder inyectarle dos juegos de
señales TTL y sus correspondiente pareja de conectores DB9 para
conectarlos con los puertos COM de uno o dos PC's.
El incluirle los LEDS para
monitorizar las transmisiones TTL se basa en una idea original de Daniel
González (Radon)
|
Para hacerla compatible con nuestra
RRBOARD2 ... Para ello necesitamos
implementar sólo dos ideas base:
|
- Tamaño de la placa PCB: que vamos a
elegir la de QUARTER_EUROBOARD de 50 x 80 mm, con los taladros de
fijación a 5 mm de sus bordes. La RRBOARD2 va montada sobre una
HALF_EUROBOARD de 80 x 100 mm. (ver
Recursos para el PCB Eagle Layout Editor.)
- Conector de Cable Plano CON-ML-10
de 10 pines con el mismo pinout del puerto PORTC de la RRBOARD2,
aunque solo utilizando de todos ellos los correspondientes a la
alimentación y los PORTC6 y PORTC7 que son Tx y Rx respectivamente de
los PIC's 16F877 y/o 18F4550.
|
Recursos:
|
- Datasheet del
MAX232 (PDF 637 Kb)
|
|
|
| Tres
interesantes Application Notes :
|
Esquema:
|
|
 |
Circuito impreso:
|
|

|
|

|
Pruebas de conexión simple a la
RRBOARD2 :
|
|

|
|
|
|
|
|
Rediseño:
|
|
Conectado el Canal 2 a los pines del
conector para Cable Plano 10 pines, con dos Jumpers para poder conectarlo
/ desconectarlo del circuito (Necesario para poder utilizar dos canales
serie desde el PIC, uno por Hardware mediante la USART y otro por software
emulando la misma). |
|
|
 |
 |
|
|
| |
| |
| |
|
|
| Pruebas de conexión de
doble canal: |
| |
|
|
- hace unos días contesté "teóricamente"
a una pregunta que ahora estoy dispuesto a contestar "prácticamente",
tanto en hardware como en software ...
|
- y que es una Doble Conexión entre
el PIC y el PC:
|
- He escrito un pequeño programa que
abre dos "streams" serie distintos. Uno de ellos, el STANDARD,
hace uso de la USART del PIC, y el otro, el ESPECIAL, la simula
por software.
|
- Como podéis comprobar este programa
escribe en ambos streams tras el Reset, la interrupción RDA que solo
"escucha" el stream STANDARD se encarga de volcar sobre el ESPECIAL el
carácter ASCII siguiente al recibido.
|
| El programa es: |
| |
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN, NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,stream=STANDARD)
#use rs232(baud=9600, xmit=PIN_D0,stream=ESPECIAL)
char Keypress=0x00;
#int_rda
void serial_isr() {
Keypress=0x00;
if(kbhit()){
Keypress=getc();
if(Keypress!=0x00){
fputc(keypress ,STANDARD);
fputc(keypress+1,ESPECIAL);
keypress=0x00;
}
}
}
void main(){
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_0(RTCC_OFF);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
port_b_pullups(FALSE);
set_tris_c(0b10000000);
set_tris_e(0b00010000);
fprintf(STANDARD,"\r\n18F4550 in RRBOARAD2\r\n");
fprintf(STANDARD,"¡I'm alive! in STANDAR Channel\r\n\r\n");
fprintf(ESPECIAL,"\r\n18F4550 in RRBOARAD2\r\n");
fprintf(ESPECIAL,"¡I'm alive! in SPECIAL Channel\r\n\r\n");
enable_interrupts(int_rda);
enable_interrupts(global);
while(TRUE) {
}
}
|
- El hardware lo he conectado mediante
la recién nacida "RS232 Doble Canal". Del puerto PORTC de la RRBOARD2
conecto la alimentación y RC6 y RC7 al Canal 1, y el PORTD mediante dos
hilos conecto RD0 y RD1 al Canal 2.
|
|

|
El Canal 1 lo conecto al
COM1 del PC y el Canal 2 al COM3 del mismo. En éste abro dos instancias
del Monitor Serie del CCS C, el Siow.exe, monitorizando estos dos puertos
serie del PC.
|
Y los resultados :
|
|
 |
| |
| |
| |
|
PCB's en PDF Listos para imprimir. |