-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRELEASE_NOTES
84 lines (64 loc) · 6 KB
/
RELEASE_NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---- RELEASE NOTES ---------------------------------------------------------------------
ooPinChangeInt Release Notes
This is the ooPinChangeInt library for the Arduino. See the accompanying README file for
Description, License, and Acknowledgments.
See google code project for latest bugs and info http://code.google.com/p/arduino-oopinchangeint/
See the Github page for the latest development code: https://github.com/GreyGnome/ooPinChangeInt
---- VERSIONS ----------------------------------------------------------------------------
Version 1.06-rc4 Fri Oct 31 06:45:39 CDT 2014
Still getting up to speed on Git, I have tagged -rc3 without updating the Release Notes.
Therefore, I am now updating the Release Notes and tagging this release. No other changes over
v 1.06-rc3.
Version 1.06-rc2 Tue Jul 29 11:55:15 CDT 2014
jrhelbert found the bug that made PORTJ not work correctly on the Arduino Mega! Now
Ports J0 and 1 (Arduino pins 14 and 15) are available for Pin Change Interrupts on the Mega! Thanks,
JR. This release includes that fix, some minor code and comment cleanup, and a small fix to
Examples/ooPinChangeIntTest.ino.
Version 1.06-rc1 Sat May 17 05:57:12 CDT 2014
New versioning scheme, kind if like the Linux kernel. It seems to be a good one.
Now we are working our way towards Version 1.06. Along the way, we'll have "release candidates" which are beta versions. Once complete, the "-rc" suffix will be dropped and we will be on Version 1.06. Similarly for future versions.
Version 1.05(beta) Mon May 12 07:53:30 CDT 2014
After a 1.5 year hiatus, I'm back on the Arduino pony, so to speak. Cossjunk has recently contacted me about issues with the code so I have revisited it. The following changes were made:
- Fixed to #define NO_PORTA_PINCHAGES on the MEGA. MEGA does not have pin change interrupts on that port.
- Conversely, inline properly if have interrupts only on port A.
- modified the definition of class PCintPort, replaced the pcindex variable. I had mistakenly assumed that portInputReg could be defined thus:
portInputReg(*portInputRegister(index + 2))
But that doesn't work for ports J and K. This is now fixed.
- PORT A is supported, for the Sanguino and friends.
- Code reordering to eliminate warnings during compilation.
For testing and such, modified the ByteBuffer code to eliminate warnings about conversions from const char * to char *.
Version 1.03(beta) Wed Nov 21 18:20:46 CST 2012
Added MEGA support, as per PinChangeInt. This support has not been tested in this library; if you do use it with the MEGA please let me know. See the Google Code site for more information. Thanks.
Modified to not delete() pins that get detachInterrupt()'ed. Now when you detachInterrupt(), the PORT just disables interrupts for that pin; the PCintPin object remains in memory and in the linked list of pins (possibly slowing down your interrupts a couple of micros). You can reenable a detached interrupt- but you must do it within the PinChangeInt library (would anyone ever enable an interrupt on a pin, then disable it, then have need to reenable it but not using the library?).
Made the interrupt handler faster with an optimization from robtillaart to take out the checks for changed pins from the while() loop that steps through the pins:
uint8_t changedPins = (PCintPort::curr ^ lastPinView) &
((portRisingPins & PCintPort::curr ) | ( portFallingPins & ~PCintPort::curr ));
...This speedup is offset by changes in the PCint() handler, especially the PCintPort::curr bug reported below. This change was brought over from the Version 2.13(beta) PinChangeInt code.
Other bugfixes that follow the PinChangeInt-2.17beta release:
1. PCintPort::curr bug. In the interrupt handler PCint(), we loop as long as PCIFR indicates a new interrupt wants to be triggered, provided DISABLE_PCINT_MULTI_SERVICE is not defined (it is not by default):
#ifndef DISABLE_PCINT_MULTI_SERVICE
pcifr = PCIFR & PCICRbit;
PCIFR = pcifr; // clear the interrupt if we will process it (no effect if bit is zero)
} while(pcifr);
#endif
...Well. Problem is, if a pin pops up and causes the PCIFR to change, we have to reread the port and look at how it is now! I wasn't doing that before, so if a new interrupt appeared while I was still servicing the old one, odd behavior would take place. For example, an interrupt would register but then the userFunc would not be called upon to service it.
2. attachInterrupt() now returns a uint8_t value: 1 on successful attach, 0 on successful attach but using an already-enabled pin, and -1 if the new() operator failed to create a PCintPin object.
3. Created the enable() method, so that in the next interation I will be able to perform the optimization from robtillaart to take out the checks for the changed pins in the while() loop in PCint(). Look for a description of this change in the next beta version.
Version 1.00 Sat Dec 3 22:56:20 CST 2011
Modified to use the new() operator and symbolic links instead of creating a pre-populated
array of pointers to the pins. This consumes more flash, but makes possible some
additional C++ style functionality later.
Version 1.01 Thu Dec 8 21:29:11 CST 2011
Modified to use a C++ callback function. The arduinoPin variable is no longer necessary,
as this creates a new methodology for using the library.
Version 1.02 Tue Mon Mar 5 18:37:28 CST 2012
All code moved into this .h file so as to make it possible to recognize #define's in the
user's sketch.
Added #ifdef LIBCALL_OOPINCHANGEINT. Programmers using this library in another library
should define this macro, because this will allow you to #include it in your sketch AND
#include it in the library.
(As a matter of act, you must always #include this file in your sketch, even if it's only
used to support another library. See the Tigger library and example, for an example.)
Code uses the cbiface library, which is a much simplified and renamed version of cb.h
Library begins with the PinChangeInt v 1.3 code. See http://code.google.com/p/arduino-pinchangeint/
Version 1.03beta Wed Nov 21 18:20:46 CST 2012