Autor Tema: Que levanten la mano los que tienen osciloscopio  (Leído 158493 veces)

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

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #75 en: 13 de Abril de 2004, 07:58:00 »
Hola chicos,

Albertus, ya casi tengo listo el ASM; lo estoy depurando pero de momento parece que va genial. Le he quitado algunas mierdecillas que incluye a huevo el compilador del CCS, y que no valen pa naa..

Me falta confirmar la configuración de entrada/salida; creo que habéis montado este circuito, no?
http://users.skynet.be/bk317494/007/007.htm

Y entonces es el puerto B el que ataca al display, verdad? me podéis confirmar los pines? ¿qué son?
#bit nok_sclk  = PORTB.3      // RB3
#bit nok_sda   = PORTB.4      // RB4
#bit nok_dc    = PORTB.5      // RB5
#bit nok_cs    = PORTB.6      // RB6
#bit nok_res   = PORTB.7      // RB7

Anda dime aarrrrrrrrrrgo paaaaayooooooooooo

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #76 en: 13 de Abril de 2004, 10:29:00 »
Vale!!!!

Oye, nenes, se me está ocurriendo que podíamos usar alguna zona del display para mostrar la frecuencia de la onda en Hz, por ejemplo en la parte superior izquierda, que pusiera a modo fijo "FREC=      HZ" y rellenar el dato con el numerito concreto que resultara a la salida del conversor. ¿Cómo lo veis? podríamos guardar en la EPPROM ese string, dibujarlo en el display en una posición fija y luego escribir el valor de la frecuencia en esa posición fíja + 4 (4 suma las posiciones que ocupa el string "FREC="

Bueno, ya me diréis.
Besotes

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #77 en: 13 de Abril de 2004, 11:18:00 »
Si , es buena idea , yo lo estoy intentando , solo me falta calcular los valores del timer etc .(casina).

Codigo:

#int_global
isr() {

   #asm

    MOVWF W_TEMP              ; Guarda W
    MOVFF STATUS, STATUS_TEMP ; Guarda STATUS


    clrf INTCON

     btfss PIR1,0   ; TMR1 desbordado ,
     goto sige
     incf  (&freq+2),f   ; la feq se encuentra en TMR1L,TMR1H,freq+2 en este momento
     bcf PIR1,0
   sige:




    decfsz  counter1,F
    goto sal1
          ; Ajuste fino ************ chapuzilla ********************

    MOVLW  Counter_1
    MOVWF  counter1
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop

    nop
    nop
    nop
    nop
       ;*********************************************



    decfsz  counter,F
    goto sal1
  ya:                  ; ya pasó un segundo
    bcf T1CON,0  ; para el timer1 que cuenta los pulsos y sale sin activar la interrupcion
    goto sal0

  sal1:

    MOVLW 250 ;254
    MOVWF TMR0L

    bsf INTCON,5
    bsf INTCON,7

  sal0:

    MOVF  W_TEMP, W           ; Restaura W
    MOVFF STATUS_TEMP,STATUS  ; Restaura STATUS
    retfie


   #endasm

}




ya irá saliendo

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #78 en: 14 de Abril de 2004, 07:52:00 »
Sisco, ¿pero no ibas a calcular los tiempos usando el desbordamiento del TMR0? eso te entendí ayer, pero por lo que veo en este código estás usando el otro registro, el PIR1, para comtrolar la interrupción por desborbamiento del TMR1, ¿no?

Si usas el TMR0, tendrías que hacer una rutina de interrupción, por ejemplo:

Configuras OPTION, por ejemplo 0000 0110 en binario, donde
 OPTION.7 = 0 Resistencias de polarización deshabilitadas
 OPTION.6 = 0 Interrupción externa por flanco bajada deshabilitada
 OPTION.5 = 0 Fuente de reloj interna
 OPTION.4 = 0 Flanco de señal externa
 OPTION.3 = 0 Divisor asignado al TMR0
 OPTION.2 = 1 OPTION.1= 1 OPTION.0= 0 División por 128
 
Vale, entonces ten en cuenta que el tiempo que tarda en desbordarse el TIMER0 será:

Tiempo = S * valor predivisor * ciclo instrucción

Si el cristal es de 4MH, verdad?, en ese caso el ciclo de instrucción dura 1 microsegundo.

S es el número con que cargas inicialmente el registro TMR0, el "Start". Normalmente se carga con el valor 78, porque así
tienes S= 256-78=178.

Entonces
TIEMPO = 178 * 128 * 1 microsegundo = casi casi 10 milisegundos

Entonces, se produce una interrupción CADA 10 MILISEGUNDOS, y no tienes más que poner un contador que incremente cada vez que se produce la interrupción, y contar... si el contador llega a 100, es que ha pasado 1 segundo justito.

Entonces, primero configuras el PIC
***************************
..... bla bla bla... los puertos... etc
CLRF cuenta ; variable "cuenta" = 0 inicialmente
MOVLW 0xB2 ; Carga el timer con 78 decimal (0xB2)
MOVWF tmr0
MOVLW 0xA0 ; 1010 0000 en binario, máscara de interrup.
MOVWF intcon; Habilita GIE y T0IE (global e interrupción del timer0)


Segundo la rutina que lleva las cuentas
****************** Mira si hay 100 cuentas de 10 ms
contador
MOVF cuenta,w ; Se incrementa cada 10 ms al producirse la interr.
XORLW 0x64 ; Ha llegado a  1s si llevamos 100 (0x64) cuentas
BTFSS estado,Z ; Si es así, salta para hacer algo.....
GOTO contador ; Si no es así, sigue contando
CLRF cuenta ; Iniciar el nuevo ciclo
.... hacer algo..... ha llegado al segundo...
GOTO Bucle

Y ya, lo último, la rutina de interrupción
*******************************
INTER
BTFSS intcon,t0if ; Salta si la interrupción es por el TMR0
RETFIE ; Interrupción "rara rara rara", regresar
INCF cuenta,f ; El contador es incrementado cada 10 ms, sip
MOVLW 0xB2 ; Recarga el valor inicial del TMR0, recuerda 78
MOVWF tmr0
BCF intcon,t0if ; Borra el flag de interrupción
BSF INTCON,t0ie ; Habilita la interrupción otra vez
RETFIE

¿Lo ves?... espero que haya sido clara... Dime, anda, que si no le puedo dar una vuelta a TMR1, si quieres utilizar ese periférico, valeeeeeeeeeeeeeeeee?

besotes!

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #79 en: 14 de Abril de 2004, 10:00:00 »
Si perdón Elena , saves no lo expliqué del todo bien .

El sistema seria este :
Transcurrido un segundo coger el valor que tiene el Timer1 , configurado como  "External clock from pin RC0"  para saver la frecuencia .

Como en los 18Fxxx este timer1 es de 16bits solo podriamos medir una frec de 65.535 , entonces utilizo un registro mas y lo incremento cuando este timmer se desborda , de esta manera podemos medir hasta  mas de 16.000.000 (suficiente para esta entrada del pic .

El timmer0 es el que nos indicará cuando ha transcurrido el segundo y es el que no consigo ajustar.

#byte  Counter_1= 36  
#byte  Counter_ = 8

Codigo:

////////////////////////////////////////////////////////////////////////////////
// Resetea Los Timers para la frecuencia
////////////////////////////////////////////////////////////////////////////////
void ResetTimers(){

   /* Timer1 cuenta los pulsos por RC0 */

   ADCON0=0b10000000;
   ADCON1=0b01000000;
   TMR1H=0;
   TMR1L=0;
   INTCON=0;

   /* Timer0 Reloj 1 segundo */

   counter = Counter_;    ?????????
   counter1= Counter_1;  ?????????
   T0CON= 0b11000111;  ????????
   TMR0L=254                     ;  ???????
   TMR0h=255;

   INTCON=0b10100000;  // activa interrupcion para el tiempo
   T1CON=0b00000011;   // a contar los pulsos de RC0


}



la interrupcion es la de arriba.
y esí la imprimo

Codigo:

 if ( counter == 0){  // A pasado 1 segundo calcula freq e imprime

      freq=freq+((tmr1h*256)+tmr1l);   // calcula la freq y la imprime
      { nokia_gotoxy(0,5);   printf(nokia_printchar, "          ";}
      { nokia_gotoxy(0,5);   printf(nokia_printchar, "%LU Hz
",freq);}

      freq=0;

      ResetTimers();

       }



De hecho funciona vastante exacto pero seguro que se puede enfilar mas .
Ahora estudio lo que  has puesto .






Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #80 en: 14 de Abril de 2004, 10:03:00 »
PD .. el osc. del pic es de 40Mhz .

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #81 en: 14 de Abril de 2004, 10:20:00 »
Ah vale, ¿estás utilizando el oscilador interno entonces?

Voy a recalcular los tiempos y te los paso.
De todas formas, eres demasiado perfeccionista.... tanto afinar tanto afinar, ¡pero si debe de clavar el segundo o a punto, seguro!
Te envío los cálculos para ajustar el TMR0 al segundo, vale. Podría intentar hacerlo en C, para varíar.. Bueno, hasta ahora, bonito.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #82 en: 14 de Abril de 2004, 12:56:00 »
Perdonazme que ande un poco perdido estos días. Estoy muy liado!!
Mira paso una dirección que encontré por si se puede sacar algo de ahí:
http://www.picant.com/c2c/examples.html
Me refiero al ejemplo que viene del frecuencímetro. Es para otro compilador, pero por lo que ví parece que el código que usa es igual al del CCS.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #83 en: 14 de Abril de 2004, 13:05:00 »
je,je ya tengo la pantallita rulando perfectamente.....

hace algun tiempo vi un programilla en vb para pasar las imagenes a la tabla del micro, pero ahora que lo quiero ojear no se donde anda... sabeis algo??????????????

ahora estoy como cuca...sin tiempo ninguno
y ademas me llego el modulo con el rtl8019 que pedi en modtronix y no tengo tiempo para estrujarme el craneo

que rabia

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #84 en: 14 de Abril de 2004, 14:31:00 »
Yo estoy usando uno que se llama bmp2asm que va perfecto. No te restringe el tamaño de la imagen. Te convierte según le metas. Dime como subir en tu nueva ftp por http y lo dejo allí. O te lo envío por privado y tu lo cuelgas??
Saludos desde Huelva (ESPAÑA)

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #85 en: 15 de Abril de 2004, 14:36:00 »
mejor por correo porque por http no se puede escribir (por seguridad)

oye estas usando el 18f452 ?? porque ya sabes que la memoria es lineal y no hace falta partir la tabla en dos...tengo entre manos un tingladillo que ya os enseñare que usa tablas de 500 bytes en ram y en la flash.

saludos

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #86 en: 15 de Abril de 2004, 14:39:00 »
Pues estamos usando el hermano pequeño, el 18F252 en el que no se si se podrá hacer esto.
y digo yo, como se direcciona eso, porque con un byte no se puede no??
Y esto lo soporta el CCS??

Ahora te envío eso...
Saludos desde Huelva (ESPAÑA)

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #87 en: 15 de Abril de 2004, 16:15:00 »
pues con ese tambien se puede tiene memoria lineal
prueba y veras...

int8 tabla[500];

para acceder a cualquier elemento solo

tabla[400] = 0x10;

recuerda que trabajar indexando la tabla eslo mismo que trabajat con punteros.

esta es la gran ventaja de estos micros y a freir esparragos los jodidos cambios de pagina.

ahhh, gracias por el programilla. por algun lado debo tener uno que estaba muy chulo y te devuelve ya la tabla para CCS.

saludos

Desconectado sandra_rcb2000

  • PIC12
  • **
  • Mensajes: 92
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #88 en: 17 de Abril de 2004, 11:08:00 »
Hola yo levanto la mano no tengo osciloscopio de momento estoy atorada en otros asuntos que  me impiden comenzar este proyecto tan interesante pero para comenzar a echarle mano me gustaría saber si me sirve la pantallita de un móvil motorola c333 les agradeceré sus comentarios
Besitos

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #89 en: 20 de Abril de 2004, 11:47:00 »
 Mis manazas no consiguen conectar un ADS830 -> SSOP

El pic a 40Mhz solo consige muestrear hasta 10 khz con el Max153 , aunque a la perfección .

Con este chip se podrian coger muestras a 1Mhz , el resultado seria una perfecta sinusoide de 200 Khz .

Boy haver si hago un pepinillo con una ram externa de 32k. y un contador .