ATMEGA328P: ¿Puedo reutilizar PB4 (MISO) con una resistencia de pull-up sin interferir con SPI?

2

Tengo un Freetronics Eleven con su Ethernet Shield y me gustaría agregar un DS2502-E48 al circuito para proporcionar la dirección MAC del hardware. Esta pequeña joya de Maxim utiliza el bus Dallas de 1 cable y, si es posible, me gustaría reutilizar uno de los pines ya atados en Arduino / Shield en lugar de reducir los pines disponibles para los prototipos.

Los pines SPI (11, 12, 13) ya están reclamados por el escudo, pero solo necesito hablar con el DS2502-E48 durante unos pocos ms durante la inicialización, así que me pregunto si podría usar el pin 12 (MISO ) brevemente como la línea de datos de 1 cable. Sin una línea CS activa para ningún dispositivo SPI, ignorarán el bus, por lo que no debería haber ninguna interferencia allí. Pero la especificación de 1 cable requiere una resistencia de pull-up conectada a + 5V ... ¿Eso interferiría con la actividad de SPI más adelante?

Alternativamente, ¿podría escaparme sin la resistencia de pull-up en este caso? Soy vago en toda la teoría, pero parece que el pull-up está ahí para que los dispositivos parásitos adquieran energía. Si uso el pull-up interno para alimentar el pin durante unos pocos ms, luego hable con el DS2502-E48 el tiempo suficiente para obtener los datos que necesito, ¿puedo dejar que la línea vuelva a su función SPI normal después?

Tenga en cuenta que actualmente no tengo planes para más dispositivos de 1 cable ... Si necesito 1 cable para un prototipo, le dedicaría un pin diferente.

    

1 respuesta

1

Sería extremadamente fácil proporcionar un pullup que estuviera activo solo durante la inicialización y que "desaparezca" por completo a partir de entonces.

  • Activo: el transistor PNP se enciende mediante un condensador en el momento del encendido y levanta el pullup. La tapa está cargada y el transistor se apaga después de 1 a 2 constantes de tiempo.

  • Pasivo: el condensador proporciona V + para la resistencia de extracción a través de un diodo. Las cargas de la tapa (o se descargan efectivamente según la perspectiva) con una resistencia separada y la unidad pullup desaparecen después de una constante de tiempo aproximadamente. El diodo hace que la tapa sea "invisible" cuando se "carga".

(1) Un "pullup activo" sería más fácil de "diseñar" correctamente que un pasivo y podría consistir en un capacitor y un transistor "digital" (es decir, resistencias de base internas). Por lo tanto, podría ser muy pequeño: dos componentes más una resistencia de pullup real. Agregar otra r o 2 puede ayudar a que el tiempo sea más predecible, pero la versión 1R debería estar bien.

  • PNP digital con R interno desde la base hasta el emisor y R interno desde la base hasta el pin de entrada.

  • Pin de la base del condensador a tierra.

  • Collector to pullup.

Al encender Vcap = 0, el pin de entrada de la base está en 0 y el transistor está activado.
 Tapas de tapa a través de una resistencia de base interna.  Cuando la tapa llega a ~ = V + -0.5, el transistor se apaga.

Tamaño / costo / valores: vea (2) a continuación para conocer el tamaño y costo del capacitor, pero tenga en cuenta que se puede usar un valor de capacitor mucho más pequeño al elegir un valor de resistencia base mucho mayor para cargar el capacitor Que se puede utilizar con el diseño pasivo. por ejemplo, una resistencia de base de 10k permitiría un límite de 1 uF y algo tan extremo como este ROHM PNP con resistencia de entrada de 100k la hoja de datos aquí permitiría probablemente un límite de rango de 0.01 - 0.05 uF. Disponible en 4 paquetes desde SOT23 hasta VMT3 ¡1.2mm x 0.8mm! :-) para los entusiastas terminales. ) .047 uF La tapa X5R puede ser 0201 (si se desea) para la misma diversión a menos de 1 centavo

¡El costo del transistor domina aquí en este caso a aproximadamente 10 centavos! Pero mucho más barato estará disponible.

(2) Un pullup pasivo es probablemente más grande y más costoso, ya que el costo de instalación predominará en la fabricación por volumen. Pero:

Esto podría ser "tan seguro" tan poco como

  • C1 = 1 x cap (C + = V +),

  • R1 = 1 x resistencia (C- a tierra),

  • D1 = 1 x diodo (unión de R & C a pullup), +

  • R2 = pullup to where.

C1 comienza con una carga de 0, de modo que cuando V + aumenta, C + se lleva a V + y C- también. La tapa ahora se descarga a través de R1, por lo que C cae de V + a tierra. D1 aísla la tapa del pullup una vez que se descarga la tapa. Pullup proporciona cualquier valor requerido para el bus. I2 R2 = pullup es decir 5 a 10+ veces más grande que R1, entonces R1 dominará el tiempo de descarga.

Tamaño / costo / valores: Si necesita "unos pocos ms", diga constante de tiempo = 10 ms.  Maxim dice que pulup debería ser de aproximadamente 4k7.
 Esto se muestra igual para la alimentación de parásitos y cuando Vdd está disponible, entonces sospecho que un valor mayor es aceptable cuando se proporciona Vdd PERO permite pegar wityh 4k7. (Otros problemas son la constante de tiempo od R oullup + _ capacitancia parásita en el bus de 1 cable).

Haz R1 = 1k.
 Constante de tiempo = 10 mS
 así que C1 = 10 uF = no agradable, pero soportable.

por ejemplo, este material TDK 0805 pkg, 10uF, 10V, Y5V, cuesta 2.5 centavos a un volumen de 2000 y menos de 2 centavos por encima del volumen de 10k en Digikey. Probablemente la mitad o menos de China. Y5V puede ser un poco "emocionante al decir +20% / - 80% en toda la temperatura (-55 / + 85) y aún así no es maravilloso en decir 0-55C.

Bastante mejor X5R (+/- 20% a través de la temperatura) también es el tamaño del paquete de pkg (0805 x 1.5mm de altura) con una prima de precio de + 50% (Digikey 2.8C / 26k)

Dado el precio horrible del IC de 1 cable, puede que no le importe los pocos centavos para el límite.

(3) PIC10F o unidades de extracción similares :-)

O luego está esto que creo que puede ser una oferta única, o un error o la broma del día de los tontos de abril del año pasado o ....   33 centavos / 10 k para microcontrolador con 5 x 10 bit ADC, Brownout, reinicio de encendido, IIC, IRDA, SPI, UART, PWM, osc, watchdog, 8kB flash, 128 byte eprom, ... !!!!! !!!!!!!! hoja de datos .
 Qué controlador de pullup haría :-).

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas