Autor Tema: Como usar el tmr0 en PBP  (Leído 8714 veces)

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

Desconectado risanti13

  • PIC12
  • **
  • Mensajes: 66
Como usar el tmr0 en PBP
« en: 04 de Febrero de 2004, 09:37:00 »
Quiero usar el Tm0 Como Contador De Eventos En PBp ,
lo he realizado introduciondo lineas en ensamblador para activar la cuenta en el tocki (pic 16f84) con un prescalaster  256 .
mi pregunta es que si existe un comando en Pbp para hacer esto.

gracias

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: Como usar el tmr0 en PBP
« Respuesta #1 en: 04 de Febrero de 2004, 14:17:00 »
Hola risanti13,
yo a la fecha lo sigo haciendo en ensamblador, no e visto ningun comando en pb pro o plus que realize una funcion automatica de lo que quieres. Pero si alguien la conose no tardara en contestarte y asi seremos dos con una duda menos de estos bichos.
Saludos

Desconectado risanti13

  • PIC12
  • **
  • Mensajes: 66
RE: Como usar el tmr0 en PBP
« Respuesta #2 en: 06 de Febrero de 2004, 11:57:00 »
entonces lo mas practico sera  introducir  un para de comandos en ensamblador para  configurar el tmr0 e en PBP, y alamacenar el resutaldo en una variable.. eso creo

si me equivo me avisan ......

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: Como usar el tmr0 en PBP
« Respuesta #3 en: 06 de Febrero de 2004, 15:33:00 »
Hola risanti13,
pues yo solo  uso ensamblador para esos casos, es mas practico, la verdad como tew digo, no se si haya una forma, pero prefiero hacerlo a la tradicional con ASM.

Saludos panas

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Como usar el tmr0 en PBP
« Respuesta #4 en: 06 de Febrero de 2004, 16:59:00 »
Hola:
Disculpame pero me voy a referir al PIC BASIC PRO en el manual esta como usar el contador .Si te estabas refiriendo al PBPlus disculpa haberme entrometido...El manual hace una brevisima referencia en pagina 167,dice que si no usas las instrucciones nap y sleep el trmo puede ser usado Como? sabe dios o algun colega.Bromas aparte lo he visto en algunos de los manuales de aplicacion en el foro fijate por favor creo que si es posible.
Saludos
khasistos

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Como usar el tmr0 en PBP
« Respuesta #5 en: 07 de Febrero de 2004, 14:14:00 »
Hola:
yo sabia que lo habia visto ,te lo busque y aqui esta,te lo mando a tu correo pues si no no entra la respuesta
Espero haber despejado tus dudas
Saludos
khasistos

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Como usar el tmr0 en PBP
« Respuesta #6 en: 07 de Febrero de 2004, 20:05:00 »
Hola, vi eso que mencionas, pero dice que si no usas esas instrucciones, puedes utilizar el tmr0, pero no dice que se puede hacer en PBP, o no?............
Haver que dicen

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: Como usar el tmr0 en PBP
« Respuesta #7 en: 07 de Febrero de 2004, 20:14:00 »
Que onda ejdm,
a lo que se refiere Khasistos es a dar de alta REGISTROS! lo cual es diferente a tener un COMANDO especifico que lo haga automaticamnte, mira por ejemplo si quieres usar la USART de un chip,  lo puedes hacer de dos formas con COMANDO en PBP o dando de alta los registro individuales, que es lo que le comentaba a Risanti13.
De la primer forma tienes que dar de alta los REGISTROS:
TXSTA,RCSTA,SPBRG,PIE1,PIR1, etc..como?
declarandolos asi:
TXSTA=%01010101, y asi sucesivamente
igual para el TIMER:
OPTION_REG=$55 "para un preescaler a 16,xxx milisegundos, con tiemr, etc
De la segunda forma aunque parecida pero no iGUAL es la de COMANDO (no confundir REGISTROS, con COMANDOS especificos)
seria:
usando el comando HSERIN .
Es por eso que yo opine que no habia COMANDOS especificos en un compilador, a menos que se refiera a los que se le habian dicho a risanti13, osease los REGISTROS.
Al que se refiere Khasistos es al REGISTRO TMR0  lo cual lo puedes volcar como variable o definir como constante asi:
Dim TIMER AS TMR0L.BYTE (aqui declaramos o le pusimos un alias al TIMER0 la L indica que es el Byte LOW (el primer byte del word, esto lo hacemos por si quieres usar un valor grande a la hora de igualarlo)

TIMER= 12345 z--- aplica este valor al timer previamente definido, o de otra forma se puede usar, esta no es la uncia!!
Hay otros REGISTROS como el PRODL (QUE GUARDA EL low BYTE DE LA MULTIPLICACION POR HARDWARE DE 8*8, SI FUERA PRODH SERIA EL HIGH BYTE)
En fin, la cantidad de REGISTROS depende desde luego del Micro que usemos, como si fuera ASM pero en luegar de moverlos con MOVWF los igualas directamente con el valor que necesitas en el registros, e ahi la diferencia entre REGISTRO (se necestita saber del micro DS y asm) y un COMANDO
Pero insisto un solo COMANDO  que este hecho especificamente para contar los eventos del tocki usando el tmr y con preescaler, repito por segunda vez, no que yo sepa, y si alguein sabe un COMANDO , no REGISTRO, por favor haganlo saber a TODO el foroo .Hay hay que dar de alta registros primero (configurar timer) y otras cosillas, pero que un solo COMANDO (eS LO QUE PREGUNTA RISANTI13, NO QUE SI SE PUEDE USAR EN PBP) no lo e visto en mi version ni de PBP pro2.44 ni en mi version pbp plus 2.1.3. Favor de decirme cual es el comando.
"Quiero usar el Tm0 Como Contador De Eventos En PBp ,
lo he realizado introduciondo lineas en ensamblador para activar la cuenta en el tocki (pic 16f84) con un prescalaster 256 .
mi pregunta es que si existe un comando en Pbp para hacer esto . "

Khasistos, te gardeceria mucho si me dijeras cual es el COMANDO, gracias

SALUDOS PANAS

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Como usar el tmr0 en PBP
« Respuesta #8 en: 08 de Febrero de 2004, 06:03:00 »
Hola Amigos:
He tratado con mis conocimientos de novato en el PBP de acercar lo que he podido relacionado al tema.Ahora no se porque se transformo en una discusion de conocimientos, acerque con mi mejor ONDA lo que tenia a mano con respecto al tema por si le servia a risanti no quiero ni quise entrar en discuciones tecnicas si es comando o modificacion de registros,de una u otra forma repito acerque lo que considere que podia ser util,si a alguien ofendi pido disculpas o si alguien se sintio agraviado por mi humilde respuesta le pido disculpas no deseo transformar esto en una competencia no lo es para mi que no estoy a la altura de los mas sabios.Asi que concluyendo registro o comando ,yo aporte lo que tenia si sirvio para algo enhorabuena y si no sirve me lo dicen y listo.Aqui estoy para compartir TODO lo que tenga sin restricciones si es bueno mejor y si no lo es tanto por favor amigos no entremos en competencia no es mi intencion...
Un gran abrazo para todos y a vos pana no te pongas asi....no es para tanto........je je....yo no compito ,miro desde afuera .....

ABRAZOS
khasistos
Esto es lo que subi,LA MODIFICACION DE REGISTROS:::::

                symbol LED = PORTB.1                 
       TRISB = 0                  "
       PORTB = 0              
       INTCON = %00100000         
       OPTION_REG = %10000100     
       brojac = 0                 
       TMR0 = 96              

       On Interrupt Goto ISR      
       INTCON =  %10100000        
                Main:                              
       if brojac = 200 then toggle LED  
          brojac = 0                   
      endif
       goto Main                  
       Disable
ISR:
       brojac = brojac + 1        
       TMR0 = 96              
       INTCON.2 = 0               
       Resume                     
       Enable
        End



Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: Como usar el tmr0 en PBP
« Respuesta #9 en: 08 de Febrero de 2004, 18:50:00 »
Hola Khasistos,
Yo no veo la discusion, al contrario creo que este foro es para aportar informacion, y aqui la mayoria somos novatos ( INCLUYENDOME) , solo exprese lo que sabia, y por lo que veo no me supe expresar  (veo que asi lo tomaron), pero repito yo no lo exprese como discusion, ni competencia,ni nada similar en este foro en la mayor parte de mis conocimientos se los debo a ustedes y muchos mas que han aportado con anterioridad informacion muy interesante y valiosa para mi, y es mi deber devolver todo lo que se tratando de ayudar a quien empieza. Asi que a dejar de discutir panas y a programar , que estos bichos cada ves tienen mas cosas.

Saludos panas

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Como usar el tmr0 en PBP
« Respuesta #10 en: 08 de Febrero de 2004, 20:22:00 »
Hola a todos ,  khasistos creo que esa es una forma facil, le pongo un boto.

Desconectado risanti13

  • PIC12
  • **
  • Mensajes: 66
RE: Como usar el tmr0 en PBP
« Respuesta #11 en: 09 de Febrero de 2004, 07:58:00 »
Hola Compañeros del foro:

He Intentado Varias formas, pero hice in programa en PIc BAsic Plus que lo simule en proteus y resulto aqui esta:

Device 16F84         
XTAL 4   
         
"definicion LCD
DECLARE LCD_TYPE                                      ALPHA
        Declare  LCD_DTPIN      PORTB.4
        Declare  LCD_RSPIN      PORTB.3
        Declare  LCD_ENPIN      PORTB.2
        Declare  LCD_LINES                         2
        Declare  LCD_INTERFACE                        4

TRISA=%00001000
TRISB=255
dim cuent as   byte
ASM
   BSF 03,5
   MOVLW B"00110000"
   MOVWF OPTION_REG
   BCF 03,5
ENDASM
CUENTA:
               @ clrF TMR0
   HIGH PORTA.4
   PAUSE 1000
   LOW PORTA.4     " para  que el tmro no se incremente
ASM
   movF TMR0,W
   movwf cuent
ENDASM
  cuent=cuent*2
  PRINT $FE, 2, DEC cuent,"hz"
GOTO CUENTA   




  Esto  lo hice en PIc BAsic PLus Y por lo menos si inyecta un frecuencia de 50 Hz en el Tocki El LCd se visualiza los 50Hz
mi duda es que si se puede hacer un arreglo para que es conteo se mas de 8 bits , o que cuentado lleve el tmr0 a su valor limite superior incremente otra variable y asi lograr una cuenta mas larga
todo esto es por que quiero hacer un frecuencimetro pero quiero
yo diseñar el programa....

Gracias por su ayuda especialmente lager  y khasistos/TMR0  y a los demas del foro.. que en este tiempo que llevo en los pIC he aprendido gracias  a las respuestas y preguntas de todo ....muchas gracias ......

Risanti

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Como usar el tmr0 en PBP
« Respuesta #12 en: 09 de Febrero de 2004, 11:14:00 »
Hola:
Te contesto al vuelo ,si hay forma de incrementar una variable tomando como referecia el desbordamiento del TMR0,hay un bit que te indica que el TMR= ha llegado a su final,pero si no quieres usar eso se me ocurre no dejar desbordar el TMR0 predefinirle un valor de conteo y luego con instrucciones if XX then =n+1 puedes tener todos los valores dado que cada variable que operes para un muestreo de 6 digitos estara compuesta por una variable que llege a nueve e incremente la proxima.Puedes hacer todo con 8 bits ,asi hice un contador hasta el numero que yo quisiese ,incrementando hasta nueve cada digito y el proximo seria 10 .No se si esta bien explicado o no pero es lo que recuerdo del contador .Otra seria que el bit de desbordamiento del TRM0 indique que pasarias al segundo octeto y tendrias un numero de 16 bits ,pero contarias hasta 65535 claro que con otras operaciones relacionadas podrias segirlo.CREO que la mas sencilla es la primera tomar digitos individuales e incrementar cuando se llege a 9 Su analogia mecanica seria como los contadores mecanicos esos de los viejos grabadores cuyas ruedas con numeros poseian u gatillo en el nueve para arrastrar el digito siguiente...Espero haberte sido algo util
Saludos
khasistos

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Como usar el tmr0 en PBP
« Respuesta #13 en: 09 de Febrero de 2004, 12:35:00 »
BUneas
Para aumentar la cuenta no se usa el prescaler?

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: Como usar el tmr0 en PBP
« Respuesta #14 en: 09 de Febrero de 2004, 15:36:00 »
QUE ONDA,
Mira aumentar el timer0 no se puede ya que es solo de 8 bits(limitado), podrias usar un timer1 (pic16f628) pero este nada mas tiene 16 bits(no pasarias la escala de los 65khz), la forma mas eficiente seria usar la interrupcion del timer para incrementar la vairable 255 veces cada ves que suceda, ¿cuando sucede? cuando el timer cuenta mas de 255 bits (acuerdate que es una resolucion de 8 bits) por eso nada mas llegaria a 255(510 hz) solo tienes que configurar EL REGISTRO INTCON=%..... para habilitar la interrupcion de desborde del timer0, cada vez que desborde(dependiendo de el numero de pulsos , osea de la frecuencia de ingreses en el) ,cada ves que sobre pase los255 pulsos, sume 255 y limpies la interrupcion,por que si no no volvera a ir a la posicion de interrupciones y de ahi sume 255. cuantas interrupciones haya sera reflejado en la suma final y tu formula.
si suceden 2 interrupciones seran 510 pulsos(2*255) sumados o extras a el conteo del ultimo timer.
Asi pienso que te funcionaria tu frecuencimetro(creo que tiene limitante a 50 mhz, no me acuerdo bien  )
En lo que respecta  alo que preguntas ejmc, sip , el prescaler hay que definirlo, con el registro OPTION_REG, los primeros 3 los definen y el 4 define si usas timer o perroguardian.
Otro comentario   ejmc, podrias tambien usar los registros directos que usas en tu programa como OPTION_REG, no es necesario que entres en modo asm y cambies bancos, los compiladores aceptan la declaracion de estos registros directamente.

Sañudos panas


 

anything