AVR-Controller und IO-Ports

Hallo!
Ich benutze einen AT90S2313. Im Kurs aus den Amateurfunkheften wurden an die IO-Ports direkt LEDS mit Vorwiderständen dran gehangen. Allerdings Low-Current LEDS. Ich habe gerade nur Standard-LEDS da und mit Vorwiderstand leuchten die fast gar nicht. Dann habe ich den Vorwiderstand weg gelassen und man sieht ein bisschen was. Dann habe ich einen 74LS04 angeschlossen und das Signal doppelt invertiert. Nur ist der Pegel zu gering, das er als High vom 74LS04 interpretiert wird. Dann habe ich BC547A Transistoren ohne Vorwiderstand angeschlossen und im Kollektorkreis meine LED mit entsprechendem Vorwiderstand eingebaut. Jetzt leuchten aber nicht alle LEDS gleich hell. Zwar gut sichtbar, aber die letzte ein wenig dunkler als die erste. Was mache ich falsch? Ich kann doch nicht jedes mal eine Transistorstufe und Schmitttrigger oder Inverter einsetzen, nur um ein brauchbares Signal zu bekommen. Einen Motor damit zu steuern wäre Wahnsinn, aber das der Fan-Out nicht einmal für Digital-ICS genügt ist schlecht. Oder ist vielleicht der AVR-Chip kaputt?
Vielen Dank im Voraus.

Gruß christian

Hallo,
Der Port B diese Bausteins ist bidirektional. Das heißt, jeder Pin kann als Eingang oder Ausgang benutzt werden. Laut Datenblatt hat jeder Pin ‚20mA sink‘-Fähigkeit, das heißt, er kann 20mA ‚ziehen‘. Oder anders ausgedrückt, er kann max. 20mA ‚nach Masse ableiten‘. Du mußt also die LED’s mit Vorwiderstand nach +5V anschließen, ein ‚Low‘ am Ausgang schaltet dann die LED ein.

Es gibt auch noch einen internen Pullup-widerstand. Dieser ist relativ hochohmig. Deshalb kann man die Pins nicht zum Betrieb einer LED nach Masse verwenden.

In jedem Fall solltest Du dir das Datenblatt von Atmel besorgen:
http://www.atmel.com/dyn/resources/prod_documents/DO…
(92 Seiten, auf Seite 50ff ist der Port B beschrieben).
Da kannst Du Dir die Programmierung der Richtungsregister etc. mal anschauen. Englisch wär allerdings schon wichtig…

Axel