Autor Tema: proyecto trigger to midi, 16f877  (Leído 12846 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: proyecto trigger to midi, 16f877
« Respuesta #15 en: 11 de Diciembre de 2009, 06:50:23 »
mira la que uso yo, y a ver si te da una idea
Citar
ENVIAR_USART               ;EL DATO A TRANSMITIR ESTA ALOJADO EN W HASTA QUE TERMINE EL ULTIMO ENVIO
      BANKSEL   TXSTA
      BTFSS   TXSTA,TRMT      ;SI ESTA A UNO EL REGISTRO ESTA VACIO
      GOTO   ENVIAR_USART   ;SI ESTA A CERO, SIGUE LLENO Y A DE ESPERAR
      BANKSEL   TXREG      
      MOVWF   TXREG         ;Y CARGA EL DATO A TRANSMITIR EN TXREG
      BANKSEL   TXSTA
      BSF      TXSTA,TXEN      ;ACTIVA EL ENVIO TXEN=1
ESPERAR
      BANKSEL   PIR1
      BTFSS   PIR1,TXIF      ;CUANDO TERMINA, SE PONE A UNO TXIF Y SALTA
      GOTO   ESPERAR         ;ESTA INSTRUCCION, SI NO VOLVERIA A ESPERAR.
      BCF      TXSTA,TXEN
      BCF      STATUS,RP0      ;BANK 0
      BCF      STATUS,RP1      
      RETURN
   

seguramente se pueda abreviar cambiando los banksel y alguna cosilla, pero funciona

un saludo

Desconectado elgarou

  • PIC10
  • *
  • Mensajes: 12
Re: proyecto trigger to midi, 16f877
« Respuesta #16 en: 13 de Diciembre de 2009, 03:28:18 »
he probado la rutina que posteaste alogic.on , creo k el registro TXREG si se carga pero el bucle de testeo del bit TRMT demora alrededor de mas de 1 milisegundo, es esto normal??, ademas no veo la salida por el pin RC6 usando el osciloscopio del simulador, quizas sea problema del pic simulator, pero en fin, no puedo estar seguro de que el codigo que he escrito sea funcional, ojala puedan simularlo uds y recomendarme un simulador mas idoneo si fuera el caso.

Saludos!!

Desconectado elgarou

  • PIC10
  • *
  • Mensajes: 12
Re: proyecto trigger to midi, 16f877
« Respuesta #17 en: 13 de Diciembre de 2009, 05:29:17 »
Me he dado cuenta k el registro TXREG se carga solo si habilito el bit TXEN despues,  y solo se carga con un par de datos, despues de la habilitacion del bit para transmitir el registro no se vuelve a llenar y las bandera TXIF se queda indicando que el buffer de transmicion esta lleno, ya que el registro TXREG no se vuelve a cargar, la verdad nose donde esta el error, espero me puedan ayudar.

 Saludos

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: proyecto trigger to midi, 16f877
« Respuesta #18 en: 13 de Diciembre de 2009, 10:34:39 »
a mi siempre me ha funcionado parar, respirar, y volver a empezar de cero. con lo aprendido. no en cada fallo pero si cuando hay algo que no consigo localizar. eso depende de la paciencia de cada uno para revisar el codigo una y otra vez.
por que pones estas lineas de configuracion en el programa principal, se modifican en algun momento?? si no ponlas en inicio y solo se usan al principio para la configuracion
Citar
Inicio

     ;seteo usart

 bsf     STATUS,RP0     
           movlw   b'10001000'   
           movwf   TRISC     
           movlw   01h             
           movwf   SPBRG
           movlw   b'00100000'     
           movwf   TXSTA
           bcf     STATUS,RP0             
           movlw   b'10010000'     
           movwf   RCSTA
     
ADC
      bsf STATUS,5
      movlw 0XFF
      movwf TRISA
      bsf STATUS,5
      movlw 0x02 ; Justificado a la izquierda, Fosc/8, RA0_RA1_RA2_RA3_RA5 analógico, VDD, VSS.
      movwf ADCON1


Main
      bcf STATUS,5 ; Banco 0
      movlw 0x45 ; Fosc/8, Canal 0, módulo habilitado.-
      movwf ADCON0
      call Demora_20us
      movwf velocity
      movlw 0x4D ; Fosc/8, Canal 1, módulo habilitado.-
      movwf ADCON0
      call Demora_20us
      movwf velocity1
      movlw 0x55 ; Fosc/8, Canal 2, módulo habilitado.-           
      movwf ADCON0
      call Demora_20us
      movwf velocity2
      movlw 0x5D ; Fosc/8, Canal 3, módulo habilitado.-
      movwf ADCON0
      call Demora_20us
      movwf velocity3
      goto Comparar
 

   


Demora_20us
      bcf STATUS,5
      movlw 0x05  ; CONTADORES
      movwf contador ; Iniciamos contador.-
Repeticion
      decfsz contador ; Decrementa Contador1.-
      goto Repeticion ; Si no es cero repetimos ciclo.-
Espera
      btfsc ADCON0,GO ; Espera a que termine conversion.-
      goto Espera
      movf ADRESH,W ;----------------> REVISAR ASUNTO MSB LSB
      return

Comparar
      bcf STATUS,5
      movlw 0x91 ; canal 2 ; inicio canal (note on)
      movwf canal_on
      movlw 0x81 ; canal 2 ; inicio canal (note off)
      movwf canal_off     
      movlw 0x01 ; nota 1, inicio nota
      movwf nota
      movlw 0x00
      movwf velocity_0 ; inicio velocity = 0, equivalente a note off
      movlw 0x7F
      movwf vel_max
                     
       
       clrw
ch2   
       bcf STATUS,5
       iorwf velocity,F
       btfsc STATUS,Z ; si velocity diferente de 0, salta y envia el dato
       goto ch3
       movf canal_on,w
       movwf TXREG
       call Envio_usart
       movf nota,w
       movwf TXREG
       call Envio_usart
       bcf velocity,7               
       movf velocity,w
       movwf TXREG
       call Envio_usart
       movf canal_off,w
       movwf TXREG
       call Envio_usart
       movf nota,w
       movwf TXREG
       call Envio_usart
       movf velocity_0,w
       movwf TXREG
       call Envio_usart
       clrw ; deja en 0 a W
ch3
 incf canal_on ; canal 3,4,5
 incf canal_off ; canal 3,4,5
       iorwf velocity1,F ; testea siguiente registro de velocity, linea xxx
       btfsc STATUS,Z
       goto ch4
       movf canal_on,w
       movwf TXREG
       call Envio_usart
       movf nota,w
       movwf TXREG
       call Envio_usart
      bcf velocity1,7
       movf velocity1,w
       movwf TXREG
       call Envio_usart
        movf canal_off,w
       movwf TXREG
      call Envio_usart
      movf nota,w
      movwf TXREG
      call Envio_usart
      movf velocity_0,w
      movwf TXREG
      call Envio_usart
      clrw ; deja en 0 a W
ch4
 incf canal_on ; canal 3,4,5
 incf canal_off ; canal 3,4,5
       iorwf velocity2,F
       btfsc STATUS,Z
        goto ch5
       movf canal_on,w
       movwf TXREG
      call Envio_usart
      movf nota,w
      movwf TXREG
      call Envio_usart
      bcf velocity2,7
      movf velocity2,w
      movwf TXREG
      call Envio_usart
       movf canal_off,w
      movwf TXREG
      call Envio_usart
      movf nota,w
      movwf TXREG
      call Envio_usart
      movf velocity_0,w
      movwf TXREG
      call Envio_usart
      clrw ; deja en 0 a W
ch5
 incf canal_on ; canal 3,4,5
 incf canal_off ; canal 3,4,5
       iorwf velocity3,F
       btfsc STATUS,Z
      goto Main
     movf canal_on,w
     movwf TXREG
      call Envio_usart
      movf nota,w
      movwf TXREG
      call Envio_usart
      incf canal_on ; canal 3,4,5
      bcf velocity3,7
      movf velocity3,w
      movwf TXREG
      call Envio_usart
     movf canal_off,w
     movwf TXREG
      call Envio_usart
      movf nota,w
    movwf TXREG
      call Envio_usart
      movf velocity_0,w
    movwf TXREG
      call Envio_usart
       goto Main

      end

tambien he visto esta linea de configuracion de los fuses, tienes puesto
   __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF
para cristales de 4mhz se usa XT y para mayores HS

un saludo

Desconectado elgarou

  • PIC10
  • *
  • Mensajes: 12
Re: proyecto trigger to midi, 16f877
« Respuesta #19 en: 16 de Diciembre de 2009, 07:53:34 »
 creo k lo he solucionado, testeando el bit TXIF en vez del TMRT, ahora puedo ver k las banderas se activan y desactivan cuando corresponde pero aun no puedo ver la salida del RC6 en el osciloscopio, alguna recomendacion para realizar una simulacion total de mi proyecto con la entrada de pulsos analogos hasta la transmicion via usart?? la verdad me es muy necesario.

(adjunto el codigo nuevo)

 SALUDOS!!

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: proyecto trigger to midi, 16f877
« Respuesta #20 en: 16 de Diciembre de 2009, 10:30:33 »
para la simulacion te puede valer un pulsador, y creo recordar que hay una herramienta para verificar la usart en vez del osciloscopio, si quieres probar señales analogicas en isis puedes cargar algun ruido y dispararlo

un saludo