Curso de programación de PIC en PICBasic Pro

Estuve leyendo y no encuentro nada parecido por favor algún ejemplo o modificaciones que se pudiera hacer al código para aplicar interrupciones y codificación manchester , porfabor
 
Acaso creen que copie el codigo, no saben lo que me costo hacer la comunicacion, como vi que explican a otros cosas mas elementales hasta le dan ejemplos hasta realizan su codigo, yo solo pedi una idea o ejemplo donde yo lo pudiera modificar o agregar ya que no sabia por donde empezar, pero estoy leendo y buscando segun las sugerencias, antes de emitir un comentario insensato, primero ai que valorar el esfuerzo de los que recien se inician, pero vale la acotacion como les dije estoy investigando y leendo ojala lo consiga gracias igual D@rkbytes que fue el unico que emitio un comentario con aportes
 
No te molestes, pero es que primero debes cambiar tu programa con lo que se te ha sugerido.
Cuando lo hagas, y si tienes problemas, se podrá revisar para encontrar posibles errores.

Tu programa actual no es muy grande, pero sí bastante mal elaborado, y es un hecho que se puede mejorar.
Así qué, realiza los cambios con lo que se te ha sugerido y si tienes problemas, lo publicas, mencionando tus problemas.

Si no eres tú quien realice esas mejoras, nadie lo hará por tí.
Y si nadie más ha sugerido mejoras a tu programa, es porque no has hecho caso sobre lo que se te ha dicho, y seguramente están esperando a que lo hagas.
 
Hola...Aunque no es un ejemplo de PBP ya que no lo tengo instalado, es en Proton Basic.
Enciende un led después de 100 mili segundos y cuando cualquiera de los botones del puerto B desde 4 a 7 cambie de estado(de alto a bajo o de bajo a alto) durante 1 segundo lo mantiene encendido para después mandar a dormir al micro controlador hasta que ocurra el próximo cambio de estado en dichos pines.
No lo probé en físico pero en el simulador funciona y a fin de tener una ejemplo(era lo que buscabas) te servirá.
Saludos.

Ric.
 

Adjuntos

  • TestSleep.rar
    142 KB · Visitas: 42
gracias, si lo estoy haciendo sabia que mi programa estaba muy mal elaborado es uno de los primeros que realizo siguiendo mi propio criterio, es muy dificil para mi ya tengo problemas con el ingles estoy leendo el manual y tratando de entender como activar las interrupciones usar la interrupcion RCIE: USART Receive Interrupt Enable bit, y la otra TXIE: USART Transmit Interrupt Enable bit, del registro PIE, voy realizar la activacion, hacer la declaracion en microcode, y tratar de acomodar el programa, para este en reposo el RX/TX cuando no se este pulsando nada, y que solo trasmita cuando se pulse cualquiera de las 4 entradas.

El tema del alto consumo tambien creo que pasa por usar el regulador 7805 con bateria de 9V, mucha enerjia se pierde en calor, optare por usar los modulos reguladores de voltaje step down, no se si sera la mejor opcion.
 
Última edición:
Si continuas así, vas por muy buen camino. Porque usar las interrupciones es algo imprescindible.
Mejoran bastante el desempeño de un programa.

En cuanto al consumo de un PIC, es mínimo, lo que consume energía son los dispositivos que controla.
Y puedes controlar cargas de la potencia que requieras. (Previa Interfaz)
Un PIC puede funcionar correctamente con un regulador 78L05 (100 mA Max)
Pero lo que debes ver, es el consumo externo requerido y optar por una fuente de poder bien diseñada.
Puede ser, Step-Up "Boost Converter" o Step-Down "Buck Converter"
Ambos métodos son aceptables y son mucho mejor que una fuente de poder con transformador.
Reducen tamaño y consumo, por ende, mejor rendimiento. Y si es Off-Line, mejor, pero depende el tipo de sistema.
 
el problema fue que el programa como esta lo deje conectado un dia entero en el receptor solo tengo leds conectados, pero durante el dia no pulse nada y la bateria de 9v recargable se me descargo en un solo dia, lo cual me parece que es muy poco tiempo. Estoy usando bateria recargable de 9v en trasmisor y receptor igual. teniendo en cuenta lo que dices en cuanto al consumo del pic es muy poco no entiendo porque me duro tan poco la bateria.
 
consulta talves sea elemental para ustedes pero a mi esta dando unos problemas esta duda:

realizando el codigo del pic en microcode studio especificamente del 16F628A.
1. Sino hago uso del las declaraciones de los puertos para que sean entradas ni saldidas en los 2 puertos
osea no hago uso de TRISA ni TRISB como lo asume el programa.
2.Si declaro TRISB = %00000000 enque estado se pone los pines que no se les programa tarea alguna, osea que quedaran libres.
3.Los pines libres como es combeniente dejarlos, en cuanto a consumo, ruidos, interferencias o falsos.
 
Al usar las instrucciones TRISX = %00000000 (Todo el puerto será configurado como salidas)
Y con TRISX = %11111111 (Todo el puerto será configurado como entradas)
Un 1 establece entrada y un 0, salida.

El valor que tomen si no se establece alguno, se puede ver en la hoja de datos, y se da en el POR (Power On Reset)

Ahora, cuando se usan las instrucciones Low Pin y High Pin, no tiene caso hacer uso de TRIS.
Porque esas instrucciones hacen al pin indicado, salida.

PD: El programa de Ricbevi está más orientado al PBP que a Proton.
Porque en Proton Basic no hay motivo de declarar los bits de los registros, ya que se pueden usar directamente.
Por ejemplo:
INTCONbits_GIE = 1

Y ya orientado al Basic de Proton...
PHP:
    INTCONbits_GIE = 1      ' Activar las interrupciones globales
    INTCONbits_PEIE = 1     ; Activar la interrupción de los periféricos.
    OPTION_REGbits_RBPU = 0 ' Habilita las resistencias Pull-up del puerto B
    INTCONbits_RBIE = 1     ' Habilta las interrupciones por cambio de estado PORTB[4..7]
 
El programita que subí esta basado en el ejemplo que trae el mismo Proton en su instalación.
Efectivamente si Proton reconoce el nombre puesto como el de un registro, cambia de color en el editor y no sería necesaria su declaración previa ya que fue reconocido.
Al mismo pin lo puedes usar como entrada y salida (si el micro lo permite y depende de la función que le darás).
Generalmente el compilador cambia solo el estatus del registro TRIS según interprete que lo estas usando como entrada o salida.
Para no dejar dudas al respecto a mi personalmente me gusta declara todo y dejar lo menos posible a la libre interpretación.


Ric.
 
Para no dejar dudas al respecto, a mi personalmente me gusta declarar todo y dejar lo menos posible a la libre interpretación.
Lo cual es muy correcto sin entrar en redundancias que a final de cuentas nada más nos hacen escribir código extra sin función útil.
Es correcto que se declaren cosas que no están definidas, pero las que ya son nativas, ni al caso, se usan y se ejecutan directamente.

Y te voy a ser sincero al hablar de PBP a Proton, Proton es mucho mejor al PBP.
Proton cuenta con una optimización de código superior a PBP. (Y hasta permite el uso de variables Float)
Tiene muchas más instrucciones, porque su estructura está orientada al Visual Basic.
Ambos disponen el uso directo de los registros y también se puede agregar lenguaje ensamblador.
Pero, Proton es más amigable es éste aspecto, porque ya los tiene declarados como algo nativo.
Al igual que usar XC o al mismo ensamblador.

Ventajas entre los varios lenguajes hay muchas, lo que se debe tener en cuenta es saber usar lo que se tiene o se sabe.
 
creo que es hora de migrar a proton.......

No te desalientes solo te falta perseverancia y seguir buscando las alternativas o soluciones que le encuentres.
Yo uso Proton por costumbre ya que lo hago desde hace bastante tiempo pero la herramienta no lo es todo en esto.
Debes ponerte en el "lugar" del micro controlador y realizar mentalmente los pasos uno a uno que tu mismo le propones con tu programa.
Revisa programas desarrollados por otros(incluyendo los de la ayuda de los compiladores) en la tematica para así tener otras miradas/alternativas de resolución del mismo problema de distinta forma y evalúa las ventajas y desventajas de hacerlo de esa forma u otra.
Saca tus propias conclusiones y prueba las. Tienes una herramienta invaluable que son los simuladores para tener una idea de por donde va la cosa sin quemar, romper, etc. nada.
Si un programa es complejo, divídelo en pequeñas rutinas y después trata de compatibilizarlas todas.
Recuerda que en realidad solo tu resolverás esto a lo que estas abocado, nosotros solo podemos aconsejarte en base a nuestros saberes.

Ric.
 
hola antes de pasar a la codificacion manchester, quiero mostrarles el avance, pues el programa es para un control remoto a distancia, y la idea es que el microcontrolador solo este en trabajo o lo que quiero conseguir esque tenga consumo solo cuando este pulsada una tecla o mas de no haber nada pulsado los pic entres en modo sleep para ahorrar el consumo de labateria. antes de entrar a reposo en el programa principal el led parpadea 10 veces, de no haber nada pulsado durante esos 10 parpadeos intermitentes, los pic entran a sleep.

pues bien segui los consejos y use interrupciones en el trasmisor la del cambio de estado RBIE: RB Port Change Interrupt Enable bit junto con RBIF: RB Port Change Interrupt Flag bit, y en el receptor INTE: RB0/INT External Interrupt Enable bit y para ambos GIE: Global Interrupt Enable bit, el tema es que sin sleep funciona bien y con el sleep no funciona como debe de ser, aver si aqui me dan una ayuda porfabor.

Pregunta: tiene algo que ver los pines usados para el RX en el receptor ya que antes usaba RB1/RX ahora uso RB0/INT para poder usar la interrupcion al recepcionar un cualquier dato.
 

Adjuntos

  • RF 4 bits probado_2.rar
    84.2 KB · Visitas: 44
Atrás
Arriba