TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: tapi8 en 25 de Agosto de 2011, 13:35:52

Título: Pequeña putada del TMR0
Publicado por: tapi8 en 25 de Agosto de 2011, 13:35:52
Pues bueno, estoy haciendo un programa en el que tengo que contar tres tiempos y lo estoy haciendo con los tres TIMERs, es en un 16F886, cada uno cuenta su tiempo y al terminar provoca una interrupcion, pero simulando me pasaba que se provocaba una interrupcion por desbode de TMR1 o TMR2 y cuando llegaba a la interrupcion se me activaba lo que se tenia que activar con la interrupcion del TMR0.
Lo tenia asi:

Código: [Seleccionar]
INICIO_ISR

movwf W_Temp ; Copiamos W a un registro Temporal
swapf STATUS, W ; Invertimos los nibles del registro STATUS
movwf STATUS_Temp

ISR
                 btfsc INTCON,T0IF  ; miramos si la interrupcion es por TIMER0
goto ACTIVAR_R ; es por TIMER0 vamos a activar TRIAC_R

btfsc PIR1,TMR1IF  ; Consultamos si es por TMR1
goto ACTIVAR_S ; es por TIMER1 vamos a activar TRIAC_S
btfsc PIR1,TMR2IF ; consultamos si es por TIMER2
goto ACTIVAR_T ; es por TIMER2 vamos a activar TRIAC_T
goto FIN_ISR ; si no fue ninguna, va a salir de la interrupcion

Analizando el problema veo que efectivamente no salto la interrupcion del TMR0 porque estaba desactivada ya que INTCON,T0IE esta a 0 y por tanto enmascara dicha interrupcion, pero como TMR0 cuenta siempre y no se puede parar (si alguien sabe como se hace que me lo diga) y el flag INTCON,T0IF se activa aunque la interrupcion no este activa da como resultado que se produce una interrupcion, cualquiera que este activada y si en la rutina ISR chequeamos primero si fue por TMR0 nos dira que si aunque sea mentira.

Bueno la solucion que veo y que estoy aplicando, es simplemente chequear T0IF de ultimo, ya que los otros dos TMRs si se comportan bien y cuando no estan activados no cuentan y cuando quieras que cuenten los activas y listo.
Queda de esta manera:

Código: [Seleccionar]
INICIO_ISR

movwf W_Temp ; Copiamos W a un registro Temporal
swapf STATUS, W ; Invertimos los nibles del registro STATUS
movwf STATUS_Temp

ISR

btfsc PIR1,TMR1IF  ; Consultamos si es por TMR1
goto ACTIVAR_S ; es por TIMER1 vamos a activar TRIAC_S
btfsc PIR1,TMR2IF ; consultamos si es por TIMER2
goto ACTIVAR_T ; es por TIMER2 vamos a activar TRIAC_T
btfsc INTCON,T0IF  ; miramos si la interrupcion es por TIMER0
goto ACTIVAR_R ; es por TIMER0 vamos a activar TRIAC_R
goto FIN_ISR ; si no fue ninguna, va a salir de la interrupcion

Bueno asi de momento en la simulacion funciona bien.
No se si es exactamente un fallo de Microchip, o simplemente que al estar asociado al WDT tiene que funcionar de esta manera, aunque el WDT tambien esta desactivado.




Título: Re: Pequeña putada del TMR0
Publicado por: Suky en 25 de Agosto de 2011, 14:18:02
Podes preguntar si la interrupción y la bandera estan activadas.

si(TMR0IE==1 AND TMR0IF==1)entonces
{

}


Saludos!
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 25 de Agosto de 2011, 14:53:26
Pues si, en esta no habia caido, gracias.


Saludos.


Título: Re: Pequeña putada del TMR0
Publicado por: Leon Pic en 26 de Agosto de 2011, 10:53:30
Mirá, tal vez puedas utilizar solo el timer0 para generar esos tres tiempos.

http://www.todopic.com.ar/foros/index.php?topic=30920.0
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 27 de Agosto de 2011, 05:37:28
Gracias por la sugerencia Leon, pero en este caso concreto no me vale ya que los tres TMRs van a contar el mismo tiempo, pero desfasados y superpuestos, es para hacer un arrancador suave, y detecto los pasos por 0 de las tres fases que estan desfasadas 120º (3.33seg) por lo que cuando pasa por 0 fase R empieza TMR0 a contar, 3.33seg mas tarde empieza TMR1 a contar el mismo tiempo, y 3.33seg mas tarde empieza TMR2, de manera que primero esta contando solo uno despues 2 y despues los tres, desborda uno luego otro y luego el otro, asi constantemente.
Lo estoy haciendo todo con un 16f886, pero barajo la opcion de controlar cada fase con un 12f675, por la exactitud de los tiempos, ya que con TMR0 no puedo conseguir los tiempos exactos, lo tengo con un preescaler de 1/64 y para darle al motor 10% de potencia tengo que temporizar 8.680ms y lo mas proximo que consigo son 8.647ms son solo unos pocos us, pero me gustaria que fueran exactos, ya que es para motores muy grandes, 2000 o 3000KW y hay que manejar mas de 5000A a 400V. En el precio poner los 12f675 no tiene consecuencias ya que vale cada uno 1 o 2€ y los tiristores cada uno vale 184€  y va a llevar 24 mas o menos de 4150A/600V, aunque me gustaria hacerlo todo con un solo PIC, pero lleva botones y displays para parametrzarlo, sensores de sobreconsumo, temperatura y bastantes cosas mas.
Bueno ya veremos de momento lo estoy planteando todo con un 16f886, veremos si soy tan como creo que soy y sale todo con uno. :lol: :lol:


Título: Re: Pequeña putada del TMR0
Publicado por: Leon Pic en 28 de Agosto de 2011, 01:59:05
Para hacer mas exacto la temporización del tmr0, puedes utilizar algunos NOP en la interrupción antes de re-ajustar al tmr0

En cuanto a mi sugerencia, sino me equivoco, puedes utilizarlo aún pero con banderas que la iras activando según su orden.
Otra idea, es que puedes configurar al tmr0 como contador y utilizar un reloj de precisión exterior. Sería mejor utilizar el bit RB0/int pero seguro lo tienes ocupado para detectar el cruce por cero.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 29 de Agosto de 2011, 13:24:45
Citar
Para hacer mas exacto la temporización del tmr0, puedes utilizar algunos NOP en la interrupción antes de re-ajustar al tmr0

Si, no es que me guste mucho dentro de la interrupcion hacer cosas de mas que las que tengo que hacer pero......
El programa en si no tiene mucha complicacion, solo este de los tiempos, agravada por la imprecision del TMR0, pero en vez del 10% un 10.02% tampoco se notara. Dentro de la complicacion hay algo bueno y es que se en que momentos me van a pasar por 0 cada fase, si en algun momento me crearan conflictos puedo adelantar o retrasar unos us la entrada en la interrupcion, ya que va a suponer como digo
0.01 o 0.02%

Citar
En cuanto a mi sugerencia, sino me equivoco, puedes utilizarlo aún pero con banderas que la iras activando según su orden.

Para hacerlo con un solo TIMER si que no di conseguido como hacerlo, por eso me decidi por el uso de los tres con interrupcion, creo que de esta manera es la mejor, con TMR0 consigo un valor aproximado y con los otros voy consiguiendo el mismo valor del TMR0, es importante que sean iguales ya que si se descompensan las potencias entre las fases, en potencias de 2000KW para arriba puede ser fatal. Por eso aun me planteo lo de los 3*12f675 ya que ahi todos los tiempos serian con TIMER1 y este si tiene precision.

Citar
Otra idea, es que puedes configurar al tmr0 como contador y utilizar un reloj de precisión exterior. Sería mejor utilizar el bit RB0/int pero seguro lo tienes ocupado para detectar el cruce por cero.

No creo que para esto lo necesite, la precision del clock interno a 4 o 8Mz tendria que llegar de sobra.

Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 30 de Agosto de 2011, 17:43:41
Con cuántos uS de error máximo te conformarías? El error en potencia aplicada es bastante poco cerca de los cruces por cero.

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 31 de Agosto de 2011, 09:23:54
Me conformare con lo que TMR0 diga que remedio.  :lol:
Donde se me produce el error no es en el paso por 0 sino en el momento de la activacion de los triacs, en plena senoide. Para rampas de 5 en 5% no tendre problema, creo, pero quiero hacerlas tambien de 1 en 1% e incluso de 0.5 en 0.5, aqui unos poquitos us empezaran a ser importantes, supongo.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 02 de Septiembre de 2011, 15:07:05
Bueno he empezado a mirar la cosa para ir incrementando potencia del 1 en 1%, los resultados para las potencias muy bajas 1,2,3% no son muy buenos, entre una y otra potencia la diferencia son 92us (10ms del semiciclo -0.4ms del inicio y -0.4ms del final en los que el triac no conduce, valores aproximados) el caso es que para 1% tendria que temporizar 9508ms y lo mas proximo con TMR0 son 9479, en el 98% cae casi redondo 9416 y salen 9415 (ojala fueran asi todos) en el 97% serian 9324ms y se tiene que quedar en 9287. Bueno como digo no son muy buenos, pero a partir del 11 o 12% ya puedo empezar usar preescaler de 1/32 lo que aliviara bastante estas imprecisiones (hasta ese porcentage estoy usando preescaler 1/64).

En las potencias grandes 99% y 98%, solo hice estas dos de momento, como era de esperar no hay problemas.

Creo que en las potencias muy pequeñas no deberia de tener mucha importancia que en vez del 1 sea del 1.3%, y asi sucesivamente, hasta que al llegar al 10% para delante ya pueda afinar un poco mas.

Si bien, no estoy muy defraudado, tampoco doy saltos de alegria y no descarto lo de manejar cada fase con un 12F675

Tambien comentar que con TMR2 en algunas ocasiones no voy a conseguir los tiempos exactos del TMR0, estoy con preescaler de 4 y posescaler de 10, ahora me estoy dando cuenta que si el posescaler lo pongo de 16 me tendria que dar exacto lo mismo que el TMR0 con preescaler de 64, verdad? Lo mirare.

Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 02 de Septiembre de 2011, 16:40:06
Que FOSC estas usando y podrías subirla a 20Mhz de ser necesario?

Podrian ser valores del 0 al 255 en lugar del 0 al 100? Digo para aprovechar todo el rango de un byte y mejorar la resolución.

Se me ocurren un par de formas de encararlo con poco error. Dejame que lo piense un rato y te comento.

En tu comentario anterior mencionas muchas veces mS cuando deberian ser, me parece, uS. El tiempo para el valor que mencionas del 1% me parece incorrecto, o he entendido mal como funciona...

Saludos.

Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 02 de Septiembre de 2011, 21:24:09
Hola tapi.

Te adjunto lo que se me ocurrió. El error no debería ser mayor a unos uS.

Si tenes Proteus 7.7 sp2 o superior vas a poder simularlo...

(http://img825.imageshack.us/img825/1402/capturafm.jpg)

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 03 de Septiembre de 2011, 06:21:23
Citar
Que FOSC estas usando y podrías subirla a 20Mhz de ser necesario?

De momento estoy trabajando con 4Mz, pense en subirlo a 8Mz para darle mejor definicion, pero entonces en TMR0 tenia que subir de 1/64 a 1/128, por lo que creo que casi estoy en el mismo caso. Se podria subir a 20Mz de ser necesario con clock externo, con los internos las opciones son 4 o 8Mz. De no ser por este problema 4Mz sobrarian.

Citar
Podrian ser valores del 0 al 255 en lugar del 0 al 100? Digo para aprovechar todo el rango de un byte y mejorar la resolución.

Las potencias van en porcentajes 1% en 1% o 0.5% en 0.5% por eso lo divido en 100 partes 200 etc. no entiendo bien porque al dividirlo en 255 voy a tener mas precision, aqui me perdi. :lol:

Citar
En tu comentario anterior mencionas muchas veces mS cuando deberian ser, me parece, uS. El tiempo para el valor que mencionas del 1% me parece incorrecto, o he entendido mal como funciona...

Tienes razon me olvide de poner las comas, donde pongo 9508ms debi haber puesto 9.508ms o 9508us.
Los tiempos igual te despista porque el "Mister Emulti-calc" lleva un reload incluido donde da a mayores unos ciclos de instruccion para la carga del TMR y lo tengo en 7 ciclos, en la realidad van a ser mas porque desde que desborda hasta que se ceba el triac pasan en tntre17 y 21 ciclos de instruccion, esto ya despues al depurar en el MPLAB se ajustan.
De todos modos cuanto mas porcentaje de potencia se le da al triac, menos tiempo cuentan los TMRs, ya que cuentan desde el paso por 0 hasta el cebado del triac, cuanto mayor el tiempo de retardo menos tiempo conduce.

Mirare lo que propones pero en MPLAB ya que mi PROTEUS hace lo que le da la gana, solo lo uso para diseñar, la version profesional no me simula bien, se me cuelga al poco tiempo de estar trabajando con ella, no es capaz de simular siquiera una lampara con un interruptor.

Algo que me ocurre es para porcentajes grandes descomponer los tiempos en partes mas pequeñas y con un contador ir contando desbordes. Me explico mejor, el 1% son 9508us hago desbordes de 920us lo hago 9 veces y tengo el 90% del tiempo 8280us y temporizo el resto para 99%, del tiempo que es 1%de potencia aplicada al triac, de esta manera consigo trabajar con preescaler de 4 que me da mucha mas precision.

PD:Si hay pequeños fallos en el mensaje disculpa es que el editor del foro me hace cosas raras al querer hacer modificaciones.

Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 03 de Septiembre de 2011, 12:42:52
Bueno. He modificado el programa, por un pequeño problema que podía haber durante las transiciones.

Citar
Que FOSC estas usando y podrías subirla a 20Mhz de ser necesario?

De momento estoy trabajando con 4Mz, pense en subirlo a 8Mz para darle mejor definicion, pero entonces en TMR0 tenia que subir de 1/64 a 1/128, por lo que creo que casi estoy en el mismo caso. Se podria subir a 20Mz de ser necesario con clock externo, con los internos las opciones son 4 o 8Mz. De no ser por este problema 4Mz sobrarian.

El programa que adjunte trabaja en 20Mhz. A menos Mhz hay que cambiar un par de valores, y vas a tener errores de tiempo mas grandes.

Citar
Podrian ser valores del 0 al 255 en lugar del 0 al 100? Digo para aprovechar todo el rango de un byte y mejorar la resolución.

Las potencias van en porcentajes 1% en 1% o 0.5% en 0.5% por eso lo divido en 100 partes 200 etc. no entiendo bien porque al dividirlo en 255 voy a tener mas precision, aqui me perdi. :lol:

Bueno, veo que seguís insistiendo en potencias de 1% en 1%, cuando en realidad lo que varias de a 1% es el tiempo de trabajo(duty time), no la potencia. Sí correspondería la mísma variación en potencia, si la curva de voltaje fuese horizontal(V constante) pero en tu caso son senoidales, por ende la potencia varía en cada momento distinto de tiempo y deja de ser proporcional. He aqui uno de los problemas a mi parecer. Estás particionando la potencia de manera desproporcional. Seguramente un arranque suave tendría mejor resultado respondiendo a una curva de potencia exponencial si tu problema es en los valores bajos de potencia aplicada.
El programa que hice autogenera tablas de tiempo, pero con intervalos constantes entre si(excepto para los valores de los extremos), lo que no se traduce en una senoidal a intervalos constantes de potencia pero sigue siendo lo mísmo que has hecho tú, pero con menor error. Podés modificar las tablas para que respondan a cualquier tipo de curva de aceleración.


El programa recibe el duty time a aplicar por USART, 9600 baudios. Te recomiendo que lo pruebes.

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 04 de Septiembre de 2011, 05:49:59
Citar
Bueno, veo que seguís insistiendo en potencias de 1% en 1%, cuando en realidad lo que varias de a 1% es el tiempo de trabajo(duty time), no la potencia. Sí correspondería la mísma variación en potencia, si la curva de voltaje fuese horizontal(V constante) pero en tu caso son senoidales, por ende la potencia varía en cada momento distinto de tiempo y deja de ser proporcional. He aqui uno de los problemas a mi parecer. Estás particionando la potencia de manera desproporcional. Seguramente un arranque suave tendría mejor resultado respondiendo a una curva de potencia exponencial si tu problema es en los valores bajos de potencia aplicada.

Si, completamente de acuerdo, ya lo tenia contemplado y de hecho cuando lo haga asi todavia necesitare mas precision en los tiempos, ya que no seran lineales y mientras en el centro de la senoide donde se alcanza el valor maximo (325V de pico para 230V eficaces) sera inferior a 92us para un 1% de variacion de W, en los extremos donde empiezan y paran de conducir los triacs (400us despues de paso por 0 y antes de volver a pasar hay aprox 40V) seran bastante mayores de los 92us que salen al hacerlo lineal.

El problema solo lo tengo en los valores bajos entre el 1 y el 11% aprox porque tengo que trabajar con preescalers altos en los TMRs, con TMR2 tengo menos problemas, o eso creo, pero TMR0 con preescaler 1/64, no me da lo que quiero, por eso decia lo partir los tiempos en varias partes y con un contador ir haciendo las cuentas.

Citar
El programa recibe el duty time a aplicar por USART, 9600 baudios. Te recomiendo que lo pruebes.


Lo voy a mirar en el MPLAB y tratar de entenderlo, creo que me llevara algun tiempo, es bastante complicado. ¿Por que recibe por la USART? Realmente por la USART ira conectado via RS485 a un PLC para recibir datos desde el, sobre todo cuando trabaje como regulador de W (es algo que tambien quiero incorporarle) tambien estara comunicado con el PLC a traves de dos salidas normales ( de 0 y 1) una para ON/OFF y otra para el sentido de giro. Pero la parametrzacion tambien se hara in situ con tres o cuatro pulsadores donde se seleccionara tipo de rampa de arranque y parada. Aqui se seleccionara el % del arranque y de la parada, asi como los tiempos en cada % para hacerla mas suave o mas rapida.
Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 04 de Septiembre de 2011, 13:36:41
Hola.

Utilicé la USART porque no disponía de muchos pines y me pareció sencillo y rápido. Nada más.

El algorítmo lo que hace básicamente es llevar 3 contadores. Cada contador está asociado a una fase distinta. Cuando se detecta un cambio de flanco en una de las 3 entradas que sensan los cruces por cero, el algoritmo setea la salida para activar la fase asociada y carga el valor de su contador.

El TIMER2 es el que se utiliza para contabilizar el tiempo transcurrido, y se incrementa cada FOSC/4, es decir que tiene un pre y post scaler 1:1.O lo que es lo mísmo, incrementa por cada ciclo de ejecución.

En cada iteración, se calcula la diferencia de tiempo entre el valor actual del TIMER2 y el de la iteración anterior. De esta manera obtenemos la  diferencia de tiempo(medida en ciclos de ejecución). Este valor se le resta a cada contador, hasta que el contador llega al mínimo, momento en el cual se pone a bajo la salida asociada.

Los valores de las cantidades de ciclos para cada porcentaje se calculan desde un par de tablas automáticamente utilizando el pre-compilador.

Cualquier duda consultame...

Saludos.
 






Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 06 de Septiembre de 2011, 06:06:00
Bueno Bruno ante todo gracias por el trabajo que te estas tomando.

Le he estado vueltas al programa y decir que es bastante complejo, lo de hacerlo con contadores independientes fue la primera opcion que baraje, pero si bien en variaciones de W de 10% e incluso de 5% iba bastante bien cuando me meti a la del 1% era mucho tiempo metido en interrupciones y por eso la desheche, no quiero decir que no sea buena solucion, pero me parecio mejor la de los tres TMRs.

Citar
El algorítmo lo que hace básicamente es llevar 3 contadores. Cada contador está asociado a una fase distinta. Cuando se detecta un cambio de flanco en una de las 3 entradas que sensan los cruces por cero, el algoritmo setea la salida para activar la fase asociada y carga el valor de su contador.

Aqui no entiendo muy bien, cuando se detecta cruce por 0 se activa la cuenta correspondiente a esa fase y transcurrido ese tiempo se setea ese triac, o lo estoy entendiendo mal?

Citar
En cada iteración, se calcula la diferencia de tiempo entre el valor actual del TIMER2 y el de la iteración anterior. De esta manera obtenemos la  diferencia de tiempo(medida en ciclos de ejecución). Este valor se le resta a cada contador, hasta que el contador llega al mínimo, momento en el cual se pone a bajo la salida asociada.

Y aqui es cuando se pondra a 1, decir que en los optos se puede activar por 0 y desactivar por 1, te refieres a esto?. Pero entonces al principio cuando haces.

Código: [Seleccionar]
bcf PHASE1OUT
bcf PHASE2OUT
bcf PHASE3OUT

habria que ponerlos a 1 no? para que los triacs estuvieran a 0.

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 06 de Septiembre de 2011, 11:49:31
Bueno Bruno ante todo gracias por el trabajo que te estas tomando.

Le he estado vueltas al programa y decir que es bastante complejo, lo de hacerlo con contadores independientes fue la primera opcion que baraje, pero si bien en variaciones de W de 10% e incluso de 5% iba bastante bien cuando me meti a la del 1% era mucho tiempo metido en interrupciones y por eso la desheche, no quiero decir que no sea buena solucion, pero me parecio mejor la de los tres TMRs.

Citar
El algorítmo lo que hace básicamente es llevar 3 contadores. Cada contador está asociado a una fase distinta. Cuando se detecta un cambio de flanco en una de las 3 entradas que sensan los cruces por cero, el algoritmo setea la salida para activar la fase asociada y carga el valor de su contador.

Aqui no entiendo muy bien, cuando se detecta cruce por 0 se activa la cuenta correspondiente a esa fase y transcurrido ese tiempo se setea ese triac, o lo estoy entendiendo mal?

Hola.

Es justo al reves. Cuando se detecta el cruce por cero, se levanta la salida correspondiente del triac. Una vez que la cuenta pasa el minimo admitido, se pone a cero la salida. Obviamente es muy sencillo dar vuelta la logica si es lo que necesitas.

Citar
En cada iteración, se calcula la diferencia de tiempo entre el valor actual del TIMER2 y el de la iteración anterior. De esta manera obtenemos la  diferencia de tiempo(medida en ciclos de ejecución). Este valor se le resta a cada contador, hasta que el contador llega al mínimo, momento en el cual se pone a bajo la salida asociada.

Y aqui es cuando se pondra a 1, decir que en los optos se puede activar por 0 y desactivar por 1, te refieres a esto?. Pero entonces al principio cuando haces.

Código: [Seleccionar]
bcf PHASE1OUT
bcf PHASE2OUT
bcf PHASE3OUT

habria que ponerlos a 1 no? para que los triacs estuvieran a 0.

Saludos.

Fijate que eso está hecho trabajando en el banco 1. Es sólamente otra manera de configurar los TRIS de los pines independientemente en lugar de todo el puerto. Alli lo que hago entonces, es solo declarar esos pines como salidas.

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 06 de Septiembre de 2011, 14:27:11
Citar
Es justo al reves. Cuando se detecta el cruce por cero, se levanta la salida correspondiente del triac. Una vez que la cuenta pasa el minimo admitido, se pone a cero la salida. Obviamente es muy sencillo dar vuelta la logica si es lo que necesitas.

De acuerdo, es por si habia algo que se me escapaba y metia la pata.


Citar
Fijate que eso está hecho trabajando en el banco 1. Es sólamente otra manera de configurar los TRIS de los pines independientemente en lugar de todo el puerto. Alli lo que hago entonces, es solo declarar esos pines como salidas.

Sobre esto nada que comentar, para no hacer mas el ridiculo.  :D :D


Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 06 de Septiembre de 2011, 22:48:52
No pasa nada!

Sacate todas las dudas! Fijate si te sirve!

Saludos.
Título: Re: Pequeña putada del TMR0
Publicado por: tapi8 en 14 de Septiembre de 2011, 06:14:14
Bueno despues de mucho leer sobre motores trifasicos, veo que las rampas de arranque suelen empezar del 30% para arriba incluso el 40% en algunas ocasiones, estas se refieren mas bien a motores pequeños o medianos, para motores grandes no encontre mucha informacion, pero de esto deduzco que deberian empezar no antes del 15% o el 10% como poco, que es precisamente donde tengo el problema de imprecision con el TMR0, y si empezaran antes creo que no tendria mucha importancia esos pocos us de desviacion, ya que al ser potencias bajas y la V ser baja no importaria que ahi fueran 2% o 2.5%, quiero decir que creo que me puedo permitir desviaciones de tiempo relativamente grandes.

Por tanto creo que voy a usar el sistema de los tres TMRs con interrupcion, porque es mas sencillo y me deja mucho tiempo para las otras muchas cosas que tengo que hacer, leer ADCs (de momento son 4 pero seguramente acabaran siendo mas) leer pulsadores de parametrizacion (5 o 6), manejar displays, leer entradas del PLC (dos de 1 o 0 y otra RS485) contactor de baypass etc.

Bruno perdon por las molestias que te he hecho tomar y gracias por todo, pero con tu programa se me hace mas complicado hacer todo esto.
Título: Re: Pequeña putada del TMR0
Publicado por: BrunoF en 14 de Septiembre de 2011, 10:52:16
No pasa nada hombre. Que no te iba a cobrar tampoco, eh! :)

Éxitos!