El 7805 para pasar de 12 a 5V se te calentara, los hay mejores, a ver si te miro alguno.
ok, ahi me indicas a ver como le hacemos y ademas ojala y los haya en mi ciudad o en mi pais... sino me tocara con un 7809 y un 7805.
Si los valores oscilan en los valores que tu dijiste, el 99,99% de los ciclos estaran en POSITIVO_50 y no hara falta tocarle, simplemente que continue. Si por ejemplo en mil ciclos hay cien que se van un poco del paso por 0 exacto pero dentro de los margenes que les des, si de esos cien 50 se van por exceso y 50 por defecto, sin tocarle tendras la frecuencias exactas igual, si ya son 60 y 40 se aculuran esas desviaciones y al cabo de los mil ciclos habra que sincronizar, bueno esto es lo que yo creo, tampoco lo se seguro. creo que un margen de unos uS arriba y abajo seria logico dearselo, pero como tu veas.
ok, ahora me pondre a hacer ese tema para ver como queda el programa... intentare darle 42us tanto para arriba como para abajo para que simplemente siga....
Bueno el PWM es desde que empieza hasta que acaba, es decir todo, en el "bsf" empieza el DUTTY pero el resto tambien cuenta. Yo habitualmente cuando hago PWMs lo primero que hago es poner en alto los DUTTYs (cuando son muchos y simultaneos) y despues los "voy bajando", aqui como solo es uno de cada vez pues no importa mucho.
Si, yo se eso pero tomando en consideracion que siempre va a estar funcionando solamente tendriamos q discriminar los 3us que en un comienzo pasa para funcionar de manera aislada, luego pues siempre mido de bsf a bsf, y claro que el resto tambien cuenta pero en todo el resto la salida al transistor va a estar en 0, asi que al considerar "siempre" de bsf a bsf pues estamos considerando todo el PWM...
¿Ese tiempo es simulando el cruce por 0? ¿Es decir en la simulacion pones a 1 el PORTB,0 y despues lo pones a 0? ¿O solo lo dejas correr? Como es un poco menor se lo aumentas al ciclo 30 (cresta de la onda) y ya no hay problema, mejor repartelo entre las dos crestas para que quede equilibrada, igual el + que el -.
Saludos Tapi.
Sip, ese tiempo es simulado el cruce por 0, es decir pongo a 1 el PORTB,0 y luego lo pongo a 0 cuando ya no deberia haber el pulso...
El cambio a 0 lo hago aqui
POSITIVO_11 ;este sera el decimo primer PWM con dutty
movlw .87 ;valor del offset del TMR0
bcf INTCON,T0IF
movwf TMR0 ;aqui empieza a contar
bsf PWM_1 ;lo activamos
call DEMORA_7 ;llamamos demora
call DEMORA_4 ;llamamos demora
bcf FLAG ;limpiamos la bandera cuando no deberia haber cruce por cero
que ahi estan 1,5092 ms, en el anterior chequeo a este esta en 1,3658ms y cuando termina el chequeo esta en 1,4554ms, asi que mantengo en 1 el flag hasta donde te digo y asi aseguro que el tiempo va a ser correcto
Y tambien pense en esa solucion pero recuerda que estamos con nuestra onda sincronizada y supongo que es cuando mas la onda tiene q estar bien definida... me tome la molestia de ver ciclo por ciclo, y estaba hecho un desastre.. habian ciclos de 137us, otros de 141 (redondeados) eso hasta donde vi.... asi que me puse a ajustarlos uno por uno y vaya que me quedo bien... el problema es que me ocupo muchisimo espacio en el PIC pero bueno creo que vale la pena jejejejejeje, ademas ajuste para que el tiempo de demora para la sincronizacion sea 1,4ms exactos, pero creo que ahora tendre que hacer nuevos calculos... bueno ya vere en el transcurso de la programacion jejejejejejeje
Por ahora te dejare el programa con los cambios que he hecho.... ya creo que asi como esta, esta bastante bien ya que siempre esta sincronizando pero pues al darle ese tiempo que me comentas pues creo que quedara aun mejor... ademas no se si se pueda pero intentare mejorar el espacio en el PIC tambien jejejejeje... Ahora mismo ya se me esta ocurriendo una forma pero primero a lo primero, a dar ese tiempo para que el pic siga sin hacer nada si esta en ese rango de us jejejejejeje...
Saludos, Pedro