Hola ! :) me gustan tus videos, te hago una recomendación - petición, espero no te moleste, me agradaría que tus tutoriales los hicieras más básicos Ejemplo uno de LED como los que has subido, después uno ahora con varios LED’S Después uno de como mover un motor por ejemplo y después otro como este que acabas de subir implementando el motor y otras cosas Ya que habemos muchos que recién empezamos y creo yo sería más sencillo y detallado entender como hacer funcionar distintos componentes o materiales electrónicos con este microcontrolador pero componente por componente :( no varios a la vez Espero me haya dado a entender jeje disculpa mi atrevimiento 😅 saludos y sigue así :)
Juan Hola :) gracias por comentar, primero no me molesta, me ayuda a mejorar los vídeos. Entiendo el punto, pero me podrías ayudar con algunas ideas por ejemplo he hecho con un led y leds, con display 7seg, con lcd, o te refieres a entender los temas como un Timer 0 con un Led (sin motor ni LCD)? Me cuentas :)
Wels muchas gracias por no ignorar 😁 Pues una de servomotores estaría genial ! No se qué tan complicado sea jeje pero estaría muy bien, aunque insisto, ejemplo sencillo y detallar hasta lo más “tonto” de la programación hacia el servo y no hacer varias cosas a la vez En una segunda parte agregar más cosas y componentes al programa no estría nada mal :) También para infrarrojos sería genial (emisor - receptor) Tal vez videos explicando RUTINAS para varias cosas pero no tan avanzadas Así como rutina de mover un motor hacia la izquierda por 3s y enseguida hacia el otro lado y después apagado Es un ejemplo También adentrándose más estaría genial una construcción de algún proyecto básico como un carrito que evita obstáculos o cosas así que encuentra uno para Arduino pero con video previos de como hacer algunas rutinas de como te comentaba :) De verdad disculpa tanto atrevimiento jeje solo es sugerencia Sigue así muchas gracias y saludos !!! 😅
Y en cuanto a lo que dices del LED pues como te digo me refiero a que si vamos a aprender motor pues que sea motor nada más, porque si metemos más cosas como la lcd o extras, hay confusión cuando se programa y dudas de en si como programar el motor
Buenísimo.... ya hemos visto muchos Tutos de blinks leds... usar Timers e interrupciones es de gente Pro.... Se agradece la explicación en nuestro lenguaje nativo.
muy buena explicación y si quisiera temporizar por 5 minutos el encendido del motor como lo haria ya que lo hiciste calculando el tiempo de temporizado, asi que mi duda es si puedes usar ese mismo tiempo para temporizar durante 5 minutos el motor.
5 minutos es bastante, lo que podrías hacer es que tu timer genere interrupciones de 1 segundo. Y que una variable vaya aumentando cada segundo, cuando esta variable sea igual a 60 quiere decir que han pasado 60 veces 1 segundo. Podrías calcularlo para 5 minutos. Un abrazo
El tema del mensaje terminado que t vuelve a aparecer, es porque veo que activas tu interrupción mediante la deficion de TMR0H y L, el cual podrías dejarlo en el setup del timer y para activar el timer inmediatamente al momento de encender el motor, podrías usar el registro TMR0ON. El cual cuando evalúas la ISR del timer por desborde lo puedes desactivar y así certificar que la temporozacion queda asociada a la acción del pulsador
Hola, explicas muy bien. Estoy realizando una programacion parecida con el pic18f4550 y dos motores que simulan dos bandas transportadoras con un contador, tengo 3 errores en la simulación... podria realizar un video de este programa?
Buen video Wels, una pregunta porque colocar al pre-escaler 256 y no otro valor como el 128, 64,32,16,8,4 o 2 que están en el data sheet ? y siempre tengo que restar del 65535? en el minuto 11:38
Luis hola, hice un temporizador de 3 segundos usando el timer 0 de 16 bits. Primero que quiere decir de 16 bits, pues determina el número de conteos maximos que puede hacer nuestro timer en este caso es de 16 bits -> 2^16 = 65536, si fuera 8 bits sería -> 2^8 = 256 el numero de conteos máximo. Segundo, al hacer un temporizador de 3 segundos usé esta formula -> 3segundos = 4/20MHz* Pre-escaler*(X+1), si tu reemplazas ese prescaler por un valor de 128 notarás que el valor de X será mayor a 65536 que es el conteo maximo que tiene el Timer, entonces elegí un pre escaler de 256 porque me daba un valor que estaba en el rango del contador máximo. Sobre la resta, necesitaba una interrupción de desbordamiento para lo cual TMR0 = 65535 - X, los 65535 se obtienen por el timer de 16 bits, si nosotros usaramos un timer de 8 bits sería TMR0 = 255 - X. Espero haberte ayudado, saludos.
Hola Wels. Porqué hay un X+1 en la ecuación del temporizador? No encuentro eso en la FIGURE 11-2: TIMER0 BLOCK DIAGRAM (16-BIT MODE). Porqué 65535-X es el valor del TMRH y TMRL? Hay algun lugar en el datasheet que explica eso?
Hola que tal, quisiera saber como le hago para que al presionar y dejar presionado un boton de entrada, me de en la salida un estado alto (1) y despues de un tiempo cambie a estado bajo( 0 ) se lo agradecería,gracias.
Hola que tal estan excelentes tus videos, me han servido mucho. Tengo una duda como lo podria hacer funcionar si en mi configuracion estoy poniendo 48MHz en el XTAL_FREQ?
Buen vídeo, puedes hacer un temporizador programable en segundos, minutos y horas con PIC18F4550, sería estupendo para encender motores dc 9 V, saludos
Yo modifiqué esa librería del LCD, en la descripción están los archivos. El header file es donde defino variables y funciones que haré. Source file es donde creo la lógica que tiene esas funciones. Por ejemplo: en Header digo que defina la funciona Suma(int a, int b); En Source le doy la lógica a la función Suma(){a + b;}
Hola, en realidad creo que no debí desactivarla pero en ese momento pensé que era buena idea por si en algún momento ocurre una interrupción. Así que desactivo todo, establezco la configuración y luego vuelvo a activar las interrupciones
¿Cómo hago para activar el timer sin necesidad de un pulsador? Actualmente estoy haciendo un proyecto y necesito controlar el giro del motor de manera independiente.
TMR0ON desde la función setup junto a los registros de conteo TMROL y H y ya queda enclavado desbordando periódicamente al tiempo que calculaste. Como tal solo con el registro TMR0ON lo pueden apagar y activar cuando quieras y donde requieras
buenas tardes wels, cuando compilo me sale un error en la funcion de interrupcion, este : newmain.c:112:6: error: variable has incomplete type 'void' void interrupt ISR_TIMER_0 (void)...... he estado leyendo en algunos foros y dicen que puede ser por la sitanxis enla version de xc8, yo tengo la version 2.00. Espero puedas ayudarme. Buen video!!!
SI A ALGUNO LE INTERESA EXISTE UNA APLICACIÓN PARA EL COMPUTADOR QUE SE LLAMA TIMER-CALCULATOR QUE SIRVE PARA CONFIGURAR LOS TIMERS A LA FRECUENCIA QUE DESEEN Y EL TIEMPO QUE DESEAN LO RECOMIENDO www.mikroe.com/timer-calculator
PicTrance Hola, te refieres en la introducción? O después del intro? La primera parte no hablo hasta después del "que haremos", cuando dibujo si tengo problemas con el audio ( lo siento :c) después de eso cuando desarrollo el programa yo creo que se escucha bien o cuéntame en qué minuto para tenerlo en cuenta en el siguiente vídeo.
Hola ! :) me gustan tus videos, te hago una recomendación - petición, espero no te moleste, me agradaría que tus tutoriales los hicieras más básicos
Ejemplo uno de LED como los que has subido, después uno ahora con varios LED’S
Después uno de como mover un motor por ejemplo y después otro como este que acabas de subir implementando el motor y otras cosas
Ya que habemos muchos que recién empezamos y creo yo sería más sencillo y detallado entender como hacer funcionar distintos componentes o materiales electrónicos con este microcontrolador pero componente por componente :( no varios a la vez
Espero me haya dado a entender jeje disculpa mi atrevimiento 😅 saludos y sigue así :)
Juan Hola :) gracias por comentar, primero no me molesta, me ayuda a mejorar los vídeos. Entiendo el punto, pero me podrías ayudar con algunas ideas por ejemplo he hecho con un led y leds, con display 7seg, con lcd, o te refieres a entender los temas como un Timer 0 con un Led (sin motor ni LCD)? Me cuentas :)
Wels muchas gracias por no ignorar 😁
Pues una de servomotores estaría genial ! No se qué tan complicado sea jeje pero estaría muy bien, aunque insisto, ejemplo sencillo y detallar hasta lo más “tonto” de la programación hacia el servo y no hacer varias cosas a la vez
En una segunda parte agregar más cosas y componentes al programa no estría nada mal :)
También para infrarrojos sería genial (emisor - receptor)
Tal vez videos explicando RUTINAS para varias cosas pero no tan avanzadas
Así como rutina de mover un motor hacia la izquierda por 3s y enseguida hacia el otro lado y después apagado
Es un ejemplo
También adentrándose más estaría genial una construcción de algún proyecto básico como un carrito que evita obstáculos o cosas así que encuentra uno para Arduino pero con video previos de como hacer algunas rutinas de como te comentaba :)
De verdad disculpa tanto atrevimiento jeje solo es sugerencia
Sigue así muchas gracias y saludos !!! 😅
Y en cuanto a lo que dices del LED pues como te digo me refiero a que si vamos a aprender motor pues que sea motor nada más, porque si metemos más cosas como la lcd o extras, hay confusión cuando se programa y dudas de en si como programar el motor
Hola, estoy estudiando una ingenieria y en tus videos he aprendido mucho, de verdad vale mucho la pena cada video!!!, muchas gracias
Buenísimo.... ya hemos visto muchos Tutos de blinks leds... usar Timers e interrupciones es de gente Pro.... Se agradece la explicación en nuestro lenguaje nativo.
Saludos desde Colombia, muchas gracias, muy clara la explicación
que materiales utilizaste
en proteus como esta plasmado
muy buena explicación y si quisiera temporizar por 5 minutos el encendido del motor como lo haria ya que lo hiciste calculando el tiempo de temporizado, asi que mi duda es si puedes usar ese mismo tiempo para temporizar durante 5 minutos el motor.
5 minutos es bastante, lo que podrías hacer es que tu timer genere interrupciones de 1 segundo. Y que una variable vaya aumentando cada segundo, cuando esta variable sea igual a 60 quiere decir que han pasado 60 veces 1 segundo. Podrías calcularlo para 5 minutos. Un abrazo
Gracias wels eres genial!:,)
ojalá no dejes de hacer videos:c
No lo haré :)
El tema del mensaje terminado que t vuelve a aparecer, es porque veo que activas tu interrupción mediante la deficion de TMR0H y L, el cual podrías dejarlo en el setup del timer y para activar el timer inmediatamente al momento de encender el motor, podrías usar el registro TMR0ON. El cual cuando evalúas la ISR del timer por desborde lo puedes desactivar y así certificar que la temporozacion queda asociada a la acción del pulsador
Muchas gracias Wels, esperaba este video desde hace tiempo, sigue haciendo videos con motores
Hola, explicas muy bien. Estoy realizando una programacion parecida con el pic18f4550 y dos motores que simulan dos bandas transportadoras con un contador, tengo 3 errores en la simulación... podria realizar un video de este programa?
Hola Ayelen tengo este video con pic18f4550 motores y timer, de repente te puede ayudar th-cam.com/video/DkpeCg24t9I/w-d-xo.html
Buen video Wels, una pregunta porque colocar al pre-escaler 256 y no otro valor como el 128, 64,32,16,8,4 o 2 que están en el data sheet ? y siempre tengo que restar del 65535? en el minuto 11:38
Luis hola, hice un temporizador de 3 segundos usando el timer 0 de 16 bits.
Primero que quiere decir de 16 bits, pues determina el número de conteos maximos que puede hacer nuestro timer en este caso es de 16 bits -> 2^16 = 65536, si fuera 8 bits sería -> 2^8 = 256 el numero de conteos máximo.
Segundo, al hacer un temporizador de 3 segundos usé esta formula -> 3segundos = 4/20MHz* Pre-escaler*(X+1), si tu reemplazas ese prescaler por un valor de 128 notarás que el valor de X será mayor a 65536 que es el conteo maximo que tiene el Timer, entonces elegí un pre escaler de 256 porque me daba un valor que estaba en el rango del contador máximo.
Sobre la resta, necesitaba una interrupción de desbordamiento para lo cual TMR0 = 65535 - X, los 65535 se obtienen por el timer de 16 bits, si nosotros usaramos un timer de 8 bits sería TMR0 = 255 - X.
Espero haberte ayudado, saludos.
Muchas gracias por la respuesta :)
Hola wels, excelente video. Como haría para trabajar con la interrupción del timer0 pero con baja prioridad?.
En el registro intcon2 encuentras el bit de prioridad del timer0 mándale cero
@@Wels_Theory gracias por la respuesta. Ya logré ponerlo a baja prioridad c:
Hola Wels.
Porqué hay un X+1 en la ecuación del temporizador? No encuentro eso en la FIGURE 11-2: TIMER0 BLOCK DIAGRAM (16-BIT MODE).
Porqué 65535-X es el valor del TMRH y TMRL? Hay algun lugar en el datasheet que explica eso?
para los que les sale error en el "void interrupt" cámbienlo por "void __interrupt () ISR_timer0(void)" solo para las versiones mas recientes de xc8
Es verdad eso! Gracias lili Infante 😊
Hola que tal, quisiera saber como le hago para que al presionar y dejar presionado un boton de entrada, me de en la salida un estado alto (1) y despues de un tiempo cambie a estado bajo( 0 ) se lo agradecería,gracias.
Hola que tal estan excelentes tus videos, me han servido mucho. Tengo una duda como lo podria hacer funcionar si en mi configuracion estoy poniendo 48MHz en el XTAL_FREQ?
buen tutorial! una pregunta, dentro de la rutina de interrupción, ¿no es necesario poner a 0 el bit TM0IF manualmente?
Si es necesario colocarlo en 0 manual para apagar esa interrupción o mejor dicho para decir que fue atendida
Buen vídeo, puedes hacer un temporizador programable en segundos, minutos y horas con PIC18F4550, sería estupendo para encender motores dc 9 V, saludos
Amigo, en vez de configurarlo para 3 segundos, es posible poner el tiempo con un teclado matricial 4x4?
Wels. La libreria que usas del LCD quien lo proporciona? Y por que lo añades tanto en SOURCE FILE Y HEADER FILE? Cual es la diferencia?
Yo modifiqué esa librería del LCD, en la descripción están los archivos. El header file es donde defino variables y funciones que haré. Source file es donde creo la lógica que tiene esas funciones.
Por ejemplo: en Header digo que defina la funciona Suma(int a, int b); En Source le doy la lógica a la función Suma(){a + b;}
AH YA! Gracias por la respuesta wels.
donde encuentro el circuito?
Tendrás el archivo de proteus para simulación?
.
Minuto 10:40
¿De qué parte del datasheet obtuviste la fórmula?
No es necesario poner if(INTCONbits.TMR0IF) ya q se supone q cuando se levante la bandera, automáticamente el programa saltará a la interrupción
Si tuvieras más interrupciones como la de INT0 acá si podrías preguntar si esta o la de TMR0
No tendras videos trabajando el pic 18f4550 en assembler ?
No :( sólo en C
Hola, una pregunta, por que desactivas el habilitador de las interrupciones globales, y luego mas abajo lo vuelves activar?
Hola, en realidad creo que no debí desactivarla pero en ese momento pensé que era buena idea por si en algún momento ocurre una interrupción. Así que desactivo todo, establezco la configuración y luego vuelvo a activar las interrupciones
¿Cómo hago para activar el timer sin necesidad de un pulsador? Actualmente estoy haciendo un proyecto y necesito controlar el giro del motor de manera independiente.
Calculas el temporizador y activas las interrupciones, con eso cada vez que el tiempo pase te genera una interrupción y haces lo que necesitas
TMR0ON desde la función setup junto a los registros de conteo TMROL y H y ya queda enclavado desbordando periódicamente al tiempo que calculaste. Como tal solo con el registro TMR0ON lo pueden apagar y activar cuando quieras y donde requieras
Hi , can you say me what is 65535 and how have you calculate x ? Thank you
65535 is the resolution of timer (16bits) or 2^16= 65536
buenas tardes wels, cuando compilo me sale un error en la funcion de interrupcion, este : newmain.c:112:6: error: variable has incomplete type 'void'
void interrupt ISR_TIMER_0 (void)...... he estado leyendo en algunos foros y dicen que puede ser por la sitanxis enla version de xc8, yo tengo la version 2.00. Espero puedas ayudarme. Buen video!!!
Cámbialo por esto: void __interrupt isr_timer0 (void)
He agregado los __ (son dos). La versión del compilador es el que da el problema
Si gracias wels era eso :)
hola Wels. A mi tambien me sale ese mismo error y ya hice lo que sugeriste pero igual me sale error :(
@@jhonortega3661 no sé si aún te sirva pero me pasó igual y lo cambie por: void __interrupt () ISR_timer0
Como hago el temporizador a 10 min?
SI A ALGUNO LE INTERESA EXISTE UNA APLICACIÓN PARA EL COMPUTADOR QUE SE LLAMA TIMER-CALCULATOR QUE SIRVE PARA CONFIGURAR LOS TIMERS A LA FRECUENCIA QUE DESEEN Y EL TIEMPO QUE DESEAN LO RECOMIENDO
www.mikroe.com/timer-calculator
hola, para quue sirve el LAT ??
Para escribir en los puertos si es que quieres que salga un 1 o un 0
@@Wels_Theory muchas gracias, si estuve investigando , muy bueno tus tutoriales, gracias!!!!
cual es su correo ?
y el audio??
se oye mas el intro y tu casi no
PicTrance Hola, te refieres en la introducción? O después del intro? La primera parte no hablo hasta después del "que haremos", cuando dibujo si tengo problemas con el audio ( lo siento :c) después de eso cuando desarrollo el programa yo creo que se escucha bien o cuéntame en qué minuto para tenerlo en cuenta en el siguiente vídeo.
Buen video, lástima la señora que canta de fondo
🤣