vimwiki/tech/arduino_techniques.wiki

48 lines
1.1 KiB
Plaintext

= Arduino Programming Techniques =
This is mostly gonna be C++
== Accessing a GPIO line ==
{{{
//data direction register bit
unsigned char *portDDRB;
portDDRB = (unsigned char *) 0x24;
}}}
First we get an 8bit pointer and load it with a hard coded value of
the data-space address for that register
See [[arduino_nano#Pins]]
== Bit masks ==
{{{
#define BIT6_MASK 0x40 // 0100 0000
#define BIT5_MASK 0x20 // 0010 0000
*register_pointer = (*regiser_pointer) & (~BIT6_MASK);
*register_pointer = (*regiser_pointer) | BIT5_MASK;
}}}
For the first one we find the compilemnt then '&' it with the current
register values, which will only flip the selected bit.
For the second one we '|' it with the contents, setting a 1 in the 5th position
== Polling GPIO pins ==
repeatedly reading the value of the input pins and comparing the current value
to the previously-read value to determine if an external signal event has
occurred.
We can do this by comparing the last known value of the gpio pin with the
current one
See [[arduino_nano#Pins]]
[[embedded]]