Foro Sobre Pics

quedan advertidos, CCS y osciladores internos no se mezclan:enojado::enojado::enojado::enojado::enojado::enojado:

y ahi se me fueron 2 pines que servian de I/O :(

pues he utilizado el CCS y no es que me llame mucho la atencion tal vez porque estoy acostumbrado al assembler, perohe probrado el compilador en conjunto con proteus para simular lo hecho y todo me ha funcionado correcto.

lo mas dificil es empezar en un compilador nuevo, lo mas probable es que estes configurando algo mal en alguna directiva de inicio de configuracion....yo generalmente uso el wizard para esa parte y luego tiro el codigo.

recuerda que el CCS te permite anexar codigo en assembler, si utilizas esta funcionalidad, puedes configurar solamente en assembler lo que tiene que ver con la configuracion del oscilador y luego continuar con el programa hecho en C.
 
oye que quisiste decir con "una emulacion en un api"...los api's son instrucciones completamente reales que se usan para evitar repetir muchas veces el mimo codigo...y que proporcionan herramientas de trabajo muy utiles para los programadores...el mejor ejemplo de eso es el java...con sus apis puede hacer casi cualquier cosa...asi que de ninguna forma la palabra api se refiere en forma despectiva a algo...por eso la use...espero no haber sido mal interpretado.

Bueno pues lo de los apis parece ser como subrutinas generales.... asi que te doy la razon....bueno ambos hemos aprendido algo=)=)=)
 
pues he utilizado el CCS y no es que me llame mucho la atencion tal vez porque estoy acostumbrado al assembler, perohe probrado el compilador en conjunto con proteus para simular lo hecho y todo me ha funcionado correcto.

lo mas dificil es empezar en un compilador nuevo, lo mas probable es que estes configurando algo mal en alguna directiva de inicio de configuracion....yo generalmente uso el wizard para esa parte y luego tiro el codigo.

recuerda que el CCS te permite anexar codigo en assembler, si utilizas esta funcionalidad, puedes configurar solamente en assembler lo que tiene que ver con la configuracion del oscilador y luego continuar con el programa hecho en C.

No, ya habia hecho todos esos intentos y nada, ademas no es problema de programacion, porque a veces corria el programa y a veces no.... era mas un problema de divergencia del oscilador interno, que no se estabilizaba (con y sin power up timer).

Pero como les digo, oscilador externo, problema solucionado =)

y a mi pues no se me dificulta programar en assembler, lo que pasa es que hace mucho que no lo hago, y siempre me parecio harto (me parece q los que programan en assembler lo hacen mas por costumbre... o porque vean que saben assembler :p), C es mucho mas sencillo, tanto CCS como el HighC , mas sencillo manejar I/o, lcds, teclados, comunicaciones seriales, modulos usb, etc. etc.

Simplemente era aprender para enseñarle a alguien si ntener que enseñarle assembler :chino: para un proyecto de colegio, pero me engome. Muy facil de usar, asi tenga sus carajaditas como el oscilador interno.

eso si, despues me consigo otra referencia con osc interno y ensayo a ver que pasa :enojado:
 
pues tambien hay que tener en cuenta que al ser el PIC tan lento (usualmente 4 u 8 Mhz)
- veces el codigo que entrega el compilador no es MUY eficiente en relacion con el tiempo...
- aveces toca revisar, optimizar o REHACER el codigo desde adentro desde assembler para lograr terminar una tarea en un lapso de tiempo...
por ejemplo el CANBUS es bastante rapido!!!
 
pues tambien hay que tener en cuenta que al ser el PIC tan lento (usualmente 4 u 8 Mhz)
- veces el codigo que entrega el compilador no es MUY eficiente en relacion con el tiempo...
- aveces toca revisar, optimizar o REHACER el codigo desde adentro desde assembler para lograr terminar una tarea en un lapso de tiempo...
por ejemplo el CANBUS es bastante rapido!!!


este no es el caso, pues lo ensaye con un osc externo de 4MHz y daba bien, si fuera problema del codigo no deberia dar con ningunos 4MHZ, ni internos ni externos :chino:
 
este no es el caso, pues lo ensaye con un osc externo de 4MHz y daba bien, si fuera problema del codigo no deberia dar con ningunos 4MHZ, ni internos ni externos :chino:
yo me estaba refiriendo a:
-porque hay que saber assembler?

y claro que si puede ser problema de codigo porque el osc interno es configurado por el codigo, cierto??
algo tan sencillo como xt, hs, lvp mal configurados le pueden hacer inestable el PIC.
 
yo me estaba refiriendo a:
-porque hay que saber assembler?

pues no sobra saberlo para desembalarse, pero en mi caso, sacrificar dos pines fue la solucion y ya, sin tener que enredarme con assembler para nada.

2 pines vs assembler :p

obviamente es importante programar en assembler, pero no en todas las situaciones le importa a uno el consumo de ciclos o de potencia del pic, ni la rapidez de ejecucion.... hay ocasiones en las que uno simplemente quiere hacer algo y lo quiera hacer RAPIDO y para eso es que sirve el C, para salir de una de eso.
 
Bueno yo solo programo micros de motorola y desde hace dias me ha entrado el bicho de la curiosidad por trabajar con pics, asi que aprovechare el breve receso de la u y me iniciare con los pic y les estare contando que tal me va
suertes
 
Bueno yo solo programo micros de motorola y desde hace dias me ha entrado el bicho de la curiosidad por trabajar con pics, asi que aprovechare el breve receso de la u y me iniciare con los pic y les estare contando que tal me va
suertes

me parece muy bien lo de aprender de diferentes tipos de micros yo tambien he tenido ganas de probar los motorola porque solo he trabajado con pics y atmel, pero no me he decidido asi que seria interesante si crearas un tema para iniciar de cero con los motorola y asi existiria informacion de cada tipo de micros y asi cada cual podria aprender de ambos...
 
me parece muy bien lo de aprender de diferentes tipos de micros yo tambien he tenido ganas de probar los motorola porque solo he trabajado con pics y atmel, pero no me he decidido asi que seria interesante si crearas un tema para iniciar de cero con los motorola y asi existiria informacion de cada tipo de micros y asi cada cual podria aprender de ambos...

Me parece muy buena idea, me pondre en eso y les comentare
 
Hola muchachos necesito su ayuda

Estoy tratando de hacer un contador ascendente con display que le pueda fijar un valor ej:; 100 y q comience a decrementar con un pulsador hasta llegar a 0 y cuando llegue a 0 encienda un rele q dure 3 segundos encendido y se apague y vuelva a cargar las variables osea ej: el mismo 100 q habia puesto y q si lo apague y lo encienda me guarde el ultimo dato en la eeprom.

Agradezco su colaboracion
 
Hola muchachos necesito su ayuda

Estoy tratando de hacer un contador ascendente con display que le pueda fijar un valor ej:; 100 y q comience a decrementar con un pulsador hasta llegar a 0 y cuando llegue a 0 encienda un rele q dure 3 segundos encendido y se apague y vuelva a cargar las variables osea ej: el mismo 100 q habia puesto y q si lo apague y lo encienda me guarde el ultimo dato en la eeprom.

Agradezco su colaboracion

bueno primero que todo que tipo de microcontrolador estas usando?
segundo, que tipo de display piensas usar? LCD o 7 segmentos?

bueno lo de decrementar un contador desde un valor predeterminado es bastante sencillo y lo de activar un rele por tres segundos tambien, pero para darte un buen consejo debes especificar las anteriores dos preguntas para asi determinar la mejor forma de hacerlo......si tienes ya un codigo desarrollado, postealo junto con tus dudas y sera mucho mas facil y educativo desarrollarlo....
 
Primero muchas gracias por responderme
Aver te cuento descargue un codigo para un contador de 4 digitos para un 16f84 lo cuadre para 3 digitos lo simule en proteus con el mismo controlador y funciono bien, el avance y todo, luego cuadre los puertos para el 16f873 lo queme y no me funciono le cacharie y por fin pude ver los ceros pero de ahi no he podido hacer mas
el codigo es este
Pienso usar 7 segmentos y compre un 16f873
 

Archivos adjuntos

  • contador.txt
    5.7 KB · Visitas: 369
cual fin de semana??

no ya hice ese proyecto

Ahora necesito ayuda para hacer un tacometro con displays q me cuente las rpm de un eje


Agradezco su ayuda amigosssssss!!!!!!!
 
Excelente hilo.

Hace casi un año que dejé de programar PICs, pero tengo varios proyectos pendientes.
Ojalá pueda retomarlos en cuanto tenga suficiente tiempo disponible.
 
bueno hay dos formas de hacerlo.

la primera es utilizar un swith magnetico fijo y sobre el eje un iman pequeño el cual cerrara el suiche cada vez que de una vuelta; la otra es utilizar un encoder con sensores infrarojos en el cual se pueda obtener mas de un pulso por vuelta, depende del tipo de eje y la exactitud que necesites. eso en cuento al hardware.

para capturar los pulsos del sensor en el pic tambien se puede hacer de dos formas, una de ellas es utilizar la interrupcion del RB0 y calcular cuanto tiempo transcurre entre un pulso y otro mediante un timer hardware mas uno de software para ampliar los rangos de medida.
la otra forma es utilizar el modulo CCP del pic y configurarlo en modo de captura de tal forma que capture el tiempo transcurrido por si mismo, en cuanto a esta opcion se refiere puede ser mas facil que la primera pero mucho mas rigida debido a las limitaciones en el rango de captura. la primera opcion es mas compleja pero permite adecuar la medida a rangos de frecuencia mucho mas amplios.

ya luego de procesar la informacion lo de menos sera mostrarla ya que lo puedes hacer mediante 7 segmentos, como tu proyecto anterior o mediante un lcd.
:)
 
GRacias

hola
pues yo habia pensado hacerlo poniendole unos agujeros un ejemplo hacerle un disco con 30 huecos y luego multiplicarlo por 2 y me da 60 y luego mostrar en el display y poner a escanear 1 ms


no se

Si tu tienes uno porfaaaaaaaaaa y yo lo miro Muchas gracias
 
basicamente tu idea es un encoder, eso esta bien, respecto a los agujeros depende de como escanees los pulsos, pero te aconsejo utilizar un el modulo de captura para medir el tiempo exacto entre pulsos y con esta informacion haces el calculo de las rpm, si utilizas el modulo de captura no es necesario tal cantidad de orificios seria aconsejable no mas de cuatro. anque esto depende de la cantidad minima y maxima de rpm a medir.

si quieres una forma sencilla simplemente cuenta cuantos pulsos recibes por segundo y multiplica por 60, pero debes tener un temporizador como referencia en segundos.

otra forma mas exacta ya que se hace una medida instantanea en intervalos mas cortos de tiempo es la siguiente:

por ejemplo
si pones cuatro orificios en el encoder vas a tener 4 pulsos por vuelta, si capturas el tiempo transcurrido entre pulso y pulso (con el modulo de captura) vas a obtener un periodo X en mili o microsegundos.

este periodo lo multiplicas por cuatro (porque cuatro son una vuelta) lo que te dara un aproximado instantaneo de tiempo por vuelta, luego divides 1 entre el valor de tiempo que te diio y el resultado lo multiplicas por 60 (segundos) y listo ese es el valor instantaneo de RPM.

parece algo muy complejo pero la verdad no lo es, mira el datasheet y encontraras la forma de hacerlo o busca codigo fuente en la pagina de microchip.
si nunca has manejado el modulo de captura pues empieza, ya que es algo que facilita mucho este tipo de aplicaciones.
 

Los últimos temas