TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: afta en 12 de Septiembre de 2021, 02:42:59

Título: Conmutacion-Programa
Publicado por: afta en 12 de Septiembre de 2021, 02:42:59
Hola a todos.

Estoy haciendo un programa para un estabilizador y quisiera determinar que salida de un autotransformador debe activarse.

El control de la tension de entrada lo estoy haciendo con el canal analogico 0 del PIC para hacer los cortes por subtension o sobretension. Esta parte funciona correctamente(170V a 268V).

El problema se me presenta al intentar hacer las conmutaciones con base en la lectura de la tension de salida mediante el canal analogico1.

Mi programa usa una interrupcion por cambio de nivel en uno de los pines del PIC. Al producirse la interrupcion se activa la salida correspondiente del autotransformador y se lee por el canal 1 la tension de salida. Los valores leidos para cada salida del autotransformador los estoy guardando en la EEPROM del PIC. Estos valores son muy cercanos a 220V.

Esto es porque para cada salida, la conmutacion se hace cuando en la entrada tengo un nivel de tension tal que a la salida correspondiente tenga 220V.

Pensaba usar esas lecturas equivalentes a 220V y hacer las conmutaciones restando 4V y sumando 13V para que la salida se mantenga
entre 216V y 233V pero no lo he podido hacer bien.

RC2,RC3,RC4 y RC5 se activan pero en los intervalos incorrectos y solo al encender el equipo. Si voy variando la tension llega un punto en el cual se desactivan y los demas se activan secuencialmente hasta que se apaga y ya no hace nada. RC0 y RC1 nunca se activan.

Dejo el fragmento del programa por si lo pueden checar y hacerme las correcciones de las cosas que estan mal. Gracias.


combinacion=0b00000001; 
PORTC = combinacion;    // Habilitar pin RC0

Control:

        obtenerPico(0);  // Leer tension de entrada

        if(valorPico<310 || valorPico>496) //310 a 170V y 496 a 268V
        {
           goto InhibirTriacs; //Si el voltaje de entrada esta fuera de rango se inhiben los triacs.
        }
        else if( valorPico > 325 && valorPico < 449)  // Si la tension de entrada esta dentro del rango medir la tension de salida
        {
           for(direccion=10;direccion>=0;direccion-=2)
           {
              obtenerPico(1);                                                               // Leer tension de retroalimentacion del canal 1
              lecturaAlmacenada = EEPROM_Read_Int(direccion);          // Leer EEPROM en la direccion actual y asignar valor a
                                                                                                   //    lecturaAlmacenada
              if(valorPico > (lecturaAlmacenada-13) && valorPico < (lecturaAlmacenada+45))  // 13 es equivalente a 4V y 45 a 13V
              {
                 break;
              }

              else
              {
                 combinacion<<=1;
                 PORTC=combinacion;  // habilitar siguiente combinacion
              }

           }  // for

        } // else if

        goto Control;
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 12 de Septiembre de 2021, 15:42:38
Hola a todos.

Estoy haciendo un programa para un estabilizador y quisiera determinar que salida de un autotransformador debe activarse.

El control de la tension de entrada lo estoy haciendo con el canal analogico 0 del PIC para hacer los cortes por subtension o sobretension. Esta parte funciona correctamente(170V a 268V).

El problema se me presenta al intentar hacer las conmutaciones con base en la lectura de la tension de salida mediante el canal analogico1.

Mi programa usa una interrupcion por cambio de nivel en uno de los pines del PIC. Al producirse la interrupcion se activa la salida correspondiente del autotransformador y se lee por el canal 1 la tension de salida. Los valores leidos para cada salida del autotransformador los estoy guardando en la EEPROM del PIC. Estos valores son muy cercanos a 220V.

Esto es porque para cada salida, la conmutacion se hace cuando en la entrada tengo un nivel de tension tal que a la salida correspondiente tenga 220V.

Pensaba usar esas lecturas equivalentes a 220V y hacer las conmutaciones restando 4V y sumando 13V para que la salida se mantenga
entre 216V y 233V pero no lo he podido hacer bien.

RC2,RC3,RC4 y RC5 se activan pero en los intervalos incorrectos y solo al encender el equipo. Si voy variando la tension llega un punto en el cual se desactivan y los demas se activan secuencialmente hasta que se apaga y ya no hace nada. RC0 y RC1 nunca se activan.

Dejo el fragmento del programa por si lo pueden checar y hacerme las correcciones de las cosas que estan mal. Gracias.


combinacion=0b00000001; 
PORTC = combinacion;    // Habilitar pin RC0

Control:

        obtenerPico(0);  // Leer tension de entrada

        if(valorPico<310 || valorPico>496) //310 a 170V y 496 a 268V
        {
           goto InhibirTriacs; //Si el voltaje de entrada esta fuera de rango se inhiben los triacs.
        }
        else if( valorPico > 325 && valorPico < 449)  // Si la tension de entrada esta dentro del rango medir la tension de salida
        {
           for(direccion=10;direccion>=0;direccion-=2)
           {
              obtenerPico(1);                                                               // Leer tension de retroalimentacion del canal 1
              lecturaAlmacenada = EEPROM_Read_Int(direccion);          // Leer EEPROM en la direccion actual y asignar valor a
                                                                                                   //    lecturaAlmacenada
              if(valorPico > (lecturaAlmacenada-13) && valorPico < (lecturaAlmacenada+45))  // 13 es equivalente a 4V y 45 a 13V
              {
                 break;
              }

              else
              {
                 combinacion<<=1;
                 PORTC=combinacion;  // habilitar siguiente combinacion
              }

           }  // for

        } // else if

        goto Control;

Hola, no entiendo muy bien el problema, pero lo que si te recomiendo es no usar 'goto' en lenguaje C.

Crean algo que denominaba código espagueti o algo así. No recuerdo el nombre correcto. En el pasado, los lenguajes de programación no tenían bucles while, declaraciones if, etc., y los programadores usaban goto para crear la lógica de sus programas. Pero sé que 'goto', conduce a un desorden, que insostenible. Es posible que funcione bien, pero tampoco hay garantía que no tengas problemas en el futuro.

Título: Re:Conmutacion-Programa
Publicado por: afta en 12 de Septiembre de 2021, 17:20:47
Hola bueno lo que quiero hacer es un programa  que controle la conmutacion de las salidas de un autotransformador detectando si la tension en la carga esta entre 212V y 229V.

Gracias por lo del goto. Solo lo uso en esa instruccion
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 12 de Septiembre de 2021, 17:31:10
Hola.

Creo que más o menos comprendo lo que quieres hacer, deberías expresarte lo más simple, sin tanta literatura, o utilizando diagramas de flujo.

Lo que entiendo que quieres hacer es lo siguiente.

Tienes un autotransformador, con salidas para amplificar el voltaje, una para una relación 1:1 y otras salidas para reducir el voltaje.

La entrada del autotransformador es analizada por la entrada analógica de un MCU.

En función de ese voltaje, tu activas una sola salida del transformador, mediante SCRs, para "regular" el voltaje sobre una carga.

¿estoy en lo correcto?

Si es así ¿Qué problema tienes?
Título: Re:Conmutacion-Programa
Publicado por: afta en 12 de Septiembre de 2021, 19:01:53
Con un canal del ADC leo la entrada y controle que este entre 170V y 268V. Aquí no tengo problema.

Lo que no se es como controlar que triac activar para que la tension de Salida este entre 212V y 229V. Es un estabilizador de lazo cerrado  ya que la muestra para el control de Los triacs  la tomo de la salida una vez conectado el triac.

He visto que hay otros que con las muestras de entrada  controlan los triacs pero yo necesito uno que lo haga tomando muestras de la salida. La muestra de entrada la uso solo para controlar subtension o sobretension.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 12 de Septiembre de 2021, 19:14:06
Con un canal del ADC leo la entrada y controle que este entre 170V y 268V. Aquí no tengo problema.

Lo que no se es como controlar que triac activar para que la tension de Salida este entre 212V y 229V. Es un estabilizador de lazo cerrado  ya que la muestra para el control de Los triacs  la tomo de la salida una vez conectado el triac.

He visto que hay otros que con las muestras de entrada  controlan los triacs pero yo necesito uno que lo haga tomando muestras de la salida. La muestra de entrada la uso solo para controlar subtension o sobretension.

O sea lo que tu necesitas es regular el Angulo de disparo del SRC y obviamente con eso controlar el voltaje sobre una carga resistiva ¿Verdad?

Si es así, ¿Para que necesitas el autotransformador?

Si compartieras un esquemático, simple, sin tantos detalles de tu proyecto se entendería mejor. (Una imagen es más que 1000 palabras)
Título: Re:Conmutacion-Programa
Publicado por: afta en 12 de Septiembre de 2021, 23:07:50
En la imagen se observa lo que quiero hacer. Controlar que triac debe activarse para que la salida se mantenga entre 212V y 229V.

Lo que necesito es alguna idea de como hacer el programa que haga esto.
Título: Re:Conmutacion-Programa
Publicado por: Robert76 en 13 de Septiembre de 2021, 07:21:47
Hola, en todos los sistemas que he visto de estabilizadores, utilizan relés cómo conmutadores, y tiene sus ventajas ante un TRIAC. Por ejem. robustez y no generan ruido eléctrico en el cruce por cero, cómo lo hace un TRIAC y eso, suele ser un grave problema, para ciertas cargas, sobre todo inductivas.
En fin, yendo al programa, lo que debe hacer es  arrancar siempre en el escalón más bajo, luego monitorear permanentemente  la salida, y en función de si está más bajo que... o mayor que, secuenciar a un escalón menor/mayor, según la lógica.
Aunque a tu sistema le falta una desconexión total, en caso de sobretensión/subtensión que están fuera del rango de estabilizar.
Título: Re:Conmutacion-Programa
Publicado por: KILLERJC en 13 de Septiembre de 2021, 07:34:31
No tiene ningún sentido monitorear la salida cuando tenes un autotransformador.

La relacion es fija y por lo tanto para no hacer mas cálculos de los necesarios, es mejor solo controlar la entrada.
Sabiendo que si esta dentro de ciertos rangos la tension, activar o desactivar los reles. En los estabilizadores mas simples esto se realiza con unos AO

2 Reles y tenes tu selector de 3 a 1

Y estaria faltando tambien una salida al autotrasformador que es la salida de alimentación del circuito de control.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 13 de Septiembre de 2021, 09:07:32
No tiene ningún sentido monitorear la salida cuando tenes un autotransformador.

La relacion es fija y por lo tanto para no hacer mas cálculos de los necesarios, es mejor solo controlar la entrada.
Sabiendo que si esta dentro de ciertos rangos la tension, activar o desactivar los reles. En los estabilizadores mas simples esto se realiza con unos AO

2 Reles y tenes tu selector de 3 a 1

Y estaria faltando tambien una salida al autotrasformador que es la salida de alimentación del circuito de control.

Pensaba que era algo obvio leer el voltaje de entrada para controlar los "interruptores", Killer tiene razón en lo que afirma.

¿Qué circuito o como estás intentando activar los SRCs o no tienes idea de como hacerlo?

¿No es mejor y más fácil utilizar relés en lugar de SRCs?
Título: Re:Conmutacion-Programa
Publicado por: Robert76 en 13 de Septiembre de 2021, 09:25:56
Si monitoreamos la salida a la carga, sólo hace falta una lectura de ventana que indique, bajar un escalón o subir un escalón, hasta que la lectura esté dentro de lo que se espera.
Si monitoreamos la entrada, hay que generar 3 ventanas, una para cada escalón.
La ventaja de ésta última, es que puede saltearse escalones yendo de máximo a mínimo o viceversa según se requiera. Pero el programa es más complejo.
La ventaja de la 1ra. opción, es que el programa es simple, ya que sólo mira una ventana, pero es más lento para saltear escalones, ya que debe hacerlo de manera secuencial.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 13 de Septiembre de 2021, 09:45:28
Si, puede ser, analizado sería algo así:

1. Digamos que inicialmente el voltaje está dentro del rango normal, entonces el autotransformador está en una relación 1:1

2. El voltaje de entrada disminuye, lo detectas que está fuera de rango "normal" y decides amplificarlo, apango el relé que controla la salida 1:1 y conectado aquel que "amplifica" el voltaje.

3. Supongamos que el voltaje de entrada vuelve al rango normal, entonces en la salida del autotransformador "siente" el MCU que el voltaje está muy alto, así que desconecta el relé de "amplificación" y conecta el relé de 1:1

4. Suponiendo que aun sigue "sintiendo" que está muy alto el voltaje, conectaría el relé de "reducción" de voltaje.

Pueda que tengas razón.

Aquí la única precaución que debes tener es que cuando decides apagar y encender otro relé, no debes leer el voltaje de entrada puesto que ahí vas a tener "0" voltios y podrías pensar que el voltaje ha disminuido y debes "amplificarlo". O sea en esa transición debes bloquear la tarea que decide cuando activar los reles.

SI tu intención es seguir usando SCRs, creo que primero debes intentar con relés ver si funciona tu proyecto. Cuando veas que si funciona, ahí deberías intentar sustituir los relés por SRCs.

Un error común de crear un sistema, es que construyes todo y no sabes donde están las fallas. Si lo haces en partes, vas probando una por una, cuando logras superar una, pasas a la siguiente.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 13 de Septiembre de 2021, 09:54:16
En este momento volviendo a pensar, el problema que tendrías sería cuando tengas un voltaje tan grande, que aunque con el autotranformador lo estés reduciendo, siga siendo muy grande, y ahí deberías apagar los tres relés para proteger la carga, pero de esa manera tu propio circuito de control quedaría sin energía y se pagaría todo.

Y también en las transiciones entre relés, como dije antes tendrías un voltaje igual a cero. Tu circuito de control debería tener un respaldo de energía durante esas transiciones, pueden ser lo capacitores electrónicos de las fuentes o un super capacitor, sobre todo en la alimentación del microcontrolador.

¿Otra pregunta es como inicia tu sistema cuando aplicas energía por primera vez? Porque mientras esté apagado todo, los SRCs/relés no está activados, al aplicar energía, el circuito de control también está apagado y por lo tanto no funcionaría para nada.
Título: Re:Conmutacion-Programa
Publicado por: Robert76 en 13 de Septiembre de 2021, 12:08:19
Buena pregunta, es por ello que el sistema se alimenta de una tensión independiente del autotransformador en éste caso.
Y vuelvo a repetir, le falta añadir otro relé más a la salida a la carga, por si la tensión está fuera de los rangos de regulación.
Título: Re:Conmutacion-Programa
Publicado por: afta en 14 de Septiembre de 2021, 05:43:07
Hola a todos gracias por su tiempo.

El circuito de control esta alimentado con otra salida del autotransformador.

Hice un Sistema que me mida la tension en la carga porque lei que esto lo hace mas robusto si cambia la carga. Segun averigué leyendo solo la tension de entrada podría tener problemas si la carga cambia.

Logre que regule pero cuando se apaga por subtension y subo el voltaje para que vuelva a regular ya no vuelve a encender y se queda apagado aunque debiera estar regulando. Solo pasa en el corte por subtension; del corte por sobretension si retorna con normalidad. No sé si falte mejorar la regulacion.
 
Título: Re:Conmutacion-Programa
Publicado por: Robert76 en 14 de Septiembre de 2021, 07:11:33
Publica tu código para ver el fallo.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 14 de Septiembre de 2021, 09:11:57
Hola a todos gracias por su tiempo.

El circuito de control esta alimentado con otra salida del autotransformador.

Hice un Sistema que me mida la tension en la carga porque lei que esto lo hace mas robusto si cambia la carga. Segun averigué leyendo solo la tension de entrada podría tener problemas si la carga cambia.

Logre que regule pero cuando se apaga por subtension y subo el voltaje para que vuelva a regular ya no vuelve a encender y se queda apagado aunque debiera estar regulando. Solo pasa en el corte por subtension; del corte por sobretension si retorna con normalidad. No sé si falte mejorar la regulacion.

Ese problema, me suena a que tu autotransformador, o la fuente principal de energía, tiene una impedancia de salida tan grande respeto a la carga que cuando baja el voltaje, por más que deseas amplificar, esa impedancia provoca una caída de voltaje, y por eso con sobre voltaje no tienes problemas.

Manualmente deberías conectar la salida que amplifica el voltaje cuando la entrada está baja y medir sobre la carga si el voltaje esta siendo amplificado a un valor correcto  y si la carga funciona correctamente.

Título: Re:Conmutacion-Programa
Publicado por: Miguelyx en 15 de Septiembre de 2021, 02:10:44


Hola, no entiendo muy bien el problema, pero lo que si te recomiendo es no usar 'goto' en lenguaje C.



Me parece la eterna chorrada, llevo leyendo lo mismo desde que empece a programar, es un debate que no tiene fin, unos lo consideran dañino y otros esencial, pero al final me parece una cuestion de simple estetica porque no ​he visto jamas ni un solo error por usar goto en C.

Solo hace daño a la vista, pero si esta implementado es completamente funcional, es mas, la sencillez de usar goto en C es su caracteristica principal con respecto a saltar a otras partes sin goto.


Me he pasado de Basic a C hace cierto tiempo porque Basic esta mas muerto que el sumerio, pero he transformado programas de Pascal a Basic y sobre todo de C a Basic desde que me visto solo y jamas he visto que cause error alguno usar goto, ni en Basic, ni en C ni en Pascal, si alguien puede mostrarme que problemas conlleva usar goto en C que me lo diga porque yo no soy capaz a ver que problemas causa, todo lo contrario, lo encuentro muy util.
Título: Re:Conmutacion-Programa
Publicado por: Nocturno en 15 de Septiembre de 2021, 02:44:01
El problema de los GOTO no es que fallen o que dejen de funcionar, la pega es que para entender un programa diseñado así hay que rastrear los saltos y, si no está muy bien hecho, es fácil perderse.
Con programación estructurada, como se propone en lenguajes como C o Pascal, todo el flujo de funcionamiento queda mucho más ordenado.

Pero para gustos, los colores. Puedes seguir usando el GOTO si lo prefieres.
Título: Re:Conmutacion-Programa
Publicado por: Eduardo2 en 15 de Septiembre de 2021, 06:41:30
El tema del GOTO arranca el día que a Dijkstra se le ocurrió escribir "Go To Statement Considered Harmful".  A partir de ahí un ejército de adoradores rechazó el GOTO con argumentos falaces como que genera un código espagueti ilegible mientras que con programación estructurada son mas legibles.  Vamos!  que un código espagueti es tan ilegible como uno estructurado donde las llaves que se abren se cierran dos páginas después, por bien indentado que esté.
La ilegibilidad no la dá el goto sino su abuso y las etiquetas poco descriptivas, y lo mismo pasa con el anidamiento excesivo de if, whiles, etc. 
Título: Re:Conmutacion-Programa
Publicado por: Nocturno en 15 de Septiembre de 2021, 06:44:34
Totalmente de acuerdo: si el programa no está bien diseñado será difícil de leer, con GOTO y o sin él.
Título: Re:Conmutacion-Programa
Publicado por: KILLERJC en 15 de Septiembre de 2021, 07:43:09
El tema del GOTO arranca el día que a Dijkstra se le ocurrió escribir "Go To Statement Considered Harmful".  A partir de ahí un ejército de adoradores rechazó el GOTO con argumentos falaces como que genera un código espagueti ilegible mientras que con programación estructurada son mas legibles.  Vamos!  que un código espagueti es tan ilegible como uno estructurado donde las llaves que se abren se cierran dos páginas después, por bien indentado que esté.
La ilegibilidad no la dá el goto sino su abuso y las etiquetas poco descriptivas, y lo mismo pasa con el anidamiento excesivo de if, whiles, etc.

Entonces no es tan estructurado xD

Y eso nos lleva a que si esta bien organizado el programa, el goto solo es aplicable a algunos casos nomas.
Generalmente se busca "prohibir" a aquellos nuevos en programación para que aprendan a no abusarlo y arreglen todo con goto's. Por eso mismo se da la indicación de no usarlo. Pero no quita que en algunos momento es la unica opcion viable.

Y NOS FUIMOS DEL TEMA PRINCIPAL!
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 15 de Septiembre de 2021, 09:05:17
El problema de los GOTO no es que fallen o que dejen de funcionar, la pega es que para entender un programa diseñado así hay que rastrear los saltos y, si no está muy bien hecho, es fácil perderse.
Con programación estructurada, como se propone en lenguajes como C o Pascal, todo el flujo de funcionamiento queda mucho más ordenado.

Pero para gustos, los colores. Puedes seguir usando el GOTO si lo prefieres.

Pueda que tengas razón, supuestamente bien utilizado no daría problemas. Yo en casi 11 años trabajando en sistemas embebidos con C nunca he utilizado, ni he sentido la necesidad de usarlo. Tampoco he visto en los ejemplos y las librerías del fabricante escritas en C y C++.

No conozco las propiedades del compilador PICC, tal vez el compilar NO obedece las normas establecidas para el lenguaje C y permite utilizarlo sin muchos problemas
Título: Re:Conmutacion-Programa
Publicado por: Miguelyx en 15 de Septiembre de 2021, 11:35:11

Supongo que depende de la complejidad del programa, encontrar en una libreria un goto seria ya el colmo porque una libreria se compone de bastantes funciones que es facil evitar un goto porque son muy pocas lineas de pogramacion para cada funcion, pero imaginate un programa de 32k o 64k, la de programacion que hay ahi metida, seria de bastante logica que se usen gotos.
Título: Re:Conmutacion-Programa
Publicado por: Picuino en 15 de Septiembre de 2021, 11:38:42
El goto es muy común en C para realizar la gestión de errores:

Código: C
  1. do_stuff(thingy) {
  2.     lock(thingy);
  3.  
  4.     foo;
  5.     if (foo failed) {
  6.         status = -EFOO;
  7.         goto OUT;
  8.     }
  9.  
  10.     bar;
  11.     if (bar failed) {
  12.         status = -EBAR;
  13.         goto OUT;
  14.     }
  15.  
  16.     do_stuff_to(thingy);
  17.  
  18. OUT:
  19.     unlock(thingy);
  20.     return status;
  21. }


Ejemplo en el código de linux (línea 19):
https://github.com/torvalds/linux/blob/master/fs/btrfs/async-thread.c
Código: C
  1. static inline void thresh_exec_hook(struct __btrfs_workqueue *wq)
  2. {
  3.         int new_current_active;
  4.         long pending;
  5.         int need_change = 0;
  6.  
  7.         if (wq->thresh == NO_THRESHOLD)
  8.                 return;
  9.  
  10.         atomic_dec(&wq->pending);
  11.         spin_lock(&wq->thres_lock);
  12.         /*
  13.          * Use wq->count to limit the calling frequency of
  14.          * workqueue_set_max_active.
  15.          */
  16.         wq->count++;
  17.         wq->count %= (wq->thresh / 4);
  18.         if (!wq->count)
  19.                 goto  out;
  20.         new_current_active = wq->current_active;
  21.  
  22.         /*
  23.          * pending may be changed later, but it's OK since we really
  24.          * don't need it so accurate to calculate new_max_active.
  25.          */
  26.         pending = atomic_read(&wq->pending);
  27.         if (pending > wq->thresh)
  28.                 new_current_active++;
  29.         if (pending < wq->thresh / 2)
  30.                 new_current_active--;
  31.         new_current_active = clamp_val(new_current_active, 1, wq->limit_active);
  32.         if (new_current_active != wq->current_active)  {
  33.                 need_change = 1;
  34.                 wq->current_active = new_current_active;
  35.         }
  36. out:
  37.         spin_unlock(&wq->thres_lock);
  38.  
  39.         if (need_change) {
  40.                 workqueue_set_max_active(wq->normal_wq, wq->current_active);
  41.         }
  42. }
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 15 de Septiembre de 2021, 11:38:51

Supongo que depende de la complejidad del programa, encontrar en una libreria un goto seria ya el colmo porque una libreria se compone de bastantes funciones que es facil evitar un goto porque son muy pocas lineas de pogramacion para cada funcion, pero imaginate un programa de 32k o 64k, la de programacion que hay ahi metida, seria de bastante logica que se usen gotos.

Nunca los he visto, por ejemplo las librerías de la pila TCP/IP son enormes y nunca me he topado con goto. En xc32 son abiertas, y simplemente buscando en todo el proyecto la palabra clave 'goto' se puede encontrar y no aparecen.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 15 de Septiembre de 2021, 11:45:23

Supongo que depende de la complejidad del programa, encontrar en una libreria un goto seria ya el colmo porque una libreria se compone de bastantes funciones que es facil evitar un goto porque son muy pocas lineas de pogramacion para cada funcion, pero imaginate un programa de 32k o 64k, la de programacion que hay ahi metida, seria de bastante logica que se usen gotos.

Tienes razón, pensé que no se utilizaban. Pero personalmente, nunca he sentido la necesidad de utilizarlas, y como siempre he dicho, si puedes crear un producto comercial estable, de calidad y lo más económico para obtener ganancias, no importa como lo hagas.
Título: Re:Conmutacion-Programa
Publicado por: Eduardo Rodas en 15 de Septiembre de 2021, 12:19:40


porque Basic esta mas muerto que el sumerio
[/quote]

Uso Basic después de dejar el ensamblador y la verdad es que Basic me permitió hacer todo lo que antes no podía hacer. Exactamente uso PROTON IDE y es genial, no perfecto pero si bastante bueno y fácil de aprender ... me sorprende que poca gente lo use.
Título: Re:Conmutacion-Programa
Publicado por: Picuino en 15 de Septiembre de 2021, 12:25:47
Por desgracia el basic se sigue siendo muy popular.
Visual Basic aparece 2 veces en el índice de popularidad de Tiobe entre los 20 primeros lenguajes de programación.

  - Tienes que ingresar para ver archivos adjuntos -  

https://www.tiobe.com/tiobe-index/
Título: Re:Conmutacion-Programa
Publicado por: Miguelyx en 15 de Septiembre de 2021, 13:28:59





Uso Basic después de dejar el ensamblador y la verdad es que Basic me permitió hacer todo lo que antes no podía hacer. Exactamente uso PROTON IDE y es genial, no perfecto pero si bastante bueno y fácil de aprender ... me sorprende que poca gente lo use.

Yo ya no lo uso tanto por 2 temas, realmente no he dejado de usarlo, pero hay que evolucionar aunque sea tarde, 1º por un simple tema de velocidad, todas las funciones rutinas o lo que tengas en un programa en Basic, con el mismo programa en C se ejecuta bastante mas rapido, pero bastante.
Y 2º por la cantidad de usuarios que usan uno u otro, decir que esta mas muerto que el sumerio es evidente que es una exageracion de la realidad pero es algo que sucede dia a dia, cada dia son menos los que usan Basic y mas los que usan C, y en la facilidad de usar Basic te doy toda la razon, es de una simpleza tan sorprendente que es raro que no se haya impuesto al resto, pero bueno, en nuestro mundo es asi, cuanto mas facil, menos interesa.
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 15 de Septiembre de 2021, 13:41:19





Uso Basic después de dejar el ensamblador y la verdad es que Basic me permitió hacer todo lo que antes no podía hacer. Exactamente uso PROTON IDE y es genial, no perfecto pero si bastante bueno y fácil de aprender ... me sorprende que poca gente lo use.

Yo ya no lo uso tanto por 2 temas, realmente no he dejado de usarlo, pero hay que evolucionar aunque sea tarde, 1º por un simple tema de velocidad, todas las funciones rutinas o lo que tengas en un programa en Basic, con el mismo programa en C se ejecuta bastante mas rapido, pero bastante.
Y 2º por la cantidad de usuarios que usan uno u otro, decir que esta mas muerto que el sumerio es evidente que es una exageracion de la realidad pero es algo que sucede dia a dia, cada dia son menos los que usan Basic y mas los que usan C, y en la facilidad de usar Basic te doy toda la razon, es de una simpleza tan sorprendente que es raro que no se haya impuesto al resto, pero bueno, en nuestro mundo es asi, cuanto mas facil, menos interesa.

Creo que era inestable, si es que te refieres a PICBasic. Recuerdo que me contrataron para migrar el código de un taxímetro, cuyo firmware era completamente hecho en PICBasic, lo que me comentaban era que se reiniciaba, se colgaba, etc. Era un dolor de cabeza para la empresa que lo comercializaba.

Se hizo un análisis del hardware para determinar si por ahí era el problema, pero parecía correcto. A mi me pidieron que vuelva a reescribir que mejore todo ese código, pero el ingeniero que lo había diseñado había renunciado y yo propuse hacerlo de nuevo en XC8 y documentarlo, y tomo como 2 meses y otros más en pruebas y a la final parecía que era estable y más rápido como tu dices.

Tal vez fue una mala escritura del código antes que problemas del compilador en si.
Título: Re:Conmutacion-Programa
Publicado por: Picuino en 15 de Septiembre de 2021, 15:19:10
Yo aconsejo leer este libro para aprender a desarrollar código mantenible y legible.
A mí me encantó leerlo y releerlo. Es bastante práctico y la mayoría del texto sirve para cualquier lenguaje.

  - Tienes que ingresar para ver archivos adjuntos -  
https://www.amazon.es/C%C3%B3digo-Limpio-desarrollo-software-Programaci%C3%B3n/dp/8441532109/

(También existe versión "digital")

Edito: Comentario de Amazon
"Cada año, se invierten innumerables horas y se pierden numerosos recursos debido a código mal escrito, ralentizando el desarrollo, disminuyendo la productividad, generando graves fallos e incluso pudiendo acabar con la organización o empresa. El reconocido experto de software Robert C. Martin, junto con sus colegas de Object Mentor, nos presentan sus óptimas técnicas y metodologías ágiles para limpiar el código sobre la marcha y crearlo de forma correcta, de este modo mejorará como programador. Esta obra se divide en tres partes. La primera describe los principios, patrones y prácticas para crear código limpio. La segunda incluye varios casos de estudio cuya complejidad va aumentando. Cada ejemplo es un ejercicio de limpieza y transformación de código con problemas. La tercera parte del libro contiene una lista de heurística y síntomas de código erróneo (smells) confeccionada al crear los casos prácticos. El resultado es una base de conocimientos que describe cómo pensamos cuando creamos, leemos y limpiamos código. Imprescindible para cualquier desarrollador, ingeniero de software, director de proyectos, jefe de equipo o analista de sistemas interesado en crear código de mejor calidad. ¡El libro que todo programador debe leer!"
Título: Re:Conmutacion-Programa
Publicado por: DominusDRR en 15 de Septiembre de 2021, 15:29:35
Yo aconsejo leer este libro para aprender a desarrollar código mantenible y legible.
A mí me encantó leerlo y releerlo. Es bastante práctico y la mayoría del texto sirve para cualquier lenguaje.

  - Tienes que ingresar para ver archivos adjuntos -  
https://www.amazon.es/C%C3%B3digo-Limpio-desarrollo-software-Programaci%C3%B3n/dp/8441532109/

(También existe versión "digital")

Edito: Comentario de Amazon
"Cada año, se invierten innumerables horas y se pierden numerosos recursos debido a código mal escrito, ralentizando el desarrollo, disminuyendo la productividad, generando graves fallos e incluso pudiendo acabar con la organización o empresa. El reconocido experto de software Robert C. Martin, junto con sus colegas de Object Mentor, nos presentan sus óptimas técnicas y metodologías ágiles para limpiar el código sobre la marcha y crearlo de forma correcta, de este modo mejorará como programador. Esta obra se divide en tres partes. La primera describe los principios, patrones y prácticas para crear código limpio. La segunda incluye varios casos de estudio cuya complejidad va aumentando. Cada ejemplo es un ejercicio de limpieza y transformación de código con problemas. La tercera parte del libro contiene una lista de heurística y síntomas de código erróneo (smells) confeccionada al crear los casos prácticos. El resultado es una base de conocimientos que describe cómo pensamos cuando creamos, leemos y limpiamos código. Imprescindible para cualquier desarrollador, ingeniero de software, director de proyectos, jefe de equipo o analista de sistemas interesado en crear código de mejor calidad. ¡El libro que todo programador debe leer!"

Buen aporte, lo voy a buscar en versión digital en "Royal Cinema"