Archiv verlassen und diese Seite im Standarddesign anzeigen : MEGA, wie viel digitale IO Pins sind verfügbar?
spunky9003
11.05.2018, 10:53
der MEGA hat ja 54 digitale IO Pins, davon sind viele doppelt belegt, sind die trotzdem alle nutzbar? Ich bräuchte 48 bis 50 Eingänge und 2 für ein Bluetooth Modul. Man kann ja auch die analog Pins nutzen, dann müsste das ja reichen.
https://protosupplies.com/wp-content/uploads/2017/12/Arduino-Mega-2560-Board-Pinout.jpg
i_make_it
11.05.2018, 13:07
Es kommt darauf an was Du für anforderungen an die Digital IO's stellst.
Mit I2C Portexpandern kannst Du Dir eine richtig große Menge an Digital IO's zulegen.
Im Gegemsatz zu den internen, wären die aber nicht IRQ (pin change interrupt) fähig.
https://playground.arduino.cc/Code/I2CPortExpander8574
Solange Du die "Spezialfunktionen" nicht benötigst und auch keine Libraries verwendest, die Pins einer Spezialfunktion zuordnen, kannst Du alle 69 digital IO's nutzen.
Näheres steht wie so oft im Datenblatt (ATMega 2560).
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf
Wenn man die Ports nutzt (geht mit Arduino IDE auch) stehen µC seitig sogar alle Ports zur Verfügung
(Port A-L, wobei Port G nur 6 Pins hat)
Also 86 Digital IOs (von denen aber halt nur 69 rausgeführt sind).
Im Prinzip sind alle I/O Pins nutzbar.
Allerdings gibt es bei den ISP Pins die Einschränkung, das diese nur hochohmig ( > 4,7k ) mit Peripherie verbunden sein dürfen, sonst geht ISP nicht mehr.
Der Reset Pin sollte auch nicht als I/O genutzt werden, solange man über ISP proggen will.
Der Quarz braucht weitere 2 Pins.
Richtige "Analog Pins" gibt es eigentlich hier nicht.
Die Pins können nur als Eingang für den A/D Converter benutzt werden, sind aber ansonsten normale I/O Pins.
Die JTAG Schnittstelle braucht wiederum ein paar Pins, wenn man sie nutzen will.
Weitere Einschränkungen gibt es seitens des Boards.
Die USB Bridge wird schon mal 2 Pins brauchen ( Bootloader ! ), die nur schwierig anderweitig nutzbar sind.
Also gewünschte Funktionen anschauen und den Schaltplan des Boards dazu nehmen.
Erst dann kann man sagen wie viele und welche I/O Pins nutzbar sind.
Im Prinzip sind alle I/O Pins nutzbar.
Allerdings gibt es bei den ISP Pins die Einschränkung, das diese nur hochohmig ( > 4,7k ) mit Peripherie verbunden sein dürfen, sonst geht ISP nicht mehr.
Der Reset Pin sollte auch nicht als I/O genutzt werden, solange man über ISP proggen will.
Der Quarz braucht weitere 2 Pins.
Richtige "Analog Pins" gibt es eigentlich hier nicht.
Die Pins können nur als Eingang für den A/D Converter benutzt werden, sind aber ansonsten normale I/O Pins.
Die JTAG Schnittstelle braucht wiederum ein paar Pins, wenn man sie nutzen will.
Weitere Einschränkungen gibt es seitens des Boards.
Die USB Bridge wird schon mal 2 Pins brauchen ( Bootloader ! ), die nur schwierig anderweitig nutzbar sind.
Also gewünschte Funktionen anschauen und den Schaltplan des Boards dazu nehmen.
Erst dann kann man sagen wie viele und welche I/O Pins nutzbar sind.
@wkrug: Deine Aussage zum Quarz verstehe ich nicht, wo sollen welche Pins für den Quartz zuständig sein?
zu Interrupts:
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
USB läuft wie sonst auch über die UART pins 0+1, wie sonst auch bei Arduinos, die lassen sich aber auch wie GPIOs programmieren,
pins 2-13 (=12) sind digitale GPIOs, ebenfalls wie üblich,
pins 14-21 sind Serial1-3 und i2c,
pins 22-50 (29) sind wieder digitale GPIOs,
pins 51-53 sind für SPI,
die analogen ADC-Input-Pins A0-A15 (16) lassen sich auch als digitale Inputs verwenden.
pins 51-53 sind für SPI.
15 der GPIOs sind pwm-fähig,
6 der GPIOs sind (überlappend) auch für IRQs.
Die U(S)ARTs 14-19 lassen sich auch als normale GPIOs verwenden, ebenso die Wire (i2c)-Pins 20+21, und im Prinzip aber wie erwähnt auch UART pins 0+1.
Die ICSP-Schnittstelle ist mit den SPI-Pins verbunden.
Ohne also spezielle serielle Funktionen (Serial, Wire) zu benötigen oder zu stören, hast du 12+29 = 41 digitale pins, mit Serial1-3 weitere 6 = 47, und mit SPI-Pins weitere 4 =51.
Und dann kommen die 16 analogen ADCs noch oben drauf.
Ansonsten kannst du wie oen erwähnt auch über i2c oder SPI port-Multiplexer anschließen wie den PCF8574 (8 dig. pins, plus 1 IRQ pin) oder den MCP23017 (16 dig. pins plus 2 IRQ pins).
Ich denke, das könnte für deine Zwecke also in jedem Falle dicke reichen.
Ok Ok.
Beim ATMEGA 2560 lassen sich die Quarz Pins nicht umkonfigurieren = Pin 33 und 34.
Ebenso ist auch der Reset Pin nicht umkonfigurierbar = Pin 30.
Bei vielen anderen Controllern geht das aber - In diesem Fall hier hast Du HaWe natürlich recht.
Das mit den ISP Pins ist leider so.
Wenn man dort z.B. eine LED mit Vorwiderstand einbaut, streiken einige Programmer wie z.B. der AVR ISP MKII.
Ebenso dürfen da während des Programmierens keine externen Potentiale anliegen.
Das lässt sich natürlich einfach lösen, wenn man während der Programmierung das Shield abzieht und sämtliche Beschaltung nur auf dem Shield macht.
Ich kenn nun das Board nicht, aber Ich vermute, das die USB Bridge mit dem USART 0 verbunden ist und somit auf dem RxD Pin des Controllers bereits ein Potential anliegt.
Ausserdem muß man natürlich gucken, ob alle beschaltbaren Pins auch auf die Anschlussleisten des Board geführt sind und ob auf dem Board bereits eine Beschaltung vorliegt - Deshalb auch der Hinweis mit dem Schaltplan.
als langjähriger Mega2560-Nutzer muss ich sagen, dass es sich prinzipiell alles wie beim Nano verhält, außer dass i2c nicht mehr über analog 4+5 läuft sondern 20+21, und für USB gibt es hier wie da einen Extra-AVR zwischen UART (pins 0+1, soweit ich weiß kein USART) und USB - alles ganz Arduino-typisch. Der Reset-Pin ist gesondert herausgeführt (neben den analogen ADC), digital GPIO 30 auf der querliegenden Doppel-Pinleiste ist wie jeder andere "normale" GPIO nutzbar. Programmer wird ein Arduinianer auch nicht benutzen, dafür wird ja USB benutzt, also alles ganz entspannt.
Ok Ok.
Beim ATMEGA 2560 lassen sich die Quarz Pins nicht umkonfigurieren = Pin 33 und 34.
Ebenso ist auch der Reset Pin nicht umkonfigurierbar = Pin 30.
Bei vielen anderen Controllern geht das aber - In diesem Fall hier hast Du HaWe natürlich recht.
Das mit den ISP Pins ist leider so.
Wenn man dort z.B. eine LED mit Vorwiderstand einbaut, streiken einige Programmer wie z.B. der AVR ISP MKII.
Ebenso dürfen da während des Programmierens keine externen Potentiale anliegen.
Das lässt sich natürlich einfach lösen, wenn man während der Programmierung das Shield abzieht und sämtliche Beschaltung nur auf dem Shield macht.
Ich kenn nun das Board nicht, aber Ich vermute, das die USB Bridge mit dem USART 0 verbunden ist und somit auf dem RxD Pin des Controllers bereits ein Potential anliegt.
Ausserdem muß man natürlich gucken, ob alle beschaltbaren Pins auch auf die Anschlussleisten des Board geführt sind und ob auf dem Board bereits eine Beschaltung vorliegt - Deshalb auch der Hinweis mit dem Schaltplan.
hier an diesem pinout kann man erkennen, dass die AVR-Nr.30 für Reset nichts mit dem Arduino GPIO digital pin 30 zu tun hat, sondern stattdessen der gesonderte Resetpin neben A0 die "interne" AVR-Nr.30 trägt.
Auch kann man erkennen, dass die AVR-Nr. 33+34 überhaupt nicht auf die Arduino-GPIO-Leisten herausgeführt wurden:
33453
PS,
Die GPIO pins digital 33 und 34 tragen hingegen die internen AVR-Nr.57+56
hardware.bas
15.05.2018, 11:35
ISP-Pins grundsätzlich als Ausgänge nutzen, welche hochohmige
Schaltkreiseingänge ansteuert. Zum Beispiel Anzeigetreiber oder
Anzeigedecoder, dann hat man gleich eine optische Grobkontrolle
des Flashvorganges durch Flackern.
Sollten Eingänge von Schaltstufen dort angeschlossen sein, muss
jedoch extern sichergestellt werden, dass nicht irgendwelche
Motoren, Magnetve etc undefiniert losspuken.
VG Micha
ISP-Pins grundsätzlich als Ausgänge nutzen, welche hochohmige
Schaltkreiseingänge ansteuert. Zum Beispiel Anzeigetreiber oder
Anzeigedecoder, dann hat man gleich eine optische Grobkontrolle
des Flashvorganges durch Flackern.
Sollten Eingänge von Schaltstufen dort angeschlossen sein, muss
jedoch extern sichergestellt werden, dass nicht irgendwelche
Motoren, Magnetve etc undefiniert losspuken.
VG Micha
Die Verwendung der Pins 50-52 als "normale" IOs halte ich sowieso grundsätzlich für schlecht, wenn man auch SPI nutzen will (TFT, SD), denn die ICSP Pins sind wie gesagt mit den Hardware-SPI Pins auf dem GPIO Header (50 MISO, 51 MOSI, 52 SCK) verbunden.
Flashen wird aber sowieso kein Arduino-Normal-Nutzer über ICSP, man verwendet dazu üblicherweise USB und den Upload per Arduino-IDE.
hardware.bas
15.05.2018, 12:18
Ist ja auch nur notwendig, wenns eng mit der PIN-Anzahl wird.
Als SMD-Muffel hab ich das Problem öfter.
VG Micha
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.