PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : M32 LED an Pin



Ezalo
04.08.2010, 20:00
Hallo,

habe vor an freie Ports des Atmega32 auf dem M32 ein paar LED's zu hängen.
Allerdings habe ich noch keine genaue/ deutliche Info gefunden wv. Strom ich von einem Pin max. abnehmen darf?
Wie hoch ist die Ausgangsspannung eines solchen Pins?

MfG

Ezalo

Kampi
04.08.2010, 20:10
Die Ausgangsspannung an den Pins ist abhängig von der Versorgungsspannung. Bei 5V Versorgungsspannung ist der High-Pegel bei etwa 5V.
Ein Port(!) von dem Mega (also Pin 0 - Pin 7) kann mit max. 40mA belastet werden. Wenn du LEDs betreiben willst ist es sinnvoll bzw. wird empfohlen 4 LEDs gegen GND zu schalten und 4 LEDs gegen 5V zu schalten. So belastest du den Port nicht zu sehr, weil der Mega nur 4 LEDs mit Strom versorgen muss. Der Rest geht über den Open-Collector vom Port.
Natürlich darfst du die Widerstände nicht vergessen :)

Ezalo
04.08.2010, 20:16
Hab vor je 2 LED's (sozusagen Frontleuchten und Bremsleuchten) zu montieren und zusammen über einen Pin anzusteuern, was ich gefunden hatte, war halt was mit 20mA/ Pin. Aber 40mA ist mir natürlich lieber :D

Widerstände ist schon klar, keine sorge ^^ Werd die LED's auch nicht mit der vollen Flussspannung betreiben, schon alleine um den fließenden Strom noch etwas zu senken. Da ich bei max. Flussspannung sonst einen Strom von 20mA/ LED hätte.

Danke für deine Info :D

Kampi
04.08.2010, 20:18
Im Zweifelsfall nimmst du einfach Low-Current LEDs.... . Die brauchen, glaub ich, nur etwa 2-3mA.

Ezalo
04.08.2010, 20:22
Hab aber schon die anderen bestellt ^^ nächstes mal dan.

TrainMen
06.08.2010, 10:51
Hi,
hast Du Deine Basis schon voll ausgeschöpft oder warum willst Du die kostbaren Ports der M32 verwenden ?
Ich habe die Scheinwerfer und "Bremslichter" an den IO1-4 angeknotet und den Code mit in die I2CSlave eingebunden.
Trainmen

radbruch
06.08.2010, 11:50
3. Although each I/O port can sink more than the test conditions (20 mA at Vcc = 5V, 10 mA at Vcc = 3V) under steady state conditions (non-transient), the following must be observed:
PDIP Package:
1] The sum of all IOL, for all ports, should not exceed 200 mA.
2] The sum of all IOL, for port A0 - A7, should not exceed 100 mA.
3] The sum of all IOL, for ports B0 - B7,C0 - C7, D0 - D7 and XTAL2, should not exceed 100 mA.
TQFP and QFN/MLF Package:
1] The sum of all IOL, for all ports, should not exceed 400 mA.
2] The sum of all IOL, for ports A0 - A7, should not exceed 100 mA.
3] The sum of all IOL, for ports B0 - B4, should not exceed 100 mA.
4] The sum of all IOL, for ports B3 - B7, XTAL2, D0 - D2, should not exceed 100 mA.
5] The sum of all IOL, for ports D3 - D7, should not exceed 100 mA.
6] The sum of all IOL, for ports C0 - C7, should not exceed 100 mA.
If IOL exceeds the test condition, VOL may exceed the related specification.
Pins are not guaranteed to sink current greater than the listed test condition.
4. Although each I/O port can source more than the test conditions (20 mA at Vcc = 5V, 10 mA at Vcc = 3V) under steady state conditions (non-transient), the following must be observed:
PDIP Package:
1] The sum of all IOH, for all ports, should not exceed 200 mA.
2] The sum of all IOH, for port A0 - A7, should not exceed 100 mA.
3] The sum of all IOH, for ports B0 - B7,C0 - C7, D0 - D7 and XTAL2, should not exceed 100 mA.
TQFP and QFN/MLF Package:
1] The sum of all IOH, for all ports, should not exceed 400 mA.
2] The sum of all IOH, for ports A0 - A7, should not exceed 100 mA.
3] The sum of all IOH, for ports B0 - B4, should not exceed 100 mA.
4] The sum of all IOH, for ports B3 - B7, XTAL2, D0 - D2, should not exceed 100 mA.
5] The sum of all IOH, for ports D3 - D7, should not exceed 100 mA.
6] The sum of all IOH, for ports C0 - C7, should not exceed 100 mA.
If IOH exceeds the test condition, VOH may exceed the related specification.
Pins are not guaranteed to source current greater than the listed test condition.
5. Minimum VCC for Power-down is 2.5V.Aus dem Datenblatt des Mega32 Seite 288. Woher man das Datenblatt bekommt verrate ich nicht, weil das ist geheim;)

Gruß

mic

Ezalo
06.08.2010, 14:02
Das ja komisch :-O Per PN bekomm ich das auf Seite 287 oder 288 was von 40mA/ Pin steht. Wem soll ich den jetzt glauben? ^^

Edit: Ok, was mir per PN geschickt wurde sind die max. erreichbaren Werte, wo allerdings der M32 schäden davon tragen kann.

oberallgeier
06.08.2010, 16:04
... Wem soll ich den jetzt glauben ...Im Zweifel IMMER dem jeweils aktuellsten Datenblatt.

Die Mikrocontrollernutzung ohne zugehörigem Datenblatt ist wirklich eines der letzten großen Abenteuer unserer Tage. Und diese Frage nach dem Maximalstrom pro Pin wird leider immer wieder "vom Hörensagen" her weitergegeben - als sei das ein Geheimwissen. Erst vor ein paar Tagen habe ich geschrieben als Beispiel für mega48PA/88PA/168PA/328P, das aber wohl für alle anderen Atm els auch gilt:
1.1 Pin Descriptions
...
The Port .. output buffers have symmetrical drive characteristics with both high sink and source capability.

28.1 Absolute Maximum Ratings*
28.2 DC Characteristics
... DC Current per I/O Pin ....... 40.0 mA
DC Current VCC and GND Pins.. 200.0 mA

*NOTICE: ... Maximum Ratings may cause permanent damage to the device ...EIN Pin KANN viel ziehen und abgeben (sink and source), sollte aber nicht allzuviel über 30 oder so, wobei die Summe aller Quell- und Senkenströme beachtet werden muß; wer 4x8 Portpins nutzen möchte kann sich leicht die Konsequenzen ausrechnen. Zu Maximum Ratings: "may" heißt dürfen, nicht müssen . . . . aber wenn sie dürfen, tun sie das auch oft, zumindest früher oder später.

Irgendwie ist die Regel RTFM aus der Mode gekommen - oder uncool geworden.

Ezalo
12.08.2010, 19:01
Hi,
hast Du Deine Basis schon voll ausgeschöpft oder warum willst Du die kostbaren Ports der M32 verwenden ?
Ich habe die Scheinwerfer und "Bremslichter" an den IO1-4 angeknotet und den Code mit in die I2CSlave eingebunden.
Trainmen

Meinst du die IO1-IO4 bei den LEDs?

Freie Pins: Sind freie Pins SDA, SCL, INT1 wo "I²C" steht oder INTU- INT3 an der Front neben XBUS1?

Tut mir leid, aber mittels der SuFu und ANleitung hab ich nix herrausgefunden darüber.

Ezalo
12.08.2010, 20:14
Habe jetzt mal 2 parallel geschaltene LED's auf GND (mit Vorwiederstand) und auf SDA geschaltet. Ich setz mit meinem Programm SDA auf low, da diese schon beim Einschalten (also ohne das ein Programm läuft) leuchten. Drum wollte ich versuchen sie auszuschalten. Allerdings werden sie nicht ausgeschaltet.


#include "RP6RobotBaseLib.h"

int main (void){
DDRC |= (SDA);
initRobotBase();
int i;
PORTC &= ~SDA;
powerON();
for(i = 0; i < 2; i++){
setLEDs(0b001001);
move(80, FWD, DIST_MM(500), BLOCKING);
setLEDs(0b000111);
rotate(60, RIGHT, 120, BLOCKING);
setLEDs(0b010010);
move(80, FWD, DIST_MM(500), BLOCKING);
setLEDs(0b000111);
rotate(60, RIGHT, 120, BLOCKING);
setLEDs(0b100100);
move(80, FWD, DIST_MM(500), BLOCKING);
setLEDs(0b000111);
rotate(60, RIGHT, 120, BLOCKING);
setLEDs(0b111111);
mSleep(2500);
}
while(1){
task_RP6System();
}
return 0;
}

MfG

Ezalo

Ezalo
13.08.2010, 13:57
Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V. Bei INT1 messe beim enschalten (ohne Programmstart) 0V und nach Programmstart 1V.

Mache ich irgendwas falsch?

Ezalo
13.08.2010, 15:24
Ist es möglich SDA, SCL und INT1 auf 0V zu schalten wenn der RP6 nur eingeschalten wird?

radbruch
13.08.2010, 17:20
Hallo


Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V.SDA und SCL sind über je einen PullUp-Widerstand (R32, R33, je 4k7) mit Vcc (5V) verbunden. Ohne LED kann man an diesen Pins deshalb 5V messen. Mit LED liegen deren Vorwiderstand und der PullUp in Reihe.


Ist es möglich SDA, SCL und INT1 auf 0V zu schalten wenn der RP6 nur eingeschalten wird?Nein, das ist nicht (so einfach) möglich. Nach dem Einschalten übernimmt der Bootlader im Mega32 des RP6 die Kontrolle. Dieser schaltet die I2C-Pins auf den für dieses Protokoll gültigen Werte: Takt- und Datenpin auf Z-State (Eingang ohne internen PullUp). (Zuvor testet er sogar, ob am I2C ein Teilnehmer vorhanden ist und schaltet deshalb SDA und SCL!)


Weil dann der Pin mit 50mA belastet wird weil das Programm nicht gestartet ist.Wie groß sind eigentlich die Vorwiderstände für die LEDs? Du verwendest doch zwei Vorwiderstände, für jede LED einen eigenen?


DDRC |= (SDA);
initRobotBase();
int i;
PORTC &= ~SDA;
In initRobotBase() wird portInit() aufgerufen. Dies setzt die Portpins auf einen definierten Startzustand. Für PortC ist der Zustand in RP6RobotBase.h definiert:


// ---------------------------------------------------
// PORTC

#define ACS_R (1 << PINC7) // Output
#define SL3 (1 << PINC6) // Output
#define SL2 (1 << PINC5) // Output
#define SL1 (1 << PINC4) // Output
#define DIR_R (1 << PINC3) // Output
#define DIR_L (1 << PINC2) // Output
#define SDA (1 << PINC1) // I2C Data (I/O)
#define SCL (1 << PINC0) // I2C Clock (Output (Master), Input (Slave))

// Initial value of port and direction registers.
#define INIT_DDRC 0b10001100
#define INIT_PRTC 0b00000000


port_init() gibt INIT_DDC an DDRC und INIT_PRTC an PORTC aus und überschreibt damit deine Angabe für das DDRC. Lösung:


initRobotBase(); // Erst Initialisieren
DDRC |= (SDA); // dann an den Porteinstellungen fummeln
PORTC &= ~SDA;
int i;


Gruß

mic

Ezalo
13.08.2010, 17:28
Weil dann der Pin mit 50mA belastet wird weil das Programm nicht gestartet ist.

Wie groß sind eigentlich die Vorwiderstände für die LEDs? Du verwendest doch zwei Vorwiderstände, für jede LED einen eigenen?

Da war mir ein Fehler beim ablesen unterlaufen, sind 0,5mA die fließen.

radbruch
13.08.2010, 18:31
Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V.Am externen PullUp R32 fallen ca. 2,4V ab, der Strom durch R32 (und damit auch der Strom durch den Vorwiderstand und die LED) beträgt dann bei 2,4V/4700Ohm etwa 0,0005A oder 0,5mA.