ATMega32, usar PORTA como io digital tiene "interferencia" digital

0

Tengo varios conmutadores conectados al puerto A en un atmega32. Se establecen como una entrada con pullups internos. No hay pullups externos. Los interruptores ponen a tierra los pasadores. No estoy anunciando los conmutadores porque su estado está bloqueado en el software.

Mi problema es que cuando se presiona el botón 0, conectado a pin0 en porta, durante ~ 30ms, aparece un pulso de 0.4ms en los pins adyacentes. Como un tipo de 'interferencia digital'.

Así que ahora me veo obligado a hacer rebotes para evitar el registro y el bloqueo de las pulsaciones de los botones falsos. Adjunté un analizador lógico a los pines. Aquí está la captura de pantalla. enlace El canal 5 está conectado al botón que presioné varias veces. Puedes ver los picos en el canal adyacente.

Alguna idea de lo que podría estar pasando. ¿Podría esto tener algo que ver con que el puerto también forme parte del módulo ADC, o posiblemente el hecho de que estoy usando un chip más antiguo?

Tengo AVcc conectado a vcc con 10uF a tierra. Aref está configurado internamente a vcc y tiene un condensador externo de 3.3uF.

    
pregunta Anindo Ghosh

1 respuesta

2

Parece una interferencia capacitiva. Los pullups internos no son particularmente fuertes, por lo que si las huellas están una al lado de la otra, es posible que el cambio de voltaje en un cable se combine con un cable adyacente. Yo sugeriría agregar capacitores desde los pines IO a tierra cerca del microcontrolador para ayudar a mantener el estado en los pines. Probablemente las tapas estándar de 0.1 uF deberían ser suficientes. También puedes probar pullups externos más fuertes. Si 10k no funciona, entonces intente 4.7k o 1k.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas