Hallo,
ich bin ratlos zwecks meiner Pullup Widerstände.
Folgender Code wird verwendet:
1 | int main ()
|
2 | {
|
3 | // Ausgänge einstellen
|
4 | DDRC |= (1<<DDC0) | (1<<DDC1) | (1<<DDC2) | (1<<DDC3) | (1<<DDC4) | (1<<DDC5);
|
5 | DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2) | (1<<DDB3) | (1<<DDB4) | (1<<DDB5);
|
6 | DDRD |= (1<<DDD7) | (1<<DDD6) | (1<<DDD5);
|
7 | DDRD &= ~(1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
|
8 |
|
9 | // Pullupwiderstände der Taster
|
10 | PORTD |= (1<<PD0 | 1<<PD1 | 1<<PD2 | 1<<PD3 | 1<<PD4);
|
11 | PORTB |= (1<<PB6);
|
Das sollte auf alle Fälle dafür sorgen, dass die Pins PD0-PD4 EINGÄNGE
sind UND DIE PULLUPS AN sind.
Ich weiß dass es doppelt ist, aber ich wollte auf Nummer sicher gehen.
Folgender Effekt tritt auf:
Der Pullup des Ports B (PB6) ist einwandfrei.
Der Pullup des Ports D (PB0) zieht nur auf 2,5 (von 3,3V) hoch.
Die Pullups am restlichen Port D, also PD1-4 ziehen gar nicht hoch.
Dementsprechend funktionieren natürlich auch die Taster nicht.
getestet an: Atmega88-20PU, Atmega168PV-10PU
Was mach ich falsch, sind die alternativ Funktionen von PortD
angeschaltet? Wenn ja wo schalt ich sie ab?
Dank und Gruß
Chris