GreyGnome / EnableInterrupt

New Arduino interrupt library, designed for Arduino Uno/Mega 2560/Leonardo/Due
329 stars 73 forks source link

Fake Pin of atmega2560 conflicts with pins from datasheet #37

Closed MulajEgzon closed 7 years ago

MulajEgzon commented 7 years ago

pin: fake70 PJ2 this is Pin Change Interrupt PCINT11 pin: fake71 PJ3 this is Pin Change Interrupt PCINT12 pin: fake72 PJ4 this is Pin Change Interrupt PCINT13 pin: fake73 PJ5 this is Pin Change Interrupt PCINT14 pin: fake74 PJ6 this is Pin Change Interrupt PCINT15 pin: fake75 PE6 this is External Interrupt INT6 pin: fake76 PE7 this is External Interrupt INT7

Must BE || pin: fake65 PJ2 this is Pin Change Interrupt PCINT11 pin: fake66 PJ3 this is Pin Change Interrupt PCINT12 pin: fake67 PJ4 this is Pin Change Interrupt PCINT13 pin: fake68 PJ5 this is Pin Change Interrupt PCINT14 pin: fake69 PJ6 this is Pin Change Interrupt PCINT15 pin: fake8 PE6 this is External Interrupt INT6 pin: fake76 PE7 this is External Interrupt INT7

http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf https://www.arduino.cc/en/uploads/Hacking/PinMap2560sma_.png

GreyGnome commented 7 years ago

You have given me the real ATmega2560 pin numbers that correspond with those interrupts. But they conflict with the Arduino pin numbers. For example, Arduino digital pin 69 is the same as Arduino Analog pin 15 which is the ATmega2560 pin 82.

The pins I give are "fake" in the Arduino world, not in the ATmega2560 pinout.

If I use your numbers, however, then (for example) "fake" pin 8, aka PE6, would conflict with the real Arduino pin 8... and in any event, it would break the array digital_pin_to_port_bit_number_PGM.

Also, the definitions eg

define ARDUINO_PIN_J2 70

would break as well.

But maybe I'm wrong. Do you have a bug that demonstrates bad behavior?

On Thu, Nov 17, 2016 at 5:43 PM, Egzon Mulaj notifications@github.com wrote:

pin: fake70 PJ2 this is Pin Change Interrupt PCINT11 pin: fake71 PJ3 this is Pin Change Interrupt PCINT12 pin: fake72 PJ4 this is Pin Change Interrupt PCINT13 pin: fake73 PJ5 this is Pin Change Interrupt PCINT14 pin: fake74 PJ6 this is Pin Change Interrupt PCINT15 pin: fake75 PE6 this is External Interrupt INT6 pin: fake76 PE7 this is External Interrupt INT7

Must BE || pin: fake65 PJ2 this is Pin Change Interrupt PCINT11 pin: fake66 PJ3 this is Pin Change Interrupt PCINT12 pin: fake67 PJ4 this is Pin Change Interrupt PCINT13 pin: fake68 PJ5 this is Pin Change Interrupt PCINT14 pin: fake69 PJ6 this is Pin Change Interrupt PCINT15 pin: fake8 PE6 this is External Interrupt INT6 pin: fake76 PE7 this is External Interrupt INT7

http://www.atmel.com/Images/Atmel-2549-8-bit-AVR- Microcontroller-ATmega640-1280-1281-2560-2561datasheet.pdf https://www.arduino.cc/en/uploads/Hacking/PinMap2560sma.png

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/GreyGnome/EnableInterrupt/issues/37, or mute the thread https://github.com/notifications/unsubscribe-auth/ADSime7vmpy1Qfa3wnWjGxdf5vD67g19ks5q_OaXgaJpZM4K19C2 .

-- -Mike Schwager

GreyGnome commented 7 years ago

This is way late, but my hint is as follows: Find a diagram of an ArduinoMega, and choose the pins that you're concerned about. You'll have to translate them into the ATmega2560 in your own mind. Then, once you've decided you've found the proper pin, you can used the library as you wish.