Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:software:homelab:library:pin [2010/03/08 13:09] mikk.leinien:software:homelab:library:pin [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Pins ====== ====== 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'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.+Pins library provides an easy way for operating with AVR digital input-output pins. The user can create a pin related variable and do all the pin operations with that variable. This way there is no need to deal with the register names and bit indexes like it is done while programming in direct register access method. The pin's port and index must be specified only once, so the changes are easy to implement.
  
-===== Data types =====+===== 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.+  * **//pin//** \\ Data type to hold pin registers addresses and bit mask. To get the most efficent program, //pin// typed variables should be constantand they should be initialized at the beginning of the program code. Intializing can be done with the macro function //PIN//, whose first parameter is the port letter (capital A, B, C, etc) and the other one being the pin index (0 to 7). Only existing ports and pins can be used.
  
 +===== Constants =====
 +  * **//led_green, led_yellow, led_red//** - Homelab User interface board LEDs by colour
 +  * **//LED1, LED2, LED3//** - Homelab User interface board LEDs by LED numbers
 +  * **//S1, S2, S3//** - Homelab User interface board buttons
 +  
 ===== Functions ===== ===== Functions =====
  
Line 12: Line 17:
     Configures pin as an output. Parameters:     Configures pin as an output. Parameters:
     * //pin// - Pin variable.     * //pin// - Pin variable.
-  * **//void pin_setup_input(pin pin)//** \\ Viigu sisendiks määramine ilma //pull-up// takistitaParameetrid+  * **//void pin_setup_input(pin pin)//** \\ 
-    * //pin// - Viigu muutuja+    Configures pin as an input without pull-up resistorParameters
-  * **//void pin_setup_input_with_pullup(pin pin)//** \\ Viigu sisendiks määramine koos //pull-up//-takistigaParameetrid+    * //pin// - Pin variable
-    * //pin// - Viigu muutuja+  * **//void pin_setup_input_with_pullup(pin pin)//** \\ 
-  * **//void pin_set(pin pin)//** \\ Viigu väljundi kõrgeks määramineParameetrid+    Configures pin as an input with pull-up resistorParameters
-    * //pin// - Viigu muutuja+    * //pin// - Pin variable
-  * **//void pin_clear(pin pin)//** \\ Viigu väljundi madalaks määramineParameetrid+  * **//void pin_set(pin pin)//** \\ 
-    * //pin// - Viigu muutuja+    Sets output pin highParameters
-  * **//void pin_toggle(pin pin)//** \\ Viigu väljundi oleku pööramine. Madal olek muutub kõrgeks ja vastupidiParameetrid+    * //pin// - Pin variable
-    * //pin// - Viigu muutuja+  * **//void pin_clear(pin pin)//** \\ 
-  * **//void pin_set_to(pin pin, bool value)//** \\ Viigu väljundi parameetriga määratud olekusse viimineParameetrid+    Sets output pin lowParameters
-    * //pin// - Viigu muutuja+    * //pin// - Pin variable
-    * //value// - Tõeväärtuse muutuja+  * **//void pin_toggle(pin pin)//** \\ 
-  * **//bool pin_get_value(pin pin)//** \\ Viigu sisendi oleku lugemine ja funktsiooniga tagastamineParameetrid+    Inverts output pin stateParameters
-    * //pin// - Viigu muutuja+    * //pin// - Pin variable
-    * Tagastab tõeväärtuse+  * **//void pin_set_to(pin pin, bool value)//** \\ 
-  * **//bool pin_get_debounced_value(pin pin)//** \\ Viigu sisendi oleku lugemine läbi lüliti väreluse filtri ja selle tagastamineFiltreerimine toimub minimaalselt 8 ms ja maksimaalselt 100 ms jooksul - olenevalt sellestkui kiiresti lüliti värelemine lõppebKui värelemine 100 ms jooksul ei lõpesiis funktsioon tagastab //false//Funktsioon kasutab tarkvaralist pausi funktsiooni viite teegistParameetrid+    Sets output pin to desired stateParameters
-    * //pin// - Viigu muutuja+    * //pin// - Pin variable
-    * Tagastab tõeväärtuse.+    * //value// - Desired state boolean value
 +  * **//bool pin_get_value(pin pin)//** \\ 
 +    Gets pin valueParameters
 +    * //pin// - Pin variable
 +    * Return boolean //true// when pin is high and //false// when pin is low
 +  * **//bool pin_get_debounced_value(pin pin)//** \\ 
 +    Reads pin value through the switch debounce filterFiltering takes at least 8 ms and may last up to 100 ms, depending on when the bouncing endsIf the bouncing does not end, //false// is returnedFunction uses software delayParameters
 +    * //pin// - Pin variable
 +    * Return pin boolean value - //true// when pin is high and //false// when pin is low or undetermined.
  
-===== Näide =====+===== Example =====
  
-Näide sellest, kuidas ühe viigu väärtus teha sõltuvaks teisestProgrammis omandab viik PC3 viigule PC0 vastupidise väärtuse:+Example of getting and setting a pin's valuePin PC0 value is inverted and attached to pin PC3.
  
 <code c> <code c>
Line 46: Line 59:
  bool value;  bool value;
  
- // Viigu väljundiks seadistamine+ // Configuring pin as an output pin
  pin_setup_output(output_pin);  pin_setup_output(output_pin);
  
- // Viigu pull-up takistiga sisendiks seadistamine+ // Configuring pin as an input pin with pull-up
  pin_setup_input_with_pullup(input_pin);  pin_setup_input_with_pullup(input_pin);
  
- // Lõputu tsükkel+ // Endless loop
  while (true)  while (true)
  {  {
- // Sisendviigu väärtuse lugemine+ // Getting an input pin value
  value = pin_get_value(input_pin);  value = pin_get_value(input_pin);
  
- // Väljundviigule vastupidise väärtuse omistamine+ // Setting an output pin value
  pin_set_to(output_pin, !value);  pin_set_to(output_pin, !value);
 + }
 +}
 +</code>
 +
 +led_on, led_off, button_read commands example
 +<code c>
 +#include <homelab/pin.h>
 + 
 +// Homelab buttons and LEDs are predefined in the library
 +
 +int main(void)
 +{
 + // Set LED pin as output
 + pin_setup_output(led_green);
 +
 + // Set Button S1 pin as input
 + pin_setup_input(S1);
 +
 + // Endless loop
 + while (true)
 + {
 + // If button is pressed, turn on LED, if not pressed, turn LED off.
 + if(button_read(S1) == true)
 + led_on(led_green);
 + else
 + led_off(led_green);
  }  }
 } }
 </code> </code>
en/software/homelab/library/pin.1268046550.txt.gz · Last modified: (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0