Autor Tema: Configuración PIC18F45K22 para RS232  (Leído 1410 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Configuración PIC18F45K22 para RS232
« en: 07 de Mayo de 2016, 14:35:22 »
Hola a todos, últimamente solo uso el pic 18F26K22 por tener dos puerto UART.
En mi ultimo proyecto requiero de  muchos pines, por eso me cambie al pic 18F45K22, pensé que era similar a su hermano menor... Pero no logro hacer que me funcione este simple ejemplo:
Código: C
  1. #include <18LF45K22.h>
  2. #device ADC=10
  3.  
  4. #FUSES NOWDT                       //No Watch Dog Timer
  5. #FUSES NOBROWNOUT            //No brownout reset
  6. #FUSES NOLVP                        //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  7. #FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
  8. #FUSES NOMCLR                     //Master Clear pin disabled
  9. #use delay(crystal=12MHz)
  10. #use STANDARD_IO( A,B,C,D,E )
  11.  
  12. #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_C0,rcv=PIN_C1,ERRORS,stream=debug)  // Configuración debug (Software)
  13. #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C7,ERRORS,stream=uart1)  // Configuración UART1 (Hardware)
  14. #use rs232(baud=9600,bits=8,parity=N,xmit=PIN_D6,rcv=PIN_D7,ERRORS,stream=uart2)  // Configuración UART2 (Hardware)
  15.  
  16. #define LED PIN_C2
  17. #define DELAY 1000
  18.  
  19.  
  20. void main(){
  21.  
  22.  
  23.  setup_timer_0(T0_OFF);
  24.    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);        //  174 ms overflow, Setup timer: Reloj interno, preescaler= 8
  25.    set_timer1 (0xE4D);                            //  Carga del TMR1 0.165=4/12000000*8(65536-x),x=3661 >> Tiempo de desbordamiento es 0.165 segundos
  26.  
  27.    setup_timer_2(T2_DISABLED,0,1);
  28.    setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
  29.    setup_timer_4(T4_DISABLED,0,1);
  30.    setup_comparator(NC_NC_NC_NC);
  31.    setup_ccp1(CCP_OFF);
  32.    setup_ccp2(CCP_OFF);
  33.    setup_ccp3(CCP_OFF);      
  34.    setup_ccp4(CCP_OFF);
  35.    setup_ccp5(CCP_OFF);
  36.    setup_dac(DAC_OFF);
  37.    setup_adc(ADC_OFF | NO_ANALOGS);
  38.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  39.    setup_wdt(WDT_OFF);
  40.  
  41.  
  42.  
  43.  fprintf(uart1,"Hola mundo");
  44.  fprintf(uart2,"Hola mundo");
  45.  fprintf(debug,"Hola mundo");
  46.  
  47.  
  48.  
  49.    while(TRUE)
  50.    {
  51.  
  52.       //Example blinking LED program
  53.       output_low(LED);
  54.       delay_ms(DELAY);
  55.       output_high(LED);
  56.       delay_ms(DELAY);
  57.  
  58.       //TODO: User Code
  59.    }
  60.  
  61. }

El led parpadea, pero la parte RS232 no funciona, solo funciona el puerto por Software.
¿Alguien sabe que se debe configura?


EDIT:

Era problema de HARDWARE, tenia cruzado mal los pines en el terminal virtual... (estoy "simulando" varios terminales y no vi que NO había que cruzar TX con RX (precisamente porque estoy simulando esos dispositivos.

Aclarado esto, el código SI FUNCIONA.
« Última modificación: 07 de Mayo de 2016, 22:08:17 por cvargcal »