Skip to content

Commit cfd3d21

Browse files
authored
Merge pull request #211 from jgfoster/portInputRegister
Add macro for `portInputRegister()`
2 parents 58be87e + 2d2eece commit cfd3d21

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

Diff for: CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
88
## [Unreleased]
99
### Added
1010
- `arduino_ci_remote.rb` CLI switch `--skip-examples-compilation`
11-
- Add support for `diditalPinToPort()`, `digitalPinToBitMask()`, and `portOutputRegister()`
11+
- Add support for `diditalPinToPort()`, `digitalPinToBitMask()`, `portOutputRegister()`, and `portInputRegister()`
1212
- `CppLibrary.header_files` to find header files
1313
- `LibraryProperties` to read metadata from Arduino libraries
1414
- `CppLibrary.library_properties_path`, `CppLibrary.library_properties?`, `CppLibrary.library_properties` to expose library properties of a Cpp library

Diff for: SampleProjects/TestSomething/test/outputRegister.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,23 @@ unittest(portOutputRegister)
2121
*(ss_pin_reg) |= ss_pin_mask; // clear SS
2222
assertEqual((int) 1, (int) *ss_pin_reg); // verify value
2323
}
24+
25+
unittest(portInputRegister)
26+
{
27+
uint8_t ss_pin = 12;
28+
uint8_t ss_port = digitalPinToPort(ss_pin);
29+
assertEqual(12, ss_port);
30+
uint8_t *ss_pin_reg = portInputRegister(ss_port);
31+
assertEqual(GODMODE()->pMmapPort(ss_port), ss_pin_reg);
32+
uint8_t ss_pin_mask = digitalPinToBitMask(ss_pin);
33+
assertEqual(1, ss_pin_mask);
34+
35+
assertEqual((int) 1, (int) *ss_pin_reg); // verify initial value
36+
*(ss_pin_reg) &= ~ss_pin_mask; // set SS
37+
assertEqual((int) 0, (int) *ss_pin_reg); // verify value
38+
*(ss_pin_reg) |= ss_pin_mask; // clear SS
39+
assertEqual((int) 1, (int) *ss_pin_reg); // verify value
40+
}
2441
#endif
2542

2643
unittest_main()

Diff for: cpp/arduino/Godmode.h

+1
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ inline void noTone(uint8_t _pin) {}
182182
#if defined(__AVR__)
183183
#define digitalPinToBitMask(pin) (1)
184184
#define digitalPinToPort(pin) (pin)
185+
#define portInputRegister(port) (GODMODE()->pMmapPort(port))
185186
#define portOutputRegister(port) (GODMODE()->pMmapPort(port))
186187
#else
187188
// we don't (yet) support other boards

0 commit comments

Comments
 (0)