Autor Tema: pregunta de novato  (Leído 4766 veces)

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

Desconectado pizz

  • PIC10
  • *
  • Mensajes: 15
Re: pregunta de novato
« Respuesta #15 en: 27 de Septiembre de 2011, 03:52:45 »
Hola, perdón por tardar tanto en contestar pero es que he estado fuera y no tenía acceso a internet.
La configuración para el oscilador siempre lo he tenido en XT.
Probaré con otro micro a ver si pudiera ser lo que comentas del pin15 por si acaso estuviera estropeado.

He podido montar una placa aparte con el oscilador nuevo que compré y funciona perfecto. No es lo mismo que con el cristal y los dos condensadores porque hay que llevarle alimentación y tal, pero bueno, al menos funciona para lo que quiero que es para hacer un letrero de estos que escriben en el aire (POV).
Por cierto, que he intentado escribir en el aire la palabra "HOLA" y no soy capaz de leer nada. Solamente veo rayas y puntos.
La idea la he sacado de esta página:       http://www.neoteo.com/pov-escribe-con-luz-en-el-aire
He puesto un delay de 2 ms como indica ahí pero no se llega a entender nada. Voy a seguir probando con distintos delays a ver qué sale.

Muchas gracias por contestar y ya os diré si funciona con otro micro lo del cristal.
Saludos.

Desconectado pizz

  • PIC10
  • *
  • Mensajes: 15
Re: pregunta de novato
« Respuesta #16 en: 02 de Octubre de 2011, 20:20:53 »
Hola de nuevo.
Pues en cuanto a lo del cristal, la verdad es que no hay nada nuevo. He probado con otro pic y tampoco funciona, pero como os dije, al haber comprado  un oscilador y funcionar bien con éste, de momento no le doy mucha importancia puesto que me corre más prisa poder terminar un pequeño proyecto que tengo entre manos.
Precisamente para ese pequeño proyecto quería pedirles otra vez su ayuda.
Les comenté que quería hacer un letrero tipo POV. Pues después de unos cuantos fallos he conseguido avanzar hasta un punto en el que no consigo salir.
La idea es que cada vez que yo gire la tira de led aparezca el mismo mensaje unas tres veces, y al contar esas tres veces, aparezca otro mensaje.
Pues bien, como es muy cansado hacer pruebas cada vez con el circuito haciéndolo girar porque he estado depurando muchas muchas veces, decicí hacer pruebas en el entrenador de pic's que les comenté que tenía.
Lo que hago es que de la tira de 8 led, primero hago que corran los 4 de la derecha y cuando hayan corrido 3 veces, entonces que corran los de la izquierda otras 3 veces, y luego vuelta a empezar o a otro tipo de secuendia.
En principio la cosa no es muy complicada porque no lo he hecho con rrf ni rlf ni nada de eso. De hecho, la secuencia de la derecha funciona perfecta. El problema es con la secuencia de la izquiera que nunca sale de ese bucle y he estado muchas horas intentando averiguar qué pasa pero no consigo salir de ahí.
Quería ponerles el código por si me pudieran echar una mano.
No sé por qué  "CONTA2" nunca llega a cero y así volver al principio del todo a poner los dos registros a cero nuevamente.
Gracias y saludos.



;   prueva para pov 4 primeros led y despues los otros 4 para intentar hacer ciclo de conteo.
;*****Establecimiento constantes ****
STATUS      equ       03h             
TRISB       equ       86h             
PORTB       equ       06h             
PDel0      equ     0Ch             
PDel1      equ     0Fh
PDel2      equ     0Dh   
CONTA1      equ        0Eh          
CONTA2   equ        0Fh
;
;****Configuración del Puerto****
            bsf       STATUS,5         ; Cambiamos al banco 1Switch to Bank 1
            movlw     00h              ; Ponemos los pines del puerto B ...
            movwf     TRISB            ; ...como salidas.
            bcf       STATUS,5         ; Volvemos al Banco 0.

   


Inicio1
   clrf   CONTA1
   clrf   CONTA2
   movlw   d'4'
   movwf   CONTA1
   movlw   d'4'
   movwf   CONTA2

Decrementa1
         decfsz   CONTA1,1
         goto   Inicio2
         goto   Decrementa2
Inicio2 

   movlw      b'00000001'
   movwf      PORTB
   call       PDelay   

   movlw      b'00000010'
   movwf      PORTB
   call       PDelay   

   movlw      b'00000100'
   movwf      PORTB
   call       PDelay   
   
   movlw      b'00001000'
   movwf      PORTB
   call       PDelay   
   
   movlw      b'00000000'
   movwf      PORTB
   call       PDelay
   goto      Decrementa1
   

Decrementa2
         decfsz   CONTA2,1
         goto   Inicio3
         goto   Inicio1

Inicio3
   movlw      b'10000000'
   movwf      PORTB
   call       PDelay   

   movlw      b'01000000'
   movwf      PORTB
   call       PDelay      

   movlw      b'00100000'
   movwf      PORTB
   call       PDelay   

   movlw      b'00010000'
   movwf      PORTB
   call       PDelay
   goto      Decrementa2
   

   
PDelay  movlw     .14       ; 1 set number of repetitions (C)
        movwf     PDel0     ; 1 |
PLoop0  movlw     .72       ; 1 set number of repetitions (B)
        movwf     PDel1     ; 1 |
PLoop1  movlw     .247      ; 1 set number of repetitions (A)
        movwf     PDel2     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        decfsz    PDel2, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel1,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (C)
        goto      PLoop0    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done




 end