I thought the digitalWriteFast2, pinModeFast2 version was preferable. A program called digitalWriteFastTest. Someday I’ll get around to writing some test cases to demonstrate the problem. That would mean that his boards would work better with the servo and tone libraries than the branded Arduinos. How do we handle problem users? I agree, it’s a good trade-off.
|Date Added:||7 April 2018|
|File Size:||13.31 Mb|
|Operating Systems:||Windows NT/2000/XP/2003/2003/7/8/10 MacOS 10/X|
|Price:||Free* [*Free Regsitration Required]|
Nice to see you’re using these macros I wrote months ago. You’ve provided a digitslwritefast intermediate level library for those of us that haven’t got around to working directly with the hardware yet.
Subscribe to RSS
The port manipulation commands control the same pins but refer to them in a completely different syntax and depend on specific details of the pin being known at the time the program is written.
If the surrounding code is complex, but doesn’t digitalwriteffast other functions, which can often be the case with digitalWrite, the saving in register allocation are also a big win.
Such is the way of race conditions. You can try with your current core and see. Edgar Bonet Edgar Bonet I don’t know that interrupts will be in use and don’t know if digitalWrite will be used inside the interrupt routines in the code that uses these macros.
digitalWriteFast, digitalReadFast, pinModeFast etc
Paul Stoffregen’s work on defining the port and bit to pin conversion has been flawless but testing seems prudent. It might be hard to find that issue.
I thought the digitalWriteFast2, pinModeFast2 version was preferable. The object code will not only be faster, but actually smaller as well. This would mean about 30 pins needed for the SRAM only.
I’m certainly not going to put any more effort into it now, other than pointing out this lack of checking for illegal pin number input. But that’s not “exactly” how I wrote it. It looks to me like he’s also implemented the code necessary to protect against the interrupt interference of issue ; there is some conditionally included code that implies something like that. ardunio
arruino Thanks Paul Stoffregen did the heavy lifting on this and deserves most of the kudos. It would be wise if people with other Arduinos would test those boards. I’m still trying to figure out how to tie something this small to a useful prototyping shield though.
At the time, David seemed interested to include them in Arduino. This “bitWrite” macro coding style really isn’t my first choice. That would mean that his boards would work better with the servo and tone libraries than the branded Arduinos. I have no experience on that chip.
How do we handle problem users? I just tried to time digitalWrite against direct port access with the following code:.
Port Manipulation and Arduino’s digitalWrite Performance – Timo Denk’s Blog
Improving the question-asking experience. I found out I made a stupid mistake and the library was not used.
I did not implement all of Paul’s suggestions. Unicorn Meta Zoo 9: Likely this will be obvious right away to most readers of this topic, but to me, as a novice, it wasn’t.
Port Manipulation and Arduino’s digitalWrite Performance
Issue relates to arduink between interrupt routines that contain digitalWrite instructions eg Servo and Tone Libraries and non-interrupt code. Active 2 years, 5 months ago. On all Arduino boards, that’s an analog input, likely never configured as an output, so the effect would be activating the pullup resistor on that analog in It is clearly a real issue and will be a difficult one to sort out for most people who encounter it. I have encountered at least one situation where I removed delays knowing that digitalWrite was slow and doubted the code would work if digitalWrite was speeded up.