El consumo de corriente en las diferencias de pines de salida digital en dos segmentos codificados por igual, ¿causa probable?

0

Medí la salida de corriente de un Arduino Duemilanove (con un ATmega168) en dos casos y descubrí que las corrientes son muy diferentes.

El siguiente código crea una salida de 72 mA en el pin 13 medida en mi caso en un multímetro digital (Tenma 72-7745). Tenga en cuenta que es casi el doble del máximo. corriente de 40mA.

void setup()
{
  pinMode(13, OUTPUT);     
}

void loop()
{  
 digitalWrite(13, !digitalRead(13));  
 // digitalWrite(13, digitalRead(13) ^ 1); // this works as well
 delayMicroseconds(58); 
}

el siguiente código sobre 36.5mA:

void setup()
{
  pinMode(13, OUTPUT);     
}

void loop()
{  
  digitalWrite(13, HIGH);
  delayMicroseconds(58); 
  digitalWrite(13, LOW); 
  delayMicroseconds(58);
} 

La frecuencia medida en el pin 13 (+) y tierra para ambos ejemplos es de alrededor de 8kHz. El consumo actual no cambia demasiado cuando baje la frecuencia, por ejemplo, con delayMicroseconds (1000); Es en este caso 493Hz y 68mA en mi condición (temperatura y microinstrucciones que afectan al reloj, supongo).

Intenté buscarlo en Google, pero no pude encontrar ninguna fuente. ¿Tiene alguna idea?

¿Esto está relacionado de alguna manera con la instrucción digitalRead ()? ¿Esta función necesita una corriente para leer? ¿Qué pasa con el actual sumidero y la fuente? Necesito ayuda ..

    
pregunta algomachine

1 respuesta

2

digitalRead lee el estado del pin, no el valor en el registro de salida. Si una carga pesada está bajando el voltaje del pin, entonces se leerá como 0 lógico, incluso si el bit de registro de salida se establece en 1. Su primer ejemplo de código intenta cambiar el nivel de salida invirtiendo el nivel lógico que se encuentra en el pin, pero porque siempre está leyendo bajo la salida siempre se establecerá alta. La corriente se duplica porque la salida es 'alta' el 100% del tiempo, no el 50% que esperaba.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas