Consulta lectura digital edu-ciaa-nxp

181 views
Skip to first unread message

Carlos Pantelides

unread,
Jul 10, 2016, 2:53:40 PM7/10/16
to Embebidos32
Hola,

estoy intentando leer un encoder [1] que funciona con 5v desde la edu-ciaa-nxp.

He hecho la adaptación de 5v a 3.3v con el circuito que se ve en [2] con resistencia de 2k y un 2n2222. Primero probé con el tester y dos pilas AA y parecía ok. Luego he conectado a la placa y sigue pareciendo ok o al menos el tester así lo dice.

Luego, he hecho:

   #include "sAPI.h" 
   boardConfig();

   digitalConfig( 0, ENABLE_DIGITAL_IO );
 
   digitalConfig( DIO3, INPUT );
   ....
   loop {
      clk =  digitalRead(DIO3);
      ....
   }

y no pasa nada, clk siempre tiene el mismo valor

He controlado que DIO3 correponda al pin GPIO0
He probado con INPUT, INPUT_PULLUP, INPUT_PULLDOWN
He conectado un switch directamente en lugar del encoder a GPIO0
Me consta que el loop está vivo pues estoy escribiendo periódicamente en uart

y nada, alguna pista?

No he probado aún usar directamente LCPOPEN.

Eduardo Filomena

unread,
Jul 11, 2016, 7:17:31 AM7/11/16
to embeb...@googlegroups.com
Cómo está definida clk?

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Carlos Pantelides

unread,
Jul 11, 2016, 7:32:12 PM7/11/16
to Embebidos32
Hola Paco,

no sé bien que es lo que preguntás (por mi ignorancia básica), pero quizás te conteste con que esos nombres clk y dt no parecen responder a ningún significado especial, simplemente pasan de 0 a 1 o 1 a 0 levemente desfasados y así sabés para que lado giró.

si estan 00, girás a la izquierda, quedan en 11, pero durante un breve intervalo, estuvieron 01. si hubieses girado para el otro lado, habrían estado en 10

jeremias garcia

unread,
Jul 11, 2016, 8:05:40 PM7/11/16
to embeb...@googlegroups.com

Hola Carlos, creo q a lo q se refiere Eduardo es a como definiste la variable dentro del codigo, como entero de 8 bit (uint8_t) por ejemplo, por lo que entendi, perdon por meterme ja, saludos.

Carlos Pantelides

unread,
Jul 11, 2016, 9:22:42 PM7/11/16
to Embebidos32
Jeremías, todo el mundo está invitado

estaba como int, probé ahora con uint8_t, nada.

Pego el código por las dudas:


#include "main.h"
#include "sAPI.h"

int main(void) {

   boardConfig();
   digitalConfig( 0, ENABLE_DIGITAL_IO );
   digitalConfig( DIO3, INPUT );
   digitalConfig( DIO4, INPUT );

   uint8_t msgI[] = "inicio\n\0";
   uint8_t msgE[] = "evento   \n\0";
   uint8_t msgA[] = "alive\n\0";

   uint8_t clk;
   uint8_t clk_prev;
   uint8_t dt;
   uint8_t dt_prev;

   uartConfig(UART_USB,9600);
   int alive=0;

   tickConfig(1,0);
   while(1) {
      delay(50);
 
      clk = ! digitalRead(DIO3);
      dt  = ! digitalRead(DIO4);
      if (clk != clk_prev ) {
         msgE[7] = 'c';
         uartWriteString(UART_USB,msgE);
         clk_prev = clk;
      }
      if (dt != dt_prev ) {
         msgE[7] = 'd';
         uartWriteString(UART_USB,msgE);
         dt_prev = dt;
      }
      if ( alive++  > 10 ) {
         alive=0;
         uartWriteString(UART_USB,msgA);
      }
   }
   return 0;
}

Siendo la salida en la terminal:

--- Quit: Ctrl+]  |  Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
inicio
evento c
evento d
alive
alive
alive
...    (giro encoder)
alive
forever...


Entiendo que por
[modules/sapi_bm/src/sAPI_DigitalIO.c]
   // { {6, 1}, FUNC0, {3, 0} },   /*  3   DIO3    CON2_29   GPIO0       */
   // { {6, 5}, FUNC0, {3, 4} },   /*  4   DIO4    CON2_31   GPIO2       */

Es correcto que use DIO3 y DIO4

Saludos

Eduardo Filomena

unread,
Jul 12, 2016, 6:53:54 AM7/12/16
to embeb...@googlegroups.com
Carlos:   Si comprobaste a tester que las entradas están modificándose y revisaste la configuración como
puertos de entrada, podés probar a definir las variables clk y dt como volatile.
Saludos
Eduardo

Eric Pernia

unread,
Jul 12, 2016, 11:25:34 AM7/12/16
to Embebidos32
Buen día Carlos, para leer un Encoder hay que ver si te da la velocidad de los pines y de todas maneras es ineficiente. Lo ideal es hacerlo con un periférico Timer (0 a 3) del micro configurado (con LPCOpen porque la sAPI no lo tiene aún) en modo "entrada de captura", con los pines que tienen modo CTIN podías entrar el encodder y calcular la frecuencia de puslos y con eso sacas las RPM. Cuando esté en casa te busco más info y te la mando, tengo un apunte lindo que hizo Jose Juarez en la UNQ,es para otro micro pero la idea es la misma, solo habría que busacar como se hace con LPCOpen.

Saludos.
Eric.

Carlos Pantelides

unread,
Jul 12, 2016, 4:31:38 PM7/12/16
to Embebidos32
Eric,

es un encoder manual, como para controlar el nivel de volumen de audio, no un encoder conectado a un motor, seguro que la velocidad dá, estamos mas bien en RPH (revoluciones por hora).

Carlos Pantelides

unread,
Jul 12, 2016, 8:00:56 PM7/12/16
to Embebidos32
Paco,

puse sin ninguna esperanza volatile, nada


Eduardo Filomena

unread,
Jul 13, 2016, 7:07:32 AM7/13/16
to embeb...@googlegroups.com
Carlos:
 Me parece que encontré el problema.
Probá de conectar el encoder en T_FIL2 y T_FIL3.
Saludos
Paco

El 12 de julio de 2016, 21:00, 'Carlos Pantelides' via Embebidos32 <embeb...@googlegroups.com> escribió:
Paco,

puse sin ninguna esperanza volatile, nada


Carlos Pantelides

unread,
Jul 13, 2016, 6:57:20 PM7/13/16
to Embebidos32
Paco,

brutal! funciona ok. Amerita una intensa reflexión e investigación de mi parte en la comprensión de la falla, que puede ser en sAPI o en mi interpretación de sAPI.

Muchas gracias. No te ofendas si escribís la explicación y tardo en leerla, querría llegar por mi cuenta y luego comparar.

Eduardo Filomena

unread,
Jul 14, 2016, 6:34:34 AM7/14/16
to embeb...@googlegroups.com
Me alegro Carlos que funcione!!!

Para cuando quieras la solución, mirá:
y ahí está la correspondencia entre los labels de la sAPI y la serigrafía de la EDU-CIAA.
No es así Eric???
Saludos
Reply all
Reply to author
Forward
0 new messages