Arduino Mega2560 nicht angeschlossene Pins

Hallo,

Beim Mega2560-Board sind 16 Pins vom Chip nicht angeschlossen, würde die gerne aber trotzdem nutzen. Wie kann ich diese Pins Ansteuern? die Restlichen Pins haben ja eine Nummer (z.B. 3 oder A0), gibt es auch eine Bezeichnung für die restlichen oder muss man dafür den Bootloader anpassen?

Danke

Gruß Patrick

Hi

Dazu gibt wohl das DaBla Auskunft - vorerst, wie die Pins heißen - dann könnte man sich überlegen, ob die Pins, Die nicht 'NC' sind nicht aus gutem Grund nicht benutzt werden. Such Dir das PinOut zum Mega, das DaBla zum darauf verbauten Chip und finde heraus, welche Pins Das nun sind, Die (zumindest bis jetzt) nicht in Verwendung sind.

Der Bootloader hat nur die Aufgabe, auf einen neuen Sketch zu warten (daher der Name) - Dem sind die Arduino-Pin-Bezeichnungen recht egal.

Viel mehr müsstest Du der Arduino-IDE beibringen, diese neuen Pins anzusprechen - da man aber auch (irgendwie) Assembler einbinden kann (direkte Port-Zugriffe), sollte auch Das möglich sein - wobei mir Assembler innerhalb eines Sketch bisher noch nicht in den Kopf gedrungen ist - für mich sind Da zu viele 'magic numbers' unterwegs ;) (auf Deutsch: Das habe ich noch nicht gefressen)

MfG MfG

Peps086: Beim Mega2560-Board sind 16 Pins vom Chip nicht angeschlossen, würde die gerne aber trotzdem nutzen.

Ok....welche Pins und welches Board ? Bitte mal genauere Informationen (Hyperlinks) liefern.

HotSystems: Ok....welche Pins und welches Board ?

Ist das Board laut Titel nicht klar? Ich interpretiere einen orginalen Arduino MEGA2560

Grüße Uwe

Das Board ist das Arduino Mega2560 Rev3 ( https://store.arduino.cc/mega-2560-r3 )

Die Pins vom Chip sind 4, 8, 9, 14, 27, 28, 29, 47, 48, 49, 65, 66, 67, 68, 69, 79.
https://www.arduino.cc/en/Hacking/PinMapping2560

Im Prinzip alle die auch Link keine Mapped Pin Name haben.

Hi

Da Das 'ganz normale Pins' sind, bleiben nur Schlüsse zu, wie 'auf der Platine war kein Platz mehr'. Vll. wird der eine oder andere Pin Seiner Spezialfunktion beraubt, da der Arduino den dort zu Grunde liegenden Timer selbst benutzt und man deshalb auf diesen Pin verzichtet hat und dann 'zu Wenige' über blieben, um Diese sinnvoll auf die Platine zu bekommen, ohne das Grundformat zu sprengen.

So wie ich Das sehe, werden diese Pins dann auch nicht großartig geroutet sein, hängen also durchgehend 'in der Luft' - da ja Keiner Sie auf OUT oder INPUT_PULLUP umstellt (wobei ich mich Da auch irren kann und die Arduino-IDE im Kompilät alles per se Ungenutzte in einen sicheren Zustand bringt).

Selber bin ich mit SMD-Komponenten bisher eher auf Kriegsfuß, da würde ich gerne einen Blick auf Das 'Danach' werfen wollen - auch, wie Du die Pins physisch greifbar machen willst, also den PinHeader anbringst o.Ä. .

MfG

uwefed: Ist das Board laut Titel nicht klar? Ich interpretiere einen orginalen Arduino MEGA2560

Grüße Uwe

Wenn es dann stimmt, ist es ok. Aber ich vergewisser mich gern mal. Soll ja schon vorgekommen sein, das es doch nur ein Clone ist.

Wenn die Beschreibung stimmt dann hat der https://www.seeedstudio.com/Seeeduino-Mega-ATmega2560.html alle Pins herausgeführt. https://github.com/SeeedDocument/Seeeduino_Mega/blob/master/res/Seeeduino%20Mega%20pin%20mapping.pdf Die in der IDE nicht verwendeten Pins mußt Du direkt über die Register des Controllers ansprechen. Siehe https://www.arduino.cc/en/Reference/PortManipulation und das Datenblatt des ATmega2560.

Grüße Uwe

Also ich glaub ich habe mein Problem gelöst, ich habe das Pin-Mapping (pins_arduino.h) angepasst und das scheint zu funktionieren. Ich kann die Restlichen Pins jetzt mit den Nummern 70-85 verwenden.

Danke an alle

Gruß Patrick

(wobei ich mich Da auch irren kann und die Arduino-IDE im Kompilät alles per se Ungenutzte in einen sicheren Zustand bringt).

Nöö.. Das tut sie nicht. Dafür ist der Programmierer selber zuständig.

Vll. wird der eine oder andere Pin Seiner Spezialfunktion beraubt,

Ja, das ist wirklich ausgesprochen schade.... Mir persönlich fehlte da schon der synchrone Modus der seriellen Schnittstellen.

Naja...

Zum Glück gibt es ja auch "Mega kompatible", wo alle Pins herausgeführt sind. z.B. dieser Gibts auch in der Elektrobucht und bei Ali als Set -> z.B. dieses

Seeeduino-Mega-ATmega2560

Auch eine interessante Variante

Also ich glaub ich habe mein Problem gelöst, ich habe das Pin-Mapping (pins_arduino.h) angepasst und das scheint zu funktionieren. Ich kann die Restlichen Pins jetzt mit den Nummern 70-85 verwenden.

Fein!

Hi

@combie Blöd ist halt, wenn ich als Programmierer dafür da bin, die nicht benutzten Pins in sichere Zustände zu bringen, aber die Hausmittel mich damit gar nicht spielen lassen. Wie geschrieben kommt man wohl mit Assembler an die Pins ran, Da sind wir aber ein kleines Stück vom Arduino-Normal-Mensch weg, wenngleich man 'mit Bordmitteln' und dem passendem Wissen eben doch an die Pins heran kommt.

@Peps086 Wie wäre Es, wenn Du Deine Anpassungen für späteres Volk zur Verfügung stellst? (Mega wäre zwar vorhanden, aber was sinnvolles macht Der bestimmt (noch?) nicht - derzeit reichen Uno und Nano)

MfG

Ich habe mal die Datei angehängt.
Wenn man im Ordner “…Arduino\arduino-1.8.5\arduino-1.8.5\hardware\arduino\avr\variants\mega” die Datei mit der im Anhang ersetzt sollte es Funktionieren.
Ich habe das ganze nur mal schnell getestet, von daher keine Garantie das alles so funktioniert :smiley:

pins_arduino.h (15.4 KB)

@combie
Blöd ist halt, wenn ich als Programmierer dafür da bin, die nicht benutzten Pins in sichere Zustände zu bringen, aber die Hausmittel mich damit gar nicht spielen lassen.
Wie geschrieben kommt man wohl mit Assembler an die Pins ran, Da sind wir aber ein kleines Stück vom Arduino-Normal-Mensch weg, wenngleich man ‘mit Bordmitteln’ und dem passendem Wissen eben doch an die Pins heran kommt.

Jetzt übertreibst du ein bisschen… :o :o :o

Erstens:
Solange man nicht auf dem Extem-Stromspar-Trip ist, ist das doch alles egal.
Für einen solchen Trip ist ein Arduino Board sowieso eher die falsche Wahl.

Zweitens:

void setup() 
{
 PORTC = 0xFF; // aktiviert alle Pullup auf Port C
}

void loop() {}