Forum: Mikrocontroller und Digitale Elektronik atmega16 PortD2 als Ausgang nutzen


von Icarus N. (vandor)


Lesenswert?

Hi

Ich bin dabei meine ersten Erfahrungen mit einem Microcontroler zu 
sammeln. Also hab ich mir ein einfaches Board zusammengelötet und das 
funktioniert auch soweit.
Ich wollte über einige Ports LEDs ansteuern. Das klappte auch sehr gut, 
nur an PortD2 bleibt die LED leider schwarz. Ich weis nicht warum.
Mit dem ACR Studio (+winavr) hab ich ein einfaches simples c-Programm 
geschrieben welches Port A-D 0-7 alle als Ausgänge definiert und selbige 
dann einschaltet.
An einigen Eingängen hab ich LEDs angeschloßen (nicht direkt, der 
Microcontroler schaltet Tranistoren frei), dich eigentlich alle leuchten 
sollten. Aber wie gesagt an PORT D 2 bleibt leider dunkel und ich weis 
nicht warum. die anderen LEDS an PORT D 3-7 leuchten alle. Ich würd nur 
ungern etwas umlöten müssen, sehr ihr vielleicht einen Fehler den ich 
mache? Oder kann ich den INT0 (PORTD2) gar nicht als Ausgang nutzen?

Ich hoffe ihr könnt mir helfen.
Vielen Dank im Vorraus

Icarus

Anbei den Quellcode
CODE:

#define LEDSA PORTA
#define LEDSB PORTB
#define LEDSC PORTC
#define LEDSD PORTD

#include <avr/io.h>
#include <stdint.h>

int main() {
DDRA = 0b11111111;
DDRB = 0b11111111;
DDRC = 0b11111111;
DDRD = 0b11111111;
LEDSA = 0b00000000;
LEDSB = 0b00000000;
LEDSC = 0b00000000;
LEDSD = 0b00000000;

while(1){
  LEDSA = 0b11111111;
  LEDSB = 0b11111111;
  LEDSC = 0b11111111;
  LEDSD = 0b11111111;

}}

von Karl H. (kbuchegg)


Lesenswert?

Icarus N. wrote:

> mache? Oder kann ich den INT0 (PORTD2) gar nicht als Ausgang nutzen?

DOch, kannst du. Kein Problem.

Überprüf noch mal deine Hardware auf Fehler:
Kalte Lötstellen, Leiterbahnunterbrechungen, defekte Led
und solche Dinge.

von Icarus N. (vandor)


Lesenswert?

Hi
Danke für den Tipp

Ich bei mir hat jeder Port einen eigenen Stecker, so das gerade mal den 
Stecker von Port D auf Port A gesteckt habe. Alle LEDs leuchten da auf. 
Allerdings will ich Port A anders nutzen. Ein weiteres Durchpiepsen der 
Leitungen ergab, dass die Lötstellen bis zu LED okay sind (wie ersteres 
Experiment schon zeigte.
Daraufhin bin ich mit meinem Messgerät an die Spitze des Pins PORTD2 in 
der Buchse (die Buchse für meinen oben benannten Stecker) gegangen und 
hab die Verbindung zu dem Beinchen des Microcontorlers getestet. Auch 
diese hat genau wie alle anderen Verbindungen einbandfreien Kontakt und 
zeigen keinen messbaren Fehler.
An den Fuse bits hab ich bisher nur auf externen Quarz umgestellt und 
JTAG deaktivert, da ich ja über ISP Programmiere.
Durch ein wenig lesen hab ich inzwischen herraus bekommen, das PORTD2 
irgendwie für "Interrputs" alternativ genutzt werden kann. jedoch konnte 
ich nicht finden wie ich diese alternative ausschalte, sofern es denn an 
ist

von Karl H. (kbuchegg)


Lesenswert?

Icarus N. wrote:

> Durch ein wenig lesen hab ich inzwischen herraus bekommen, das PORTD2
> irgendwie für "Interrputs" alternativ genutzt werden kann. jedoch konnte
> ich nicht finden wie ich diese alternative ausschalte, sofern es denn an
> ist

Es ist nicht defaultmässig an.
Im Grunde gibt es keinen Grund warum sich D2 anders als der
Rest verhalten sollte.
Wenn du keine LED anhängst, was sagt dein Voltmeter dann am Pin D2?

von Icarus N. (vandor)


Lesenswert?

Danke, darauf hätt ich kommen können.
Dank dem hab ich den Fehler gefunden. So simpel und ich hab ihn 
übersehn. Scheinbar hab ich irgendwo PortD2 mit Masse direkt verbunden. 
Jedenfalls ist der beim Messen immer auf 0V. Darauf hin hab ich nochmal 
durchgepipst, und scheinbar hab ich mich vertan. So bin dann mal auf der 
Suche nach meinem Masseschluß.
Tut mir leid das ich mit so einem banalen Problem hier aufgekreuzt bin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.