TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: self08 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
-
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
(http://img512.imageshack.us/img512/7693/pruebapic628rs232ciroc8.gif)
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
-
Muchas gracias. Voy a probar el circuito!
-
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. :( :?
-
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
-
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!
-
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