• Martes 5 de Noviembre de 2024, 09:29

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Pegasux

Páginas: 1 [2] 3 4 ... 6
26
Microcontroladores / Re: Despertar el micro por RX
« en: Miércoles 10 de Diciembre de 2008, 16:14 »
Hola. Parece que ya esta solucionado el tema de los cables (por ahora...) pero me he dado cuenta de un problema, si hacemos el susodicho puente entre la linea Rx y RB0, la linea 0 del puerto B esta compartida por el LCD y por la linea de recepcion, esta ultima está simpre que no haya datos a 1, por lo que los datos que van para el display se falsean y aparecen cosas raras... Se me ocurren dos soluciones, la facil es colocar un transistor y activarlo con un bit de los que no uso del puerto C solamente cuando nos convenga, desactivando previamente el LCD, y la solucion dificil es cambiar el manejo del display de 8 a 4 bits, dejando libres los 4 bits de menos peso del puerto B, lo cual no se si me traera mas dolores de cabeza porque lo tengo todo hecho con la libreria de 8 bits...  El tema es que una vez hecha la necesaria correccion va a ser mucho mas facil solucionar lo del sleep... Yo optaria por colocar el transistor, pero esque no llevo ninguno encima....

27
Microcontroladores / Re: Despertar el micro por RX
« en: Miércoles 10 de Diciembre de 2008, 11:08 »
Hola de nuevo. Si que puede que tengas razon, tengo problemas con el circuito, ahora no consiguo programar el pic... deben de ser los cables que no hacen bien contacto. Lo he cambiado de ladrillo pero sigue igual, imagino que es algun puñetero cable tal y como dices. De momento voy a ver si lo pongo todo en orden.

Un saludo.

28
Microcontroladores / Re: Despertar el micro por RX
« en: Martes 9 de Diciembre de 2008, 18:58 »
Hola de nuevo, veras, perdona porque he metido la pata anteriormente con lo de sacar por pantalla, porque deshabilito el LCD antes del sleep  y era logico que no saliera nada. El tema es que sin haber recepcion de datos salta la interrupcion, pongo la patilla RX con una resistencia a vcc o a gnd para que este simpre a 1 o a 0 y aun asi el micro se despierta, osea, que algo falla por algun lado.

Gracias y un saludo.

29
Microcontroladores / Re: Despertar el micro por RX
« en: Martes 9 de Diciembre de 2008, 18:19 »
He probado otra cosa, dentro de la interrupcion lo que hago es mostar una letra por pantalla, pero no lo hace, como si no entrase en la interrupcion, pero sin embargo el sleep lo pasa, porque me muestra por pantalla otros datos que hay mas abajo en el programa...

30
Microcontroladores / Re: Despertar el micro por RX
« en: Martes 9 de Diciembre de 2008, 18:15 »
Hola de nuevo. Muchas gracias por tu ayuda, pero me temo que sigue sin funcionar. Sin conectar a ningun sitio salta la interrupcion, ya sea con el bit ese a 0 o a 1, y con resistencias pull up o pull down tambien salta. He comprobado con un led la polaridad de la linea RX y he comprobado que en ausencia de datos esta a ' 1', luego es correcto que la irq se produzca por flanco de bajada, aunque mientras se estan recibiendo los datos del primer byte habra varios flancos de subida y bajada, por lo que deberia saltar de todas formas... Tambien he probado habilitando y deshabilitando las resistencias de pull up del puerto B, pero nada...
Efectivamente lo primero que hago al entrar en la interrupcion es desactivarlas, ya que como se ha despertado el micro ya no me sirve para nada.

Un saludo.

31
Microcontroladores / Re: Despertar el micro por RX
« en: Martes 9 de Diciembre de 2008, 16:47 »
Hola de nuevo. No se como se hace exactamente lo que dices, pero si que puede ser... tengo un libro de este pic y aqui no pone nada de que se activen a nivel bajo. Pongo debajo el codigo de lo que hago, se que no esta completo, pero es por abreviar... La idea es que mientras duerme, le llega el primer byte y antes de que salte la interrupcion por recepcion (la recepcion es mucho mas lenta que el micro) el micro se despierta y al retornar de la Interrupcion hace el retardo de 1 segundo durante el cual le llega todo el paquete de datos, despues se habilita el LCD y saca algo por pantalla.

Un saludo y muchas gracias!!!

.....
   bcf      STATUS,RP0      ; banco 0
   bcf      PORTA,2         ; deshabilitamos LCD para evitar problemas (señal E)

   bsf      STATUS,RP0      ; banco 1
   bsf      TRISB,0         ; PortB,0 como entrada para INT0
   bcf      STATUS,RP0      ; banco 0

   bsf      INTCON,4      ; INT0IE habilitado

;   call   RX            ; nos preparamos para recibir datos por interrupciones

   sleep   ; AQUI SE SUPONE QUE SALTA LA INTERRUPCION

   call Retardo_1s      ; para que le de tiempo al paquete a llegar entero

   bsf      STATUS,RP0      ; banco 1
   bcf      TRISB,0         ; PortB,0 como salida para LCD
   bcf      STATUS,RP0      ; banco 0

   bsf      PORTA,2         ; habilitamos LCD
....
ServicioInterrupcion

      MOVWF   GUARDA_W
      SWAPF   STATUS,W
      MOVWF   GUARDA_S   

   bcf      INTCON,4      ; quitamos interrupciones por INT0
   bcf      INTCON,1      ; borramos flag INT0

      SWAPF GUARDA_S,W
      MOVWF STATUS
      SWAPF   GUARDA_W,W

   retfie

....

32
Microcontroladores / Re: Despertar el micro por RX
« en: Martes 9 de Diciembre de 2008, 13:26 »
Muy buenas. Pues parece que no funciona bien la cosa. Tambien he probado a colocar un diodo en ambos sentidos (por si acaso). El tema es que si habilito la interrupcion del bit 0 del puerto B se despierta siempre, aunque no  haya señal de recepcion (quito el cable). Igual pruebo con resistencias pull-up y pull-down... Si alguien tiene alguna idea se agradece toda la ayuda posible.

Saludos.

33
Microcontroladores / Re: Despertar el micro por RX
« en: Viernes 5 de Diciembre de 2008, 19:01 »
Oki, lo probare el lunes que ya se me hace tarde.

Saludos y gracias!!

34
Microcontroladores / Re: Despertar el micro por RX
« en: Viernes 5 de Diciembre de 2008, 18:20 »
Gracias Toph, tiene toda la pinta de ser eso. Uso el 16F876. Con lo del bit INT te refieres a puentear el pin RX con el RB0?

Muchas gracias y un saludo.

35
Microcontroladores / Despertar el micro por RX
« en: Viernes 5 de Diciembre de 2008, 11:37 »
Muy buenas, tengo un problema para despertar el micro cuando recibe datos por el puerto serie, si no le duermo, hago un retardo de 5 segundos, durante los cuales enciendo el otro equipo que le manda datos y lo recibe perfectamente, pero al ser un equipo que va a funcionar por baterias, tengo que dormirle, lo unico que hago es quitar el retardo y poner un sleep y esperar a que le mande los datos desde el otro equipo, pero le mando los datos y este no se despierta. ¿No se supone que sale del reposo cuando recibe una interrupcion?

Un saludo.

36
Microcontroladores / Re: Invertir Bits Pares
« en: Viernes 5 de Diciembre de 2008, 10:46 »
Hola, me parece que lo que pretendes se puede hacer con la instruccion XORWF colocando en W '10101010' para que invierta los pares, no se si es la operacion Xor o la Xnor la que invierte lo que haya.ç

Un saludo.

37
Microcontroladores / Re: Hacer una división con ASM del PIC 16F84A
« en: Viernes 5 de Diciembre de 2008, 10:43 »
Hola, ahora mismo no recuerdo lo del resto y esos entresijos, pero si te puedo decir que al igual que multiplicar por 5 es sumar la cifra 5 veces (sencillo en un micro) dividir es lo mismo pero restando. Mira por la web a ver si encuentras mas informacion.

Un saludo.

38
Microcontroladores / Re: Puerto serie RS232 sustituirlo por USB
« en: Viernes 5 de Diciembre de 2008, 10:08 »
Hola, you lo que hago es utilizar un conversor usb-rs232 de marca prolific, asi usas el puerto usb del ordenador y lo sigues conectando al puerto serie que tienes con el pic.

Un saludo.

39
Microcontroladores / Teclado matricial no funciona con interrupcion
« en: Jueves 30 de Octubre de 2008, 17:36 »
Muy buenas. Mas que el teclado lo que no funciona es el salto a la interrupcion. No se que error cometo, pero he probado muchas configuraciones y cosas raras y tampoco funciona. El tema es que lo dejo en sleep y cuando salte la interrupcion solamente me muestre algo en pantalla, porque con el teclado no hay manera y sin embargo el LCD funciona bien, pero ni con esas, la interrupcion por actividad en el puerto B no furrula, y la conexion al teclado es bastante sencilla, no se si cambiando a otras configuraciones que he visto con las resistencias pull up fuera del micro puede que funcione...
Si alguien ve algun fallo por favor que lo diga.

Gracias y un saludo.

      

      processor 16F876A

      LIST   P=16F876A   ;Se indica el modo de procesador
      
      INCLUDE   <P16f876A.inc>   ;se incluye la definicion de los
               ;registros internos

      __config 3D31
      


PDel0      EQU   0x21
PDel1      EQU   0x22
PDel2      EQU   0x23
BUFFER      EQU   0x24
INNER      EQU   0x25      ;delay variable mS
OUTER      EQU   0x26      ;delay variable mS
Digito      EQU   0x27

ASCII_H      EQU   0x31
ASCII_M      EQU   0x32
ASCII_L      EQU   0x33

HEXADECIMAL   EQU   0x34


;*************** PARA EL TECLADO ***************************
;


;*********************************************************


;----------------------------------------------------------------------------


      org    0x00      ;vector de inicio
      goto    INICIO


      org    0x05      ;despues del vector de interrupcion
      goto   ServicioInterrupcion


      

;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
;----------------------------------------------------------------------------

INICIO   
      bcf   STATUS,RP0   ;banco 0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-
      bcf   STATUS,RP1
      clrf   PORTA      ;Limpia latches puerto
      clrf   PORTB      ;Limpia latches puerto
      clrf   PORTC      ;Limpia latches puerto
      
      bsf   STATUS,RP0   ;banco 1 _-_-_-_-_-_-_-_-_-_-_-_-_-_-
         
      movlw   0x06      ;Puerto A en modo digital
      movwf   ADCON1
      clrf   TRISA      ;PortA como entrada
      clrf   TRISB      ;PortB como salida
      clrf   TRISC      ;PortC como salida
      
      bcf   STATUS,RP0   ;banco 0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-
      
      clrf   PORTA      ;Limpia latches puerto
      clrf   PORTB      ;Limpia latches puerto
      clrf   PORTC      ;Limpia latches puerto

      


;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   call    LCD_INI
   movlw   b'00000001'     ;Borrar LCD y Home    
    call    LCD_REG                                    
    movlw   b'00000110'     ;                          
    call    LCD_REG                                    
    movlw   b'00001100'     ;LCD On, cursor Off,Parpadeo Off
    movlw   0x80            ;Direccion caracter
    call    LCD_REG  
      movlw   '0'
      call    LCD_DATOS       ;Visualiza caracter
   
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

;###############################################################################
;   PROBANDO TECLADO

   call    Teclado_Inicializa

   movlw   b'11001000'         ; Habilita la interrupción RBI, perifericos y la general.
   movwf   INTCON

   sleep

;   movlw   b'00000000'         ; deshabilita las interrupciónes del teclado
;   movwf   INTCON






aux2   call    PDelay      ;retardo de 2 segundos
      goto   aux2
   




;###########################################################################
;###########################################################################
del_1ms      movlw   d'199'      ;delay 1mS
      movwf   INNER
in_lp      nop
      nop
      decfsz   INNER,F
      goto   in_lp
      return

delay      movwf   OUTER      ;vueltas de 1mS
out_lp      call   del_1ms
      decfsz   OUTER,F
      goto   out_lp
      return
      


;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
   
Hex_Ascii   ;cargar en W el dato hex.
;
      ;MOVLW   .254
      MOVWF   HEXADECIMAL
            clrf    ASCII_H          ;Para BCD D'0'
            clrf    ASCII_M       ;Para BCD D'0'
            clrf    ASCII_L         ;Para BCD D'0'
;
Centenas
;
            movlw     D'100'          ;D'100' --> W
            subwf   HEXADECIMAL,W   ;HEXADECIMAL - D'100' --> W
            btfss   STATUS,C        ;¿ HEXADECIMAL es menor que D'100' ?
            goto    Decenas         ;Si
            movwf   HEXADECIMAL     ;Salva el resto
            incf    ASCII_H,F       ;Incrementa el contador de centenas BCD
            goto    Centenas        ;Vuelve por otros D'100'
;
Decenas
;
            movlw   D'10'             ;D'10' --> W
            subwf   HEXADECIMAL,W   ;HEXADECIMAL - D'10' --> W
            btfss   STATUS,C        ;¿ HEXADECIMAL es menor que D'10' ?
            goto    Unidades        ;Si
            movwf   HEXADECIMAL     ;Salva el resto
            incf    ASCII_M,F       ;Incrementa el contador de decenas BCD
            goto    Decenas         ;Vuelve por otros D'10'
;
Unidades
;
            movf    HEXADECIMAL,W   ;El resto pertenece
            movwf   ASCII_L         ;a las unidades BCD
            clrf    HEXADECIMAL     ;Pone a cero el registro HEXADECIMAL
;
Bcd_A_Ascii
;
            movlw    H'30'           ;H'30' --> W
            iorwf   ASCII_L,F       ;Convierte de BCD a ASCII
            iorwf   ASCII_M,F       ;Convierte de BCD a ASCII
;
            movf    ASCII_H,F       ;ASCII_H --> F
            btfsc   STATUS,Z                ;? ASCII_H es D'00' ?
            goto    Espacio         ;Si
            movlw   H'30'           ;H'30' --> W
            iorwf   ASCII_H,F       ;Convierte de BCD a ASCII
            return                  ;Retorna
;
Espacio
;
            movlw   '0'            ;A' ' --> W
            movwf   ASCII_H     ;A' ' --> ASCII_H
            ;movwf   ASCII_M     ;A' ' --> ASCII_H
            ;movwf   ASCII_L     ;A' ' --> ASCII_H
            return                  ;Retorna
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()









;###########################################################################
;===========================================================================
;--------------------- RUTINAS LCD 2x16 ------------------------------------
;===========================================================================
;###########################################################################

LCD_E           BSF     PORTA,2         ;Activa señal E
                NOP
                NOP
                NOP                     ;Espera 1uS
                BCF     PORTA,2         ;Desactiva señal E
                RETURN        
                             
LCD_BUSY        BSF     PORTA,1         ;Pone el LCD en modo lectura
                BSF     STATUS,RP0      ;Selecciona el Banco 1
                MOVLW   0xFF  
                MOVWF   TRISB           ;Puerta B act£a de entrada
                BCF     STATUS,RP0      ;Selecciona el Banco 0
                BSF     PORTA,2         ;Activa el LCD (Señal E)
                NOP          
L_BUSY          BTFSC   PORTB,7         ;Chequea el bit BUSY
                GOTO    L_BUSY          ;Est  a "1" (Ocupado)
                BCF     PORTA,2         ;Desactiva el LCD (Se¤al E)
                BSF     STATUS,RP0      ;Selecciona el Banco 1
                CLRF    TRISB           ;Puerta B actua como salida
                BCF     STATUS,RP0      ;Selecciona el Banco 0
                BCF     PORTA,1         ;Pone el LCD en modo escritura
                RETURN        
                             
LCD_REG         BCF     PORTA,0         ;Desactiva RS (Modo instruccion)
                MOVWF   PORTB           ;Saca el codigo de instruccion
                CALL    LCD_BUSY        ;Espera a que se libere el LCD
                GOTO    LCD_E           ;Genera pulso en señal E
                             
LCD_DATOS       BCF     PORTA,0         ;Desactiva RS (Modo instrucci¢n)
                MOVWF   PORTB           ;Valor ASCII a sacar por PORTB
                CALL    LCD_BUSY        ;Espera a que se libere el LCD
                BSF     PORTA,0         ;Activa RS (Modo dato)  
                GOTO    LCD_E           ;Genera pulso en señal E
                             
LCD_INI         MOVLW   b'00111000'
                CALL    LCD_REG         ;Codigo de instruccion
                CALL    DELAY_5MS       ;Temporiza 5 mS.
                MOVLW   b'00111000'
                CALL    LCD_REG         ;Codigo de instruccion
                CALL    DELAY_5MS       ;Temporiza 5 mS.
                MOVLW   b'00111000'
                CALL    LCD_REG         ;Codigo de instruccion
                CALL    DELAY_5MS       ;Temporiza 5 mS.
                RETURN            
                             
;****************************************************************************                                                              
;DELAY_5MS genera una temporizacion de 5mS necesario para la secuencia de
;inicio del LCD                        
                                       
DELAY_5MS     movlw   .6           ; 1 set number of repetitions (B)
           movwf   PDel0        ; 1 |
PLoop1     movlw   .207         ; 1 set number of repetitions (A)
              movwf   PDel1        ; 1 |
PLoop2       nop                 ; 1 clear watchdog
           decfsz  PDel1, 1     ; 1 + (1) is the time over? (A)
           goto    PLoop2       ; 2 no, loop
           decfsz  PDel0,  1    ; 1 + (1) is the time over? (B)
           goto    PLoop1       ; 2 no, loop
PDelL1     goto   PDelL2         ; 2 cycles delay
PDelL2     nop                 ; 1 cycle delay
           return                 ; 2+2 Done
;###########################################################################



;-------------------------------------------------------------
; Description: Waits 2000000 cycles     2 segundos
;-------------------------------------------------------------
PDelay     movlw   .167      ; 1 set number of repetitions (C)
           movwf   PDel0     ; 1 |
PLoop0s     movlw   .41       ; 1 set number of repetitions (B)
           movwf   PDel1     ; 1 |
PLoop1s     movlw   .72       ; 1 set number of repetitions (A)
           movwf   PDel2     ; 1 |
PLoop2s     nop              ; 1 clear watchdog
           decfsz  PDel2, 1  ; 1 + (1) is the time over? (A)
           goto    PLoop2s    ; 2 no, loop
           decfsz  PDel1,  1 ; 1 + (1) is the time over? (B)
           goto    PLoop1s    ; 2 no, loop
           decfsz  PDel0,  1 ; 1 + (1) is the time over? (C)
           goto    PLoop0s    ; 2 no, loop
PDelL1s     goto    PDelL2s         ; 2 cycles delay
PDelL2s     nop              ; 1 cycle delay
           return              ; 2+2 Done
;-------------------------------------------------------------














ServicioInterrupcion

   call    LCD_INI
   movlw   b'00000001'     ;Borrar LCD y Home    
    call    LCD_REG                                    
    movlw   b'00000110'     ;                          
    call    LCD_REG                                    
    movlw   b'00001100'     ;LCD On, cursor Off,Parpadeo Off
    movlw   0x81            ;Direccion caracter
    call    LCD_REG  
      movlw   '0'
      call    LCD_DATOS       ;Visualiza caracter
   retfie



      END

40
Microcontroladores / Re: Error al compilar en MPLAB
« en: Lunes 27 de Octubre de 2008, 09:53 »
Encontre el problema, por si algun dia le pasa a alguien: Un fichero ASM que funcionaba perfectamente "programa.asm" lo guardaba con otro nombre"programador 1.0.asm" y ya deja de funcionar, pero si lo guardo como "programador 1_0.asm" funciona, luego no se pueden meter ciertos caracteres en el nombre, en este caso fue el punto de la version.

Un saludo.

41
Microcontroladores / Error al compilar en MPLAB
« en: Miércoles 22 de Octubre de 2008, 16:41 »
Muy buenas. Hace unos meses que no tocaba el mplab, ahora resulta que hago un programilla nuevo y cuando compilo me sale un mensaje de error:

DOS File: File not found

Acepto y en la ventana del mplab "Build" me aparece lo siguiente:

Executing: "C:Archivos de programaMicrochipMPASM SuiteMPAsmWin.exe" /q /p16F876 "programador 1.0.asm" /l"programador 1.0.lst" /e"programador 1.0.err" /o"programador 1.0.o"
Skipping link step.  The project contains no linker script.
BUILD FAILED: Wed Oct 22 16:38:06 2008

Con otros programas me funciona perfectamente, y comparando el programa con los que funcionan bien no encuentro ninguna diferencia.
Si alguien puede echarme un cable se lo agradecere un moton!!!

Gracias y un saludo.

42
Microcontroladores / Re: Timer 1 en Sleep Mode ; Comandos AT desde PIC
« en: Martes 16 de Septiembre de 2008, 22:06 »
Hola. Yo estoy empenzando mi proyecto basado en dispositivos zigbee y no tengo ni idea de por donde empezar, la documentacion que encuentro es siempre la misma, es como si todo el mundo colgase el mismo documento. ¿Puedes echarme un cable?

Muchas gracias!!

43
Microcontroladores / Re: Gestion De Interrupciones
« en: Miércoles 21 de Noviembre de 2007, 21:05 »
Hola. Perdon por la explicación, no he detallado del todo. El problema me surge en la simulación, no he llegado a probar el circuito.
Gracias por la respuesta de todas formas y un saludo.

44
Microcontroladores / Gestion De Interrupciones
« en: Martes 20 de Noviembre de 2007, 23:59 »
Muy buenas. Tengo un problema al tener habilitadas varias interrupciones a la vez, concretamente de los timers y INT0 y las RB. Me ocurre, que cuando esta atendiendo a la interrupcion del timer0 y salta la del timer2, no se activa el bit de señalización, asi que cuando sale de la rutina de atencion que estaba atendiendo, no entra a la del timer2 (lo uso de cronometro, asi que es esencial que entre). Parecido ocurre con las RB4-7, pero al reves, si salta la irq, hace bien la rutina, pero no se borra el bit de aviso, ni con "bcf   INTCON,RBIF" ni "bcf   INTCON,0" y entra en un bucle sin salida ya que nunca se borra.
¿Alguien sabe que ocurre?
Gracias de antemano y un saludo.

45
Microcontroladores / Re: Registro "rcon" Del 16f876
« en: Sábado 17 de Noviembre de 2007, 20:30 »
Solucionado!! Hay que activar el bit PEIE del registro INTCON a la vez que se habilita el GIE, ya que este bit permite las interrupciones de perifericos y el timer1, timer2 y otros recursos son considerados como perifericos.
Saludos y gracias de nuevo!! :D

46
Microcontroladores / Re: Registro "rcon" Del 16f876
« en: Sábado 10 de Noviembre de 2007, 13:50 »
Ya he cambiado al tmr0 y ahora hace bien lo de los 2 timers en la simulacion, tal y como esperaba, aunque no he llegado a encontrar lo de la interrupcion del tmr1, solo falta montarlo a ver que pasa  :D
Muchas gracias y un saludo.

47
Microcontroladores / Re: Registro "rcon" Del 16f876
« en: Viernes 9 de Noviembre de 2007, 14:50 »
Muchas gracias por la respuesta, ahora ya parece que sabemos porque no funciona, pero tengo un lio enorme, porque tanto en el datasheet que tengo  (16F87XA)como en el libro que tengo, dice que provocan interrupción, aunque lo que tambien es cierto, que  el mio es 16F876 sin A (el viejo), es posible que esa sea la causa del error, no se. Esta tarde me pasare a consultarlo por la biblioteca de la universidad, tienen unos cuantos libros de PIC's.
En cualquier caso no hay problema con la interrupción, como no es crítico y tengo que usar tambien el timer 0, comprobare el flag del timer 1 con la rutina de atencion del timer 0, y aproximadamente 1 de cada 10 veces que salte la irq del timer 0 me hará lo que queria hacer con el timer 1 y asunto solucionado.

Muchas gracias y un saludo!!

48
Microcontroladores / Re: Registro "rcon" Del 16f876
« en: Jueves 8 de Noviembre de 2007, 14:14 »
Muy buenas de nuevo. Pues la verdad es que sigo sin entender lo que me quieres decir, el registro PIE1 esta en el banco 1, y yo habilito la interrupción del  en el banco uno:

                bsf   STATUS,RP0   ;Banco 1
      bcf   STATUS,RP1

      movlw b'00000001'   ; habilita solo irq del timer1
      movwf   PIE1

El registro INTCON esta en todos los bancos, asi que habilito interrupciones sin mas:

                movlw b'10000000'   ; habilita bit IE
      movwf   INTCON

Para comenzar la cuenta hemos de pasar al banco 0 y programar el T1CON:

                bcf   STATUS,RP0   ; banco 0
      movlw   b'11111001'   ; encendemos timer
      movwf   T1CON

Finalmente, el registro PIR1 si que esta en el banco 0, pero solamente nos indica la causa de la interrupción, no veo que haya que programar nada en el hasta que salte a la rutina general de atencion a la interrupción, pero precisamente el problema que tengo es que no salta y por tanto el registro PIR1 no tengo la oportunidad de usarlo.
¿Quizas esta mal el orden de programar los registros?

Saludos y gracias de nuevo.

49
Microcontroladores / Re: Registro "rcon" Del 16f876
« en: Miércoles 7 de Noviembre de 2007, 14:12 »
Hola Alternative. Gracias por contestar. No se a que te refieres exactamente, en el datasheet viene el PIR1 en el banco 0 y el PIE1 en el banco 1, yo programo el PIE1 con el banco 1 seleccionado y en la simulación lo hace bien, el PIR1 no tengo que programarlo, creo que sirve para implementar la rutina general de atencion a la interrupcion cuando esta salta, pero no salta al vector de interrupción, asi que no entiendo bien lo que ocurre.

Saludos y gracias!!

50
Microcontroladores / Re: Lcd
« en: Martes 6 de Noviembre de 2007, 14:49 »
Hombre, para una pregunta que se responder....  :D

Saludos.

Páginas: 1 [2] 3 4 ... 6