Pages: [1]   Go Down
Author Topic: Como es la arquitectura interna de los puertos digitales?  (Read 1459 times)
0 Members and 1 Guest are viewing this topic.
Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos hace poco que tengo el Arduino Uno y aunque solo acabo de empezar, estoy atascado y no comprendo la arquitectura interna de los puertos. Es el trozo donde habla que el chip Atmega tiene una resistencia pull-up interna que se puede usar como entrada mediante software. Como no entiendo eso cuando leo el siguiente parrafo me mata.

"También debes tener en cuenta que las resistencias pull-up son controladas por los mismos registros (posiciones de memoria interna del chip) que controlan si un pin está alto (HIGH) o bajo (LOW). Por consiguiente, un pin que se configura para tener las resistencias pullup activadas cuando esta configurado como entrada, debe tener el pin a alto (HIGH) si el pin es cambiado como salida (OUTPUT) con pinMode(). Esto funciona en la otra dirección también, y un pin de salida que queda en un estado alto tendrá las resistencias pull-up activas, si cambia a entrada (INPUT) con pinMode()"

Haber si alguien me puede iluminar. Por cierto se que es un pull-up y un pull-down, ese no es el problema. SAlu2
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

creo que lo voy cogiendo:

  • en el arduino tienes que activar si quieres que el puerto sea de entrada o salida mediante el comando pinMode(pin, INPUT) o pinMode(pin, OUPUT).
  • Encima tiene un pull-up interno de 20k que si quieres usarlo y ahorrarte el externo se hace por software con digitalWrite(pin, HIGH). Pero si le vas a poner un pull-up externo no hace falta activar el que tiene interno por lo que digitalWrite(pin, LOW).


¿Si activo el pull-up interno y pongo otro externo de 10k funcionaria sin problemas verdad?
¿La configuración del pin 13 es:       pin13............Resistencia......Diodo.......Masa?

Acostumbrado al 8051 se me hace un poco raro tener que andar diciendo por soft si el puerto es salida o entrada.
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo a vueltas con esto y mirando la práctica BlinkWithoutDelay y el esquema eléctrico del arduino uno hay algo que no me cuadra. Porque en la práctica conecta un diodo del pin13 a masa pero no pone una resistencia en serie. He seguido buscando y he encontrado unas prácticas recopiladas (supongo que las habrá sacado de la web) de José Manuel Ruiz Gutiérrez que dice:

"Obsérvese que se ha colocado el diodo led sin resistencia en serie dado que el PIN13 de
Arduino ya lleva incorporada una resistencia interior, en el caso de colocar el diodo
LED en otra salida deberíamos colocar una resistencia de al entre 220 y 500 ohmios
dependiendo del consumo de corriente del diodo"

Pero miro el esquema eléctrico del arduino uno y si conecto un diodo al pin13 y a masa lo que estoy haciendo es poner un diodo en paralelo al diodo y resistencia que trae integrada la placa. O estoy mirando mal el esquema o dentro del micro Atmega hay una resistencia para controlar el consumo de corriente del diodo.


He estado mirando en la página en ingles y todavía es más confuso porque ellos dibujan que hay que poner una resistencia en serie pero luego dicen "To build the circuit, grab an LED and attach its long, positive leg (called the anode) to pin 13. Attach the short, negative leg (called the anode) to ground". Haber si alguien se le ocurre algo porque yo ya no se que más pensar.

Por cierto soy el único que en los tutoriales  donde pone codigo le sale
 "Not Found

The requested URL /svn/trunk/build/shared/examples/Digital/Button/Button.pde was not found on this server."
En la página en ingles se ve sin problemas.Salu2
« Last Edit: April 12, 2011, 01:59:16 am by ionhs » Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La única placa que traía la resistencia en serie era el primer modelo de todos que se fabricó, que no llevaba el led 'L' en la placa, por lo que sí podías poner un led directamente al pin 13.

Supongo que al sacar las nuevas placas con distinta topología, la gente se habrá quedado con la copla de la primera y siguen poniendo lo mismo que a su vez hace que más gente crea que existe esa resistencia, que ya se ha convertido casi en leyenda.
También viene propiciado por que si lo conectas directamente no se va a estropear el led a corto plazo, por lo que parece que "funciona" y realmente tiene esa resistencia como decían.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bokeauss, como he dicho antes, no creo que pase nada ya que la limitación de corriente por los pines hace que la corriente no sea muy alta, brillará mucho y acortarás mucho la vida del diodo, pero no pasará nada instantaneamente, aunque bueno, depende también del led.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias chiva me estaba empezando a preocupar porque veía tan claro el fallo. Por supuesto que sabía que no se quemaría porque está limitado a 40mA la salida de los pines, pero no me mola hacer las cosas mal. Salu2
Logged

Pages: [1]   Go Up
Jump to: