Autor Tema: RECEPCION DE UN BYTE  (Leído 5571 veces)

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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #15 en: 28 de Febrero de 2006, 12:46:00 »
Escrito originalmente por nacha4
lo que envia y recibe con el Siow es siempre en HEX y lo de GND si lo tengo asi tambien pense en eso


Antes de ir a mi casa a revisar el código, quisiera preguntarte lo siguiente

1) Que modelo exacto de pic es? Fijate en el encapsulado y transcribelo exactamente.
2) Que cristal estas utilizando?
3) Con que configuration bits programas el microcontrolador?
4) Que baudeaje deseas utilizar?
5) Tienes osciloscopio?? Si es así, has medido que llega puntualmente al pic?


Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #16 en: 28 de Febrero de 2006, 15:01:00 »
te respondo las preguntas:

1) PIC16F628A
abajo dice -I/P un circulo con un 83 adentro (me parece porque es muy chiquito)
2) Uno de 4 MHz en el cristal dice D400L7I
3) esa parte la configuraste vos en el programa
                movlw    b"00100100"
   movwf   TXSTA
en el VBasic es 9600,n,8,1
4) 9600 baudios
5) no tengo osciloscopio

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #17 en: 28 de Febrero de 2006, 18:27:00 »
me figura como que contestaste pero no aparece nada
Nacha4

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #18 en: 28 de Febrero de 2006, 19:01:00 »
Escrito originalmente por nacha4
me figura como que contestaste pero no aparece nada
Nacha4


Asi es, el maldito foro se comió mi post!
Ahi va de nuevo.

Aqui te puse un código que cambia levemente de tu codigo a su vez modificado por mi jeje.   Este código leera los datos recibidos por la USART y hará titilar un LED ubicado en el PORTA<0> por cada dato recibido (ya sea bien o mal).  Recibirá a 9600bps, con Cristal de 4Mhz.

Además permite manejar el error de overrun por cualquier eventualidad.

El error de framing se elimina al leer el dato del RCREG.

Quisiera además pedirte que postees como configuras los Configuration Bits a la hora de grabar tu microcontrolador.  Es importante ya que esto podria hacer resetear a tu pic.


Codigo:

   LIST P=16F628
   Radix HEX
   #Include <P16F628.inc>

   
DATORX equ 0x70 ;dato a recibido
FLAG_AUX equ 0x71   ;registro auxiliar para saber si debo prender o apagar el led

   ORG 0
   goto   INICIO
   ORG 4
RSI:
   movf   RCREG,w   ;mueve entrada a W
   movwf   DATORX   ;Mueve la entrada a DATORX

   btfsc   FLAG_AUX,0
   goto   APAGALED
ENCIENDELED:
   bsf   PORTA,0
   bsf   FLAG_AUX,0
   goto   CHEQUEO

APAGALED:
   bcf   PORTA,0
   bcf   FLAG_AUX,0

CHEQUEO:
   retfie



INICIO
   bcf   STATUS,RP0   ;banco 0
   bcf   STATUS,RP1

   movlw    b"01000000"    ;Habilito El PEIE
   movwf   INTCON

   movlw   .7
   movwf   CMCON

   bsf    STATUS,RP0   ;Banco 1

   movlw   b"11100010"   ;RB1 enntrada resto salida modificar las entradas y salida menos rb1,rb2
   movwf   TRISB    ;EEESSSES
   movlw   b"11110000"   ;EEEESSSS
   movwf   TRISA

   movlw    b"00000100"   ;No enciendo TX Usart porque ahora no se usará
   movwf   TXSTA    ;BRGH = 1

   movlw    b"00100000"
   movwf   PIE1

   bcf    STATUS,RP0
   movlw    b"10000000"   ;habilito el puerto serie en modo continuo
   movwf   RCSTA

   movlw   d"25"   ;se configura SPBRG de 9600 baudios #4Mhz - BRGH=1
   movwf   SPBRG

   clrf   FLAG_AUX
   bsf   RCSTA,CREN   ;Habilito recepcion de usart
   bsf   INTCON,GIE   ;habilito interrupciones grales

BUCLE:
   GOTO   BUCLE    ;bucle infinito


   end




Luego comentame los resultados.  Si esto funciona sería importante que cablees tambien todo lo relativo a TX para ver si la pc recibe algo.

Luego haremos un software de "eco" que retransmita lo que recibe.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #19 en: 28 de Febrero de 2006, 23:02:00 »
hola aca estoy despues de probar sigue funcionando igual que antes digamos enciende el led algunas veces y habeses ni se entera, lo que paso es algo estraño, cuando lo puse tenia puesto led en RA1 y en RB0 y se encendieron apenas le di tension y otra cosa le corto la tencion y cuiando se la pongo de nuevo sigue encendido el led si habia estado encendido cuando lo page, puede estar cagado el PIC?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #20 en: 01 de Marzo de 2006, 12:34:00 »
Escrito originalmente por nacha4
muchisimas gracias ahora lo voy a probarlo y te cuento
los configuradores bits que dejo tildados son MCLR, BODEN y LVP



LVP ? para que usas el LVP??? Si lo programas convencionalmente el LVP lo debes desactivar.

MCLR? Podrias postear como es tu circuito de reset? O mejor aún, el circuito general de lo que estas armando?

Respecto a los problemas que has tenido, releí mucho tu parrafo, y la verdad no entiendo nada, podrias exponer tu problea mas claramente? Digamos, explicando paso a paso que te ha ido ocurriendo?  

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #21 en: 01 de Marzo de 2006, 13:09:00 »
hola ya encontre el problema es que el vendedor me vendio un 16F628 de 20 Mhz en ves de uno de 4 Mhz como yo le habia pedio, modifique en el programa
movlw d"25"
movwf SPBRG

por

movlw d"129"
movwf SPBRG
y enciende y apaga el led puesto en RA0 caundo recibe un BYTE, lo que no me entendiste es que tengo puesto un led en RA1 y cuando prendo el PIC se prende ese led y en el programa yo no pongo que haga nada.
para trasmitir lo que tengo que cambiar es

movlw b"00000100"
movwf TXSTA

por

movlw b"00100100
movwf TXSTA

Desde ya muchisimas gracias por la cantidad de ayuda que me as dado voy a estar eternamente agradecido  vos

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #22 en: 01 de Marzo de 2006, 15:39:00 »
Escrito originalmente por nacha4
hola ya encontre el problema es que el vendedor me vendio un 16F628 de 20 Mhz en ves de uno de 4 Mhz como yo le habia pedio, modifique en el programa
movlw d"25"
movwf SPBRG

por

movlw d"129"
movwf SPBRG
y enciende y apaga el led puesto en RA0 caundo recibe un BYTE, lo que no me entendiste es que tengo puesto un led en RA1 y cuando prendo el PIC se prende ese led y en el programa yo no pongo que haga nada.
para trasmitir lo que tengo que cambiar es

movlw b"00000100"
movwf TXSTA

por

movlw b"00100100
movwf TXSTA

Desde ya muchisimas gracias por la cantidad de ayuda que me as dado voy a estar eternamente agradecido  vos


Me alegro que hayas solucionado tu problema.  Exactamente eso es lo que tienes que cambiar.

Lo del modelo no me quedo muy claro porque los pics esos, andan a 4Mhz por defecto con oscilador interno o a 20Mhz (los modelo I) pero para eso les tenes que poner un cristal externo.  En fin, no me quedó claro pero si te funciona me alegro.

Saludos y hasta la proxima.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #23 en: 01 de Marzo de 2006, 17:07:00 »
tengo otro inconveniente cuando modifico un poco el programa ya no anda te podes fijar que hice mal

LIST P=16F628
   Radix HEX
   #Include <P16F628.inc>

   
DATORX equ 0x70 ;dato a recibido
FLAG_AUX equ 0x71   ;registro auxiliar para saber si debo prender o apagar el led

   ORG 0
   goto   INICIO
   ORG 4
RSI
   movf   RCREG,w   ;mueve entrada a W
   movwf   DATORX   ;Mueve la entrada a DATORX
   btfsc     FLAG_AUX,1
   GOTO   enced
   GOTO    apag
   andlw   0xF0       ;Comprueba si las 4 bit mas significativos
   sublw    b"10010000"   ;Modificar para los siguientes pics
   btfsc   STATUS,Z
   goto   PIC
   retfie         
PIC
   movf   DATORX,w
   andlw   0x0F
   sublw   b"00000001"
   btfsc   STATUS,Z
   goto   LUZ4
   movf   DATORX,w
   andlw   0x0F
   sublw   b"00000010"
   btfsc   STATUS,Z
   goto   LUZ5
   movf   DATORX,w
   andlw   0x0F
   sublw   b"00000011"
   btfsc   STATUS,Z
   goto   LUZ5
   movf   DATORX,w
   andlw   0x0F
   sublw   b"00000100"
   btfsc   STATUS,Z
   goto   enviar
   retfie         

LUZ4
   btfsc   FLAG_AUX,0
   goto   APAGALED
ENCIENDELED
   bsf   PORTA,0
   bsf   FLAG_AUX,0
   retfie
APAGALED
   bcf   PORTA,0
   bcf   FLAG_AUX,0
   retfie
LUZ5
   bsf   PORTA,1
   retfie
LUZ6
   bcf   PORTA,1
   retfie
enviar
   movlw b"01000000"   ;Envio dato a la PC que esta en OFF
   movwf TXREG
   BSF STATUS,5
   BCF STATUS,6
   GOTO TX_DAT
TX_DAT
   BTFSS TXSTA,1
   GOTO TX_DAT
   BCF STATUS,5
   retfie   
INICIO
   bcf   STATUS,RP0   ;banco 0
   bcf   STATUS,RP1

   movlw    b"01000000"    ;Habilito El PEIE
   movwf   INTCON

   movlw   .7
   movwf   CMCON

   bsf    STATUS,RP0   ;Banco 1

   movlw   b"11100010"   ;RB1 enntrada resto salida modificar las entradas y salida menos rb1,rb2
   movwf   TRISB    ;EEESSSES
   movlw   b"11110000"   ;EEEESSSS
   movwf   TRISA

   movlw    b"00100100"   ;No enciendo TX Usart porque ahora no se usará
   movwf   TXSTA    ;BRGH = 1

   movlw    b"00100000"
   movwf   PIE1

   bcf    STATUS,RP0
   movlw    b"10000000"   ;habilito el puerto serie en modo continuo
   movwf   RCSTA

   movlw   d"129"   ;se configura SPBRG de 9600 baudios #4Mhz - BRGH=1
   movwf   SPBRG

   clrf   FLAG_AUX
   bsf   RCSTA,CREN   ;Habilito recepcion de usart
   bsf   INTCON,GIE   ;habilito interrupciones grales

BUCLE:
   GOTO   BUCLE    ;bucle infinito


   end

y con respecto al bits de configuracion los puse todos desabilitados eso puede ser un error?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #24 en: 02 de Marzo de 2006, 12:12:00 »
Escrito originalmente por nacha4
tengo otro inconveniente cuando modifico un poco el programa ya no anda te podes fijar que hice mal




1) No se que es lo que hace mal porque no se que es lo que quieres hacer con tu "nuevo" software. Puedo poner buena voluntad, pero tampoco soy adivino.

2) Usa el programa que si andaba y ve agregando cosas poco a poco a ver si te sigue funcionando.

Escrito originalmente por nacha4

y con respecto al bits de configuracion los puse todos desabilitados eso puede ser un error?


Dificil saber si no indicas con mas precisión tu problema , y cuales son los bits que configuraste y como los configuraste...

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado nacha4

  • PIC16
  • ***
  • Mensajes: 113
RE: RECEPCION DE UN BYTE
« Respuesta #25 en: 03 de Marzo de 2006, 18:12:00 »
Hola te paso a contar que quiero que haga el PIC lo le envio un Byte que comprueve los 4 bits mas significativos si son igules a los bits que yo pongo (ej 1001) que pase a controlar los 4 menos significativos, segun a cual son iguales que haga determinadas cosas (ej 0001 que encienda un led en RA0, 0010 encienda led en RA1) espero que entiendas lo que quiero hacer pero con mi programa no lo hace
espero tu ayuda desde ya muchas gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #26 en: 03 de Marzo de 2006, 21:35:00 »
Yo te podría resolver el problema y el programa pero si lo hago no aprenderás nada.

Creo que debieras poner algo más de esfuerzo en  entender porqué no funciona tu software!

Fijate esto que has puesto:

Codigo:

movf RCREG,w ;mueve entrada a W
movwf DATORX ;Mueve la entrada a DATORX
btfsc FLAG_AUX,1
GOTO enced
GOTO apag




Aqui haces lo siguiente
1) lees el dato del RCREG
2) lo guardas en DATORX
3) Verificas el estado del FLAG Auxiliar y en función de eso apagas o enciendes el LED yendo a las rutinas encend y apag. Las cuales a su vez tienen luego un RETFIE que hacen retornar de la subrutina

Es decir que NUNCA pasaran por la rutina de chequeo de si el nibble superior y/o in ferior son iguales a lo que tu comparas.

Debes primero, no haber insertado esas lineas en donde las insertaste,  debes dejar que se complete toda la rutina de encendido y / o apagado del led, esas rutinas no deben tener un RETFIE sino que deben ir a la rutina que compara si el nibble inferior o superior son iguales a lo comparado.  Recien ahí haces el RETFIE

No te hago yo el código porque quiero que pongas un poco de atención y dedicación en lo que haces y no te vendría mal "simular" el proceso

Postea tu resultados y veré de seguir ayudandote.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: RECEPCION DE UN BYTE
« Respuesta #27 en: 04 de Marzo de 2006, 06:37:00 »
Hola nacha4, acá que dejo el firmware completo, debería funcionar bien:

Codigo:
;---------------Encabezado--------------------------------------------------------------------------

   LIST      P = 16F628A
   INCLUDE      <P16F628A.INC>

;------------Configuración de bits------------------------------------------------------------------
   __CONFIG   _BODEN_OFF&_BOREN_OFF&_CP_OFF&_DATA_CP_OFF&_PWRTE_OFF&_WDT_OFF&_LVP_OFF&_MCLRE_OFF&_XT_OSC

;   Frecuencia del cuarzo (oscilador del PIC) de 4 Mhz
;   Transmición a 9600 Baud asíncrono (9600,8 ,N, 1) 8 bits datos, sin paridad y 1 bit de stop

;------------Definicion de la RAM-------------------------------------------------------------------

WWW      EQU   .32
ESTADO      EQU   .33
DATORX      EQU   .34

;---------------------------------------------------------------------------------------------------
   ORG   .0      ; vector de RESET
   goto   INICIO      ;
   ORG   .4      ; vector de INTERRUPCION
   goto   RSI      ;

;---------------------------------------------------------------------------------------------------
RSI
   movwf   WWW       ;
   swapf   STATUS,W      ; esto es necesario para no perder datos
   movwf   ESTADO      ; cuando se produce la interrupccion    

   movf   RCREG,w      ; mueve entrada a W
   movwf   DATORX      ; mueve la entrada a DATORX
   andlw   B"11110000"
   sublw   B"10010000"   ; comprueba los mas significativos
   btfss   STATUS,Z
   goto   SALIR      ; si los mas significativos no correspondes sale de la interrupcion

   movf   DATORX,W
   andlw   B"00001111"
   movwf   DATORX
   incf   DATORX,W
   addwf   PCL,F
   nop
   goto   RUT_0
   goto   RUT_1
   goto   RUT_2
   goto   RUT_3
   goto   RUT_4
   goto   RUT_5
   goto   RUT_6
   goto   RUT_7
   goto   RUT_8
   goto   RUT_9
   goto   RUT_10
   goto   RUT_11
   goto   RUT_12
   goto   RUT_13
   goto   RUT_14
   goto   RUT_15
RUT_0
   bsf   PORTA,1      ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0000"
   goto   SALIR
RUT_1
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0001"
   goto   SALIR
RUT_2
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0010"
   goto   SALIR
RUT_3
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0011"
   goto   SALIR
RUT_4
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0100"
   goto   SALIR
RUT_5
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0101"
   goto   SALIR
RUT_6
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0110"
   goto   SALIR
RUT_7
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX0111"
   goto   SALIR
RUT_8
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1000"
   goto   SALIR
RUT_9
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1001"
   goto   SALIR
RUT_10
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1010"
   goto   SALIR
RUT_11
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1011"
   goto   SALIR
RUT_12
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1100"
   goto   SALIR
RUT_13
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1101"
   goto   SALIR
RUT_14
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1110"
   goto   SALIR
RUT_15
            ;FUNCION A REALIZAR EN EL CASO DE RECIBIR "XXXX1111"
SALIR
   swapf   ESTADO,W   ;
   movwf   STATUS      ; esto es necesario para no perder datos
   swapf   WWW,F      ; cuando se produce la interrupccion
   swapf   WWW,W      ;
   retfie

;---------------------------------------------------------------------------------------------------
INICIO
   bcf   STATUS,RP0   ; banco 0
   bcf   STATUS,RP1

   clrf   PORTA      ; limpio el puerto A
   clrf   PORTB      ; limpio el puerto B

   movlw   .7
   movwf   CMCON
   bsf   STATUS,RP0   ; banco 1
   movlw   B"11110000"   ; EEEESSSS
   movwf   TRISA
   movlw   B"11100010"   ; RB1 enntrada resto salida modificar las entradas y salida menos rb1,rb2
   movwf   TRISB      ; EEESSSES
   movlw   B"00100000"
   movwf   PIE1
   movlw   B"00100100"
   movwf   TXSTA
   movlw   .25
   movwf   SPBRG
   bcf   STATUS,RP0

   movlw   B"11000000"
   movwf   INTCON
   movlw   B"10010000"
   movwf   RCSTA

   goto   $      ; bucle infinito

;---------------------------------------------------------------------------------------------------
   END


Donde dice FUNCION A REALIZAR... le colocas la rutina que deseas para cada valor de los 4 bits menos significativos.

Para reconocer una transmisión valida e usado B"1001" para los 4 bits mas significativos.

Espero te sea de utilidad.

Una saludo y suerte.

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: RECEPCION DE UN BYTE
« Respuesta #28 en: 04 de Marzo de 2006, 07:38:00 »
Hola nacha4, el firmware que e posteado solo debes compilarlo con el MPLAB abrir el .hex con el programa quemador sin setear nada en este y programar el PIC, como puedes ver la configuración de los osciladores y demás ya esta incluida en el .asm

Este firmware es para un cuarzo de 4 MHz, para que funcione de manera correcta con uno de 20 MHz debes cambiar lo siguiente:

Codigo:
   __CONFIG   _BODEN_OFF&_BOREN_OFF&_CP_OFF&_DATA_CP_OFF&_PWRTE_OFF&_WDT_OFF&_LVP_OFF&_MCLRE_OFF&_HS_OSC


   movlw   .129
   movwf   SPBRG


Si tú PIC es un 16F628 en ves del 16F628A para el cual esta echo este programa solo debes cambiar esto:

Codigo:
   LIST      P = 16F628
   INCLUDE      <P16F628.INC>


Por la configuración del USART esa es la que actualmente tengo en uso en un proyecto y anda bien, y la interrupción simulándola en el MPLAB anda de manera correcta.

Cualquier duda solo pregunta.

Espero te sea de ayuda.

Un saludo

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: RECEPCION DE UN BYTE
« Respuesta #29 en: 04 de Marzo de 2006, 07:48:00 »
Carlos, si bien tus intenciones son buenas, como sé que lo son, yo no le quise postear el código corregido del anterior porque al primer código que yo hice le agregó lineas que no hacian lo que se pretendia.

Entonces me di cuenta que postearle el código no le estaba ayudando, ya que no prestaba atención al código en sí ni a lo que estaba haciendo.

Tu código si bien funciona bien es "otro" código y creo que tal vez caiga en el mismo problema que el mío en que lo quiera modificar y no ande nada, simplemente porque no lo entiende.

Es por eso que le extraje una pequeña porción de su código para que pueda hilar donde está el error y "darse cuenta".

Al menos mi idea de un foro no es solamente postear códigos sino enseñar y mostrar el error para que no se vuelva a repetir.  


Saludos Carlos y nacha4 a hacer los deberes!!
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)