Forum: Mikrocontroller und Digitale Elektronik Arduino Mega2560 Verständnissfrage


von Daniel E. (everyday_fun69)


Lesenswert?

Hallo in die Runde und ich wünsche ein sonnigen Feiertag.

Hab hier einen Arduino Mega 2560 aufm Tisch liegen und an PIN 21 einen 
Taster angeschlossen, der eine LED PIN 34 zum leuchten bringen soll.

Laut Datenblatt und meiner Info hat der Chip interne PULLups, welche 
aktiviert werden "können".

1. Am Eingang 21 (Taster) hab ich einen 27 K Pulldown dran und wenn der 
Pullup nicht aktiviert (pinMode(interruptPin, INPUT) ist hat der PIN 
3,561 V und gedrückt natürlich 5 V

2. Wenn ich den Pullup intern aktiviere (pinMode(interruptPin, 
INPUT_PULLUP), hat der Eingang 3,772 V und gedrückt 5V.

Hat jemand eine Idee, wo mein Fehler liegt bei Fall 1 ? Sollten ja 0 V 
sein mit dem Pulldown und nicht aktivierten Pullup.

Danke.

// Setze den Pin für die LED auf 13
const byte ledPin = 34;
// Setze den Interruptpin auf 2
const byte interruptPin = 21;
// Definiere eine globale volatile Variable für den Status der LED
volatile byte state = LOW;

void setup() {
  // Lege den Pin für die LED als Outputpin fest
  pinMode(ledPin, OUTPUT);
  // Lege den Interruptpin als Inputpin mit Pullupwiderstand fest
  pinMode(interruptPin, INPUT_PULLUP);
  // Lege die ISR 'blink' auf den Interruptpin mit Modus 'CHANGE':
  // "Bei wechselnder Flanke auf dem Interruptpin" --> "Führe die ISR 
aus"
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);
}

void loop() {
  // Schreibe den Status der LED auf den LED-Pin zurück:
  // "Schalte die LED an oder aus"
  digitalWrite(ledPin, state);
}

void blink() {
  // Invertiere den Status: "Lass die LED blinken von HIGH auf LOW/ an 
auf aus"
  state = !state;
}

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Hat jemand eine Idee, wo mein Fehler liegt bei Fall 1 ?

Pin 20 und 21 sind der I²C Bus. Beim I²C Bus sind die Leitungen SCL und 
SDA mit einem 10kΩ Pull-Up Widerstand ausgestattet. Siehe Schaltplan vom 
Board.

von Daniel E. (everyday_fun69)


Angehängte Dateien:

Lesenswert?

Hallo und danke fürs Feedback.
Sieht nach meinen Recherchen irgendwie anders aus …

oder meinst du die sind intern fix dran ?

https://www.arduino.cc/en/uploads/Main/arduino-mega2560-schematic.pdf

Danke

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Sieht nach meinen Recherchen irgendwie anders aus …

weiter rechts oben

Der Schaltplan ist ein zerstückeltes Suchbild. Aber verglichen mit dem, 
was hier des öfteren präsentiert wird, sieht der noch sehr gut aus.

von Daniel E. (everyday_fun69)


Lesenswert?

Stefan F. schrieb:
> Daniel E. schrieb:
>> Sieht nach meinen Recherchen irgendwie anders aus …
>
> weiter rechts oben
>
> Der Schaltplan ist ein zerstückeltes Suchbild. Aber verglichen mit dem,
> was hier des öfteren präsentiert wird, sieht der noch sehr gut aus.

Blöd gelaufen….

Vielen vielen Dank 👍 für die geistige Erleuchtung und einen schönen 
Feiertag noch und bis zum nächsten Problem 🫣

von Wastl (hartundweichware)


Lesenswert?

Daniel E. schrieb:
> und bis zum nächsten Problem

Du bist seit 9 Jahren hier angemeldet und schaffst es nicht deinen
Code so zu posten dass man ihn gut lesen kann?

Siehe Hinweise zum Posten von Code.

Entweder so
1
// Setze den Pin für die LED auf 13
2
const byte ledPin = 34;
3
....

oder gleich als Anhang im Beitrag posten.

von Joe L. (joelisa)


Lesenswert?

Daniel E. schrieb:
> Hab hier einen Arduino Mega 2560 aufm Tisch liegen und an PIN 21 einen
> Taster angeschlossen, der eine LED PIN 34 zum leuchten bringen soll.
>
> Laut Datenblatt und meiner Info hat der Chip interne PULLups, welche
> aktiviert werden "können".
>
> 1. Am Eingang 21 (Taster) hab ich einen 27 K Pulldown dran und wenn der
> Pullup nicht aktiviert (pinMode(interruptPin, INPUT) ist hat der PIN
> 3,561 V und gedrückt natürlich 5 V

Zusätzlicher Hinweis:
Taster benutzt man i.A. in "negativer Logik", d.h. Pull-up am Eingang 
und Taster zieht nach 0V.

https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Pullup-Widerstand

Solange man die Platine nicht groß verlässt, und der Taster für den 
geringen Strom ausgelegt ist, reicht meist der interne Pull-up 
(ATtiny161x:  typ. 35k, 20...50k).

Zitat zum dort veröffentlichen Beispielcode:
"Werden auf diese Art und Weise die AVR-internen Pullup-Widerstände 
aktiviert, so sind keine externen Widerstände mehr notwendig und die 
Beschaltung vereinfacht sich zu einem Taster, der einfach nur den µC-Pin 
mit GND verbindet."

: Bearbeitet durch User
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.