Autor Tema: Modulo SCI del GP32  (Leído 6001 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado self08

  • PIC10
  • *
  • Mensajes: 5
Modulo SCI del GP32
« en: 29 de Julio de 2008, 11:54:01 »
Hola
tengo un programa para envio de datos via SCI. Cuando lo simulo y quiero ver el contenido del SCDR me da como no inicializado a pesar que lo está.  Una alternativa sería ver que sale por el pin TDX. alguien sabe cómo hacerlo?
Muchas gracias

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Modulo SCI del GP32
« Respuesta #1 en: 29 de Julio de 2008, 12:07:29 »
tu pregunta seria como hacerlo fisicamente? si es asi, simplemente tienes que conectarlo con un max232 para que nivele los voltajes y de ahi va al PC, aqui pongo un circuito



esto es con un pic, pero cuela igual con un gp32, ponlo a sus pines respectivos TX ysi quieres RX, ahora, si tu pregunta va, que con el codewarrior y el processor expert, jamas he utilizado esta opcion de simulacion con el chip, espero haberte ayudado, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado self08

  • PIC10
  • *
  • Mensajes: 5
Re: Modulo SCI del GP32
« Respuesta #2 en: 07 de Agosto de 2008, 17:26:05 »
Muchas gracias. Voy a probar el circuito!

Desconectado sdss

  • PIC10
  • *
  • Mensajes: 2
Re: Modulo SCI del GP32
« Respuesta #3 en: 07 de Febrero de 2010, 20:14:36 »
yo tengo el mismo problema pero no lo puedo solucionar,pero creo q al igual que self nos referimos a otra cosa, el problema es que no podemos escribir en el registro SCDR el dato que queremos enviar por la pata Tx.configure todos los registros para usar solo el transmisor y nada....configúro todo ,y quiero cargar al dato pero no lo carga.espero que alguien que lo haya podido configurar alguna ves nos pueda ayudar mostrando como lo configuro los registros y demas...espero alguna respuesta. :( :?

Desconectado Master_col

  • PIC10
  • *
  • Mensajes: 11
Re: Modulo SCI del GP32
« Respuesta #4 en: 15 de Febrero de 2010, 16:29:09 »
un saludo cordial para todos, bueno tengo algo de experiencia en micros de motorola y aca te dejo la incializacion q uso para el SCI en el GP32: El programa lo que hace es habilitar el modulo SCI en moddo de interrupcion cuando llega un dato. Cuando llega el dato en la rutina de interrupcion lo que hago es devolverlo para verificar si esta bien la comunicacion

con un oscilador externo de 4MHz

//Inicializacion Modo recepcion con Interrupcion habilitada
void init_SCI(void){
      SCBR=0x32;//RECEPCION 1200bps
      SCC1_ENSCI=1;//HABILITA MODULO ANTES DE HABILITAR el bit de recepcion ....RE
      SCC1_M=0;//PALABRA DE 8 BITS
      
      SCC2_SCRIE=1;//INTERRUPCION Rx HABILITADA
      SCC2_RE=1;//RECEPCION HABILITADA      
            
   _asm lda SCS1;//listo para recibir*/


}

//servicio de rutina interrupcion
interrupt 13 void ISR_SCI_Rx(void){
      
                SCS1;//LEE EL SCS1 PARA LIMPIAR BANDERA DE SCRF antes de leer SCDR
      dato_RS232=SCDR;//lee SCDR que es donde guarda el dato
      
      SCC2_RE=0;//DESABILITA RECEPCION
      SCC2_TE=1;//HABILITA TRANSMICION
      
      SCS1;//LEER SCS1 PARA LIMPIAR BANDERA EMPTY BIT SCTE
      SCDR=dato_RS232;//MANDA DATO
       
       while(SCS1_SCTE==0){}//espera a que mande el dato
       
       SCC2_TE=0;//DESABILITA TRANSMISION
      SCC2_RE=1;//HABILITA RECEPCION

}


Espero te sirva amigo


Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Modulo SCI del GP32
« Respuesta #5 en: 15 de Febrero de 2010, 17:21:08 »
También puedes usar el processor expert para generar el código de configuración.

Acá hay un ejemplo de como usar el processor expert. Para el ejemplo se uso el JM60, pero es igual para el GP30.

SALUDOS!

Desconectado ElFabro

  • PIC10
  • *
  • Mensajes: 1
Re: Modulo SCI del GP32
« Respuesta #6 en: 28 de Junio de 2010, 15:18:33 »
Hola gente. Estoy programando un GP32 para trabajar con la rutina de recepción de datos por interrupciones. Es decir que envio datos desde la pc al micro. El programa que hice simula muy bien pero en la vida real no anda del todo bien.
Soy nuevo en el foro asi que no se como adjuntar el codigo asi que hice copy paste. Por favor sepan disculpar.
Si alguien puede decirme que es lo que estoy configurando mal en al SCI se lo agradecería.
Saludos.
Chau.

**************************************************************
*   EJEMPLO DEL USO DEL MÓDULO SCI PARA RECEPRIÓN DE DATOS   *
**************************************************************
$Include 'GP32.inc'

RAMStart     EQU  $0040
RomStart     EQU  $E000         ; This is valid ROM on the GP32, GT16, and GT8
VectorStart  EQU  $FFDC

    org RamStart

DATO     ds     1               ;Variable ubicada en la dirección $0040

    org RomStart

**************************************************************
* Main_Init - This is the point where code starts executing  *
*             after a RESET.                                 *
**************************************************************
Main_Init:
       rsp
       clra                      ; Initialize A,X so that interrupt
       clrx                      ; processing doesn't stop with
                                 ; uninitialized register warning
                                 ; when push A,X on the stack
       cli                       ; Allow interrupts to happen

       mov       #$61,config1    ;COP deshabilitado
       mov       #$03,config2

**************************************************************
* Configuro el PLL para generar una frecuencia de 4.9152 MHz *
**************************************************************
       clr      PCTL             ;PLL:OFF
       bset     1,PCTL           ;P= 0 E= 2
       mov      #2,PMSH          ;N HI= 2
       mov      #1,PMDS          ;R= 1 (default)
       mov      #$58,PMSL        ;N LOW= 58
       mov      #$80,PMRS        ;L= 80
       bset     5,PCTL           ;PLL:ON
       bset     7,PBWC           ;enganche automatico

wait_pll:                        ;esperar que LOCK sea = 1
       brclr    6,PBWC,wait_pll  ;
       bset     4,PCTL           ;cambia a frecuencia del PLL

*************************************************************
*                       MODULO SCI                          *
*************************************************************

*************************************************
* SELECCION DEL BAUD RATE                       *
* ESTOY TRABAJANDO CON UNA FRECUENCIA DE BUS    *
* INTERNO DE 4.9152 MHz.              *
*************************************************

   mov #%00000011,SCBR   ;SCP1-SCP0=00 => Divisor por 1
                ;76.80 KBaudios.
                ;SCR2-SCR0=011 => Divisor por 8
                ;9600 Baudios.

*************************************************
* SELECCIÓN DE LA LONGITUD DEL CARACTER Y TIPO  *
* DE PARIDAD.                                   *
*************************************************

   mov #%01000000,SCC1    ;ENSCI=1 => Habilito al SCI y al
                ;SCI Baud rate.
                ;M=0 => 8 bits de datos.
                ;PEN=0 => Sin paridad.

*************************************************
* INTERRUPCIONES Y CONFIGURACION DEL TRANSMISOR   *
* USAR ESTO EN CASO DE SOLO TRANSMITIR.      *
*************************************************

        ;bclr 7,SCC2             ;SCTIE=0 => No interrumpe cuando
             ;TX Data Register está vacio.
        ;bset 6,SCC2             ;TCIE=1 => Interrupción cuando la
             ;TX está completa.
        ;bset 3,SCC2             ;TE=1 => Habilito la operación de TX.

*************************************************
* INTERRUPCIONES Y CONFIGURACION DEL RECEPTOR   *
* USAR ESTO EN CASO DE SOLO RECIBIR.      *
*************************************************

        bset 5,SCC2             ;SCRIE=1 => Interrumpe cuando se
                                ;completa el Receive Data Register.
        bset 2,SCC2             ;RE=1 => Habilito interrupción del
            ;receptor.

*************************************************
* SCI CONTROL REGISTER 3         *
*************************************************

   mov #%00000000,SCC3   ;b5=b4=0 => DMA no habilitado
            ;b3=0 => Deshabilito interrupción por overrun error
            ;b2=0 => Deshabilito interrupción por noise error
            ;b1=0 => Deshabilito interrupción por framing error
            ;b0=0 => Deshabilito interrupción por parity error

**************************************************************
*                     Configuro los puertos                  *
**************************************************************
       mov      #%11111111,ddrb
       mov      #$00,portb

**************************************************************
*                     Programa principal                     *
**************************************************************
       clr      DATO
Lazo:
     
     bra Lazo

**************************************************************
*         Rutina de atención de interrupción del TBM         *
**************************************************************
TBM:
      nop
      rti
**************************************************************
* AtoD_ISR - ADC Conversion Complete Interrupt               *
*            Transmit ADC value out serial port (PTE0)       *
**************************************************************
AtoD_ISR:
       nop
       rti


**************************************************************
* T_ISR - Timer Interrupt Service Routine.                   *
*             after a RESET.                                 *
**************************************************************
TIM1_isr:
       bclr 7,T1SC
       rti

TIM1CH0_isr:
       bclr 7,T1SC0
       rti

TIM1CH1_isr:
       bclr 7,T1SC1
       rti

TIM2_isr:
       bclr 7,T2SC
       rti

TIM2CH0_isr:
       bclr 7,T2SC0
       rti

TIM2CH1_isr:
       bclr 7,T2SC1
       rti

SCITX_isr:
       nop
       rti

SCIRX_isr:
       lda SCS1         ;Limpio el registro SCS1
       mov SCDR,DATO
       mov DATO,portb
       rti

**************************************************************
* DUMMY_ISR - Dummy Interrupt Service Routine.               *
*             Just does a return from interrupt.             *
**************************************************************
dummy_isr:

       rti           ; return


**************************************************************
* Vectors - Timer Interrupt Service Routine.                 *
*             after a RESET.                                 *
**************************************************************
   org  VectorStart

        dw  TBM          ; Time Base Vector
        dw  atod_isr     ; ADC Conversion Complete
        dw  dummy_isr    ; Keyboard Vector
        dw  SCITX_isr    ; SCI Transmit Vector
        dw  SCIRX_isr    ; SCI Receive Vector
        dw  dummy_isr    ; SCI Error Vector
        dw  dummy_isr    ; SPI Transmit Vector
        dw  dummy_isr    ; SPI Receive Vector
        dw  TIM2_isr     ; TIM2 Overflow Vector
        dw  TIM2CH1_isr  ; TIM2 Channel 1 Vector
        dw  TIM2CH0_isr  ; TIM2 Channel 0 Vector
        dw  TIM1_isr     ; TIM1 Overflow Vector
        dw  TIM1CH1_isr  ; TIM1 Channel 1 Vector
        dw  TIM1CH0_isr  ; TIM1 Channel 0 Vector
        dw  dummy_isr    ; ICG/CGM Vector
        dw  dummy_isr    ; ~IRQ1 Vector
        dw  dummy_isr    ; SWI Vector
        dw  main_init    ; Reset Vector


 

anything