This is an old revision of the document!
Pins
Pins library provides an easy way to operate with AVR digital input-output pins. User can create a pin related variable and do all the pin operations with that variable. This way there's no need to deal with the register names and bit indexes like it is done when programming in direct register access method. Pin's port and index must be specified only once, so the changes are easy to implement.
Data types
pin
Data type to hold pin registers addresses and bit mask. To get the most efficent program, pin typed variables should be constant and they should be initialized at the beginning of the program code. Intializing can be done with macro function PIN, which first parameter is port letter (capital A, B, C, etc) and the other one is pin index (0 to 7). Only existing ports and pins can be used.
Functions
Configures pin as an output. Parameters:
pin - Pin variable.
void pin_setup_input(pin pin)
Viigu sisendiks määramine ilma pull-up takistita. Parameetrid:
pin - Viigu muutuja.
void pin_setup_input_with_pullup(pin pin)
Viigu sisendiks määramine koos pull-up-takistiga. Parameetrid:
pin - Viigu muutuja.
void pin_set(pin pin)
Viigu väljundi kõrgeks määramine. Parameetrid:
pin - Viigu muutuja.
void pin_clear(pin pin)
Viigu väljundi madalaks määramine. Parameetrid:
pin - Viigu muutuja.
void pin_toggle(pin pin)
Viigu väljundi oleku pööramine. Madal olek muutub kõrgeks ja vastupidi. Parameetrid:
pin - Viigu muutuja.
void pin_set_to(pin pin, bool value)
Viigu väljundi parameetriga määratud olekusse viimine. Parameetrid:
pin - Viigu muutuja.
value - Tõeväärtuse muutuja.
bool pin_get_value(pin pin)
Viigu sisendi oleku lugemine ja funktsiooniga tagastamine. Parameetrid:
pin - Viigu muutuja.
Tagastab tõeväärtuse.
bool pin_get_debounced_value(pin pin)
Viigu sisendi oleku lugemine läbi lüliti väreluse filtri ja selle tagastamine. Filtreerimine toimub minimaalselt 8 ms ja maksimaalselt 100 ms jooksul - olenevalt sellest, kui kiiresti lüliti värelemine lõppeb. Kui värelemine 100 ms jooksul ei lõpe, siis funktsioon tagastab false. Funktsioon kasutab tarkvaralist pausi funktsiooni viite teegist. Parameetrid:
pin - Viigu muutuja.
Tagastab tõeväärtuse.
Näide
Näide sellest, kuidas ühe viigu väärtus teha sõltuvaks teisest. Programmis omandab viik PC3 viigule PC0 vastupidise väärtuse:
#include <homelab/pin.h>
pin output_pin = PIN(C, 3);
pin input_pin = PIN(C, 0);
int main(void)
{
bool value;
// Viigu väljundiks seadistamine
pin_setup_output(output_pin);
// Viigu pull-up takistiga sisendiks seadistamine
pin_setup_input_with_pullup(input_pin);
// Lõputu tsükkel
while (true)
{
// Sisendviigu väärtuse lugemine
value = pin_get_value(input_pin);
// Väljundviigule vastupidise väärtuse omistamine
pin_set_to(output_pin, !value);
}
}