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
et:software:homelab:library:pin [2010/02/08 14:11] – Page moved from et:software:library:pin to et:software:homelab:library:pin mikk.leiniet:software:homelab:library:pin [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Sisend-väljundviigud ====== ====== Sisend-väljundviigud ======
  
-Viikude teek on ette nähtud AVR digitaalsete sisend- ja väljundviikudega opereerimiseks. Teegi eesmärk on lihtsustada AVR viikude kasutamist. Kasutaja saab programmis luua soovitud viigu kohta käiva muutuja, millele ta omistab spetsiaalse makro-funktsiooniga füüsilise viigu aadressi. Seejärel saab muutuja abil välja kutsuda erinevaid funktsioone viigu suuna ja olekute muutmiseks ning nende lugemiseks.+Viikude teek on ette nähtud AVR digitaalsete sisend- ja väljundviikudega opereerimiseks. Teegi eesmärk on lihtsustada AVR viikude kasutamist. Kasutaja saab programmis luua soovitud viigu kohta käiva muutuja, millele ta omistab spetsiaalse makrofunktsiooniga füüsilise viigu aadressi. Seejärel saab muutuja abil välja kutsuda erinevaid funktsioone viigu suuna ja olekute muutmiseks ning nende lugemiseks.
  
 Määrates viigu füüsilise siini (pordi) ja indeksi ära ainult ühe korra ja ühes kohas, on füüsiliste muudatuste korral lihtne programmi muuta. Näiteks, kui algul kasutatakse indikaatorina ühte LED-i, võib lihtsa tarkvara muudatusega teist LED kasutama hakata. Viigu muutujatest võib luua ka massiive, näiteks siinide koostamiseks. Määrates viigu füüsilise siini (pordi) ja indeksi ära ainult ühe korra ja ühes kohas, on füüsiliste muudatuste korral lihtne programmi muuta. Näiteks, kui algul kasutatakse indikaatorina ühte LED-i, võib lihtsa tarkvara muudatusega teist LED kasutama hakata. Viigu muutujatest võib luua ka massiive, näiteks siinide koostamiseks.
Line 8: Line 8:
  
   * **//pin//** \\ Viigu registrite ja bitimaski hoidmise struktuurne andmetüüp. //pin//-tüüpi muutujad on konstantsed ja need tuleb väärtustada kohe programmi alguses. Väärtustamise lihtsustamiseks on makrofunktsioon //PIN//, mille esimene parameeter on siini tähis (suur ladina täht A, B, C, jne) ja teine viigu number (0-7).    * **//pin//** \\ Viigu registrite ja bitimaski hoidmise struktuurne andmetüüp. //pin//-tüüpi muutujad on konstantsed ja need tuleb väärtustada kohe programmi alguses. Väärtustamise lihtsustamiseks on makrofunktsioon //PIN//, mille esimene parameeter on siini tähis (suur ladina täht A, B, C, jne) ja teine viigu number (0-7). 
 +
 +===== Konstandid =====
 +  * **//led_debug, led_green, led_yellow, led_red//** - Kodulabori kasutajaliidese plaadi LEDid värvide järgi ning debug LED kontrollerplaadil
 +  * **//LED0, LED1, LED2, LED3//** - Kodulabori kasutajaliidese plaadi LEDid numbrite järgi
 +  * **//S0, S1, S2, S3//** - Kodulabori kasutajaliidese plaadi nupud ning S0 nupp kontrollerplaadil
  
 ===== Funktsioonid ===== ===== Funktsioonid =====
Line 32: Line 37:
     * //pin// - Viigu muutuja.     * //pin// - Viigu muutuja.
     * Tagastab tõeväärtuse.     * Tagastab tõeväärtuse.
 +  * **//bool button_read(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 1 kui nupp on vajutatud. 
 +    * Tagastab 0 kui nupp ei ole vajutatud. 
 +  * **//void led_on(pin pin)//** \\ Süütab valgusdioodi väljundis. Parameetrid: 
 +    * //pin// - Viigu muutuja. 
 +  * **//void led_off(pin pin)//** \\ Kustutab valgusdioodi väljundis. Parameetrid: 
 +    * //pin// - Viigu muutuja.
 ===== Näide ===== ===== Näide =====
  
Line 61: Line 73:
  // Väljundviigule vastupidise väärtuse omistamine  // Väljundviigule vastupidise väärtuse omistamine
  pin_set_to(output_pin, !value);  pin_set_to(output_pin, !value);
 + }
 +}
 +</code>
 +
 +led_on, led_off, button_read käskude kasutamise näide.
 +<code c>
 +#include <homelab/pin.h>
 + 
 +// Kodulabori nupud ja LEDid on teegis eeldefineeritud 
 +// ja neid pole vaja uuesti defineerida
 +
 +int main(void)
 +{
 + // Viigu väljundiks seadistamine
 + pin_setup_output(led_green);
 +
 + // Viigu pull-up takistiga sisendiks seadistamine
 + pin_setup_input_with_pullup(S1);
 +
 + // Lõputu tsükkel
 + while (true)
 + {
 + // Kui nupp on vajutatud, süüta LED, vastasel juhul kustuta
 + if(button_read(S1) == true)
 + led_on(led_green);
 + else
 + led_off(led_green);
  }  }
 } }
 </code> </code>
et/software/homelab/library/pin.1265631086.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