PWM y motor lavadora.

De bien nada de nada, medí lo que tardan dos digital write consecutivos con un analizador lógico y es más de 50 veces más lento que acceder a un puerto entero. Yo entiendo que sea tres veces más lento, aceptaría 5 veces, 10 veces más lento ya me parecería una castaña. Que sea 50 y pico no tiene nombre.
El proyecto Arduino está muy bonito pero hay algún incompetente haciendo idioteces en la base del proyecto.

Para modificar un bit en un micro que no tiene direccionamiento por bit, se lee el byte, se pasa una máscara y se vuelve a escribir. Tres instrucciones en lugar de una, por los detalles, cinco o siete instrucciones. Cincuenta y dos no.

Como eso hay unas cuantas perlas más que he encontrado, y más de deben de haber que no he visto. Lo mismo el encargado del código pone delays "para estabilizar" o algo así.
 
Última edición:
Por internet puedes encontrar varios analisis sobre ello. Por lo visto hace varias comprobaciones que normalmente no son necesarias, pero que hacen que el código sea compatible entre varios arduinos (Uno, Mega, etc...)
 
Será eso... pero ¿50 veces?
¿Por qué pide entonces que selecciones la CPU para compilar si es el mismo código? Según eso no haría falta.
También el conversor ad es más lento que el caballo del malo y unas cuantas cosas mas
 

Dr. Zoidberg

Well-known-Papá Pitufo
Será eso... pero ¿50 veces?
El problema es otro. El problema es que hay lineas de puertos que se pueden configurar como entradas del ADC, otros como salidas PWM, otros como entradas, otros como salidas y otros como lineas de interrupcion. Entonces, cada vez que se hace un digitalWrite es necesario verificar todo eso para no hacer lío con lineas configuradas para otra cosa, y/o cambiar el modo de operacion para lograr lo que el codigo "pide".
El karma no puede evitarse...queres que sea fácil? Aguantate la velocidad lenta.
 

Dr. Zoidberg

Well-known-Papá Pitufo
Eso tiene cierto sentido, si no hay que chafar nada mas hay que verificar en mil sitios antes de tocar nada.
Claro!
Si progamaras vos, o yo o cualquiera que sepa; se predefinen y configuran las lineas para su funcion especifica y nunca mas se debe mirar nada mas. Pero en el caso de Arduino, como la API esta hecha para que la use cualquier mortal, aun sin instruccion en programacion, se vuelven imprescindibles las verificaciones para que el soft siempre haga lo que se supone que debe hacer sin tener que luchar mucho con el hardware.

Sin juzgar si está bien o mal esta posicion, me viene a la mente el recuerdo del Visual Basic: para que programe hasta un idiota....y los idiotas programaron y la calidad del software se fué al demonio...
 
Scooter. Tienes toda la razón. El código es bastante chufa. Real mente esos relay mas puestos todavía fastidian mas las comunicaciones entre otros dispositivos. O peor que tenga prioridad el muestreo serial a su sistema de control, que es lo mas común.

... Si me gustaba preparar un buen sofwar para lavadoras con un menú de procesos programable. (Claro q con todas sus caos) como motor de bomba trabada o que tenga mucha espuma y le cueste mas medio llenados y vaciados. Pero lo mas importante una función de centrifugado a secas o ultimo aclarado y centrifugado...
Pero lo que esta mas que claro. Q correcciones a ese tiempo ni consigues igualar la carga para un buen centrifugado ni de coña dando pequeños picos de freno. De echo en los circuitos no vi una configuración de freno eléctrico. A lo mucho el cambio de sentido. (Pero creo que seria muy busco)
Pero con pequeños picos de frenada se puede igualar algo la carga interior y poder alcanzar mejor mas revoluciones... (Se necesitaría un sensor de vibración o mas bien lo que se desplaza el bombo) balar suave las revoluciones para que ejerzan menos los J' y dar en su punto cumbre o ángulo del bombo una leve frenada... (Eso lo tuve observado un día en equilibrado de cargas por fuerza centrípeta) y creo que esta incrementado en algunas lavadoras para poder alcanzar 600 o 800 rpm... Pero que si va muy cargada de ropa.... Como todo. Le costara mas al motor (sistemas de protección etc) pero lo mas importante... Y por que cuando va el técnico no tiene en la EPROM información del evento en caos y una relación de hora o lavado.. Ehhhh

Un saludo ;)
Con los microondas y mas con grill tengo las mismas... Me pregunto quien programa el descongelado del pan... O a caso también sabe que tipo de pan venden en la panadería de al lado.. Que obviamente tiene una densidad y volumen diferente (ni si quiera manejan en grill en sus puntos para dejarlo crujiente) en los digitales puede ser una locura muy grande.. Lo mejor los de botones, solo hay que pillar el puto a la fuerza del microondas (que hay algunos que cuecen de dentro a fuera las microonda muy rápido a relación tostado del grill y suavizar la fuerza al final al microondas para terminar de secar y tostar el pan con el grill). Y eso para encima es relativo muy relativo a la densidad de la miga de pan de la panadería que vallas y congeles... Que no que no. No puede ser :)
 
Última edición:
Arriba