Hallo allerseits,
leider habe ich unter den vielen Beiträgen keine Lösung zu meinem
Problem gefunden, deshalb schildere ich nun mal die
folgende Situation:
Ein ATMega128 treibt bei mir über 2 MC1413 insgesamt 12 12V-Relais.
Die Steuerpins sind Layoutbedingt auf verschiedene Ports verteilt, nur
einer davon liegt auf Port D, nämlich PD0. Alle anderen Pins an diesem
Port sind als Eingänge geschaltet. Steuere ich die Relais nun an, so
funktioniert alles blendend, nur PD0 hat im High-Zustand anstelle der 5
nur ~1V zu bieten (Strom nur einige µA), dementsprechend wird das
zugehörige Relais nicht angesteuert. Unterbreche ich nun die Leiterbahn
von PD0 zum 1413, so scheint alles in Ordnung zu sein, es liegen im
High-Zustand 5V an, verbinde ich sie wieder habe ich das gleiche Problem
wie vorher. Die Leiterbahnverbindung hat einen Widerstand von <0,3 Ohm,
daran kann es also nicht liegen (gemessen zwischen Pin AtmegA / Pin
MC1413). Zu den benachbarten Pins, Vcc und GND hat PD0 keine
niederohmige Verbindung. Verbinde ich den Eingangspin des MC1413 mit
einem anderen PortD-Portpin und steuere diesen als Ausgang an, so
funktioniert dies einwandfrei. Ist PD0 defekt, oder habe ich einfach
etwas übersehen?
Quellcode (Auszug)
1 | ...
|
2 | void init_ports(void)
|
3 | {
|
4 | ...
|
5 | DDRD |= (1<<DDD0);
|
6 | PORTD &= ~(1<<PD0);
|
7 | ...
|
8 | }
|
9 |
|
10 | ...
|
11 |
|
12 | int main(void)
|
13 | {
|
14 | init_ports();
|
15 |
|
16 | PORTD |= (1<<PD0);
|
17 |
|
18 | while(1);
|
19 |
|
20 |
|
21 | return 0;
|
22 | }
|
Florian