The fastest way to change or flip Arduino pins

checkered-flag.gif

I tested the difference in speed between the Arduino digitalWrite() function, and other methods of direct port manipulation. The results are surprising, check it out on my website. 

http://www.billporter.info/?p=308

 

 

its C not ASM… what did

its C not ASM… what did you expected from a developing board? :slight_smile: PICAXE is slow to in comparation with PIC :stuck_out_tongue:

What may come as obvious to

What may come as obvious to you and I may not be obvious to all; which is why I wrote the article. Even Arduino says it is slow, but not by how much.  

yes thats true… :slight_smile: after

yes thats true… :slight_smile: after all, now we can see how slow is this…

Thanks! Very helpful.Got a

Thanks! Very helpful.

Got a question: “Next I tested just flipping a pin. By this I mean I just changed the pin state without knowing what the initial state was without testing. The methods of testing” 

now this i what you wrote in you walkthrough and if i got it right you mean toggling (if 1, becomes 0 and if 0 becomes 1). But, if this is the case i don’t understand this macro: #define sbi(port,bit) (port)|=(1<<(bit)) 

Basically what i don’t understand is the |=, if i well remember that should be “compund” or but then if the bit 1 and you OR it with a 1 it’ll still be 1, won’t it? I have seen a similar setup but with XOR instead of OR. Most probably i’m the wrong one, but i can’t understand why :=).

 

EDIT: did some googling and it looks like the secret lies in using PINB instead of PORTB …wow, didn’t know that :=) Double thanks for sharing then, i just learned a new trick!