Forum: Compiler & IDEs PortD Pin2 nutzen geht nicht


von Markus _. (markush)


Lesenswert?

Hi Leutz,

ich hab folgenden Code:
1
DDRD |= (1 << DDD0) | (1 << DDD1) | (1 << DDD4) | (1 << DDD5);    
2
DDRD &= ~(1 << DDD6) & ~(1 << DDD2);            
3
PORTD |= (1 << PD6) | (1 << PD2) | (1 << PD4) | (1 << PD5);

Zusätzlich läuft INT0. Der Interrupt arbeit auch, die Routine wird wie 
gewünscht aufgerufen.

Das Problem ist nun dass der oben angesprochene PIND2 nicht funzt! Warum 
weiss ich auch nicht. Normalerweise sollte er ja HIGH sein sowie PIND6 
auch.
Aber er ist LOW und ich weiss ehrlich gesagt nicht warum?!? Hängt das 
mit INT0 zusammen? Der µC ist ein 2313, ich hab auch schon ausgetauscht, 
Hardware ist also in Ordnung.

Gibt's da vielleicht ne Abhängigkeit mit IRQ's?

Markus

von Markus _. (markush)


Lesenswert?

Öhm,

auch das geht nicht:
1
DDRD = 0x00;
2
PORTD = 0xFF;

Leeres Programm, kein Interrupt definiert, nix! Alle PIN's vom PortD 
sind HIGH nur am Pin 6 des µC ist kein HIGH?????

Seh ich den Wald vor lauter Bäumen nicht, oder wie?

Markus

von Henrik J. (henrikj)


Lesenswert?

Seite 47 Datenblatt Tiny2313

"The DDxn bit in the DDRx Register selects the direction of this pin. If 
DDxn is written
logic one, Pxn is configured as an output pin. If DDxn is written logic 
zero, Pxn is configured
as an input pin."

Is klar, oder? N typischer Anfängerfehler (Ich hab den auch gemacht ;) )

von Karl H. (kbuchegg)


Lesenswert?

Das sollte in dem Fall kein Problem sein.

Er konfiguriert alle Pins auf Eingang und
schaltet auf jedem Pin den Pullup Widerstand ein.
Damit sollte sich mit einem Voltmeter am Pin ein
High-Pegel einstellen.

von Markus _. (markush)


Lesenswert?

Henrik Jahnke wrote:
> Seite 47 Datenblatt Tiny2313
>
> "The DDxn bit in the DDRx Register selects the direction of this pin. If
> DDxn is written
> logic one, Pxn is configured as an output pin. If DDxn is written logic
> zero, Pxn is configured
> as an input pin."
>
> Is klar, oder? N typischer Anfängerfehler (Ich hab den auch gemacht ;) )

Hä??? Das musst du mir erklären. Was mache ich nicht so wie es da steht? 
Der PD2 soll ja ein Eingangspin sein und wenn ich den PullUp einschalte 
muss da ein HIGH Pegel zu messen sein.

@Karl heinz:
Kannst du dir das irgendwie erklären? Kann es das die beiden AT90S2313 
defekt sind? Wohl eher nicht, hatte bisher noch nie einen defekten - und 
das bei der rumtesterei und Kurzschlüsse... ;-)

Gruss, Markus

von Karl H. (kbuchegg)


Lesenswert?

Nein. Erklären kann ich das so auch nicht.

Ich hab allerdings nicht das Datenblatt studiert, ob
es da irgendwelche Sonderfunktionen oder sonstige
Spezialitäten auf dem Pin gibt.

von Markus _. (markush)


Lesenswert?

Ok, werd das heute abend nochmal testen. Da ich noch andere Pins freihab 
werd ich da einen anderen nehmen und gut is.

von Markus _. (markush)


Lesenswert?

Ok Leutz,

sowas kann man auch nicht erklären. Ich hab mir die Platine jetzt mal 
unter der Lupe angesehen. Und da hab ichs entdeckt: Feiner Schluss am 
PortPin mit Masse!
Gegen sowas ist natürlich jede Software machtlos :-). Auf alle Fälle 
funzt es jetzt und die AVR's haben's auch überlebt! ;-)

Gruss, Markus

von Henrik J. (henrikj)


Lesenswert?

Nice. Ist natürlich auch ne fiese Nummer. Manchmal sind die Sachen ganz 
einfach.

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.