Operácie

Vstupy a výstupy AVR: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
Riadok 54: Riadok 54:
</tabs>
</tabs>


 
Prečo je tento program napísaný práve takto, s pomocnou funkciou delay a prečo nepoužijeme rovno _delay_ms() sa dočítate v podrobnejšom texte [[Oneskorenia_s_AVR]] (ak ho preložím a upravím).


== Digitálne vstupy (Tlačidlá) ==
== Digitálne vstupy (Tlačidlá) ==

Verzia z 22:52, 7. február 2021

Digitálne výstupy (LED)

Tu si trocha zablikáme LEDkou aby sme sa naučili používať _delay_ms()

#define F_CPU 16000000UL  // toto je lepsie vlozit do parametrov pre kompilator

#include <avr/io.h>
#include <util/delay.h>

#define set_bit(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define clear_bit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))

#define LED1  PB5          // zabudovana dioda 

void delay(int delay)      // vlastna funkcia pre dlhsie casy 
{
  for (int i=1; i<=delay; i++)
  _delay_ms(1);
}	

int main(void)
{
   set_bit(DDRB,LED1);       // set pin LED1 as output
   
   while(1)
   {
	 delay(250);             // 250 ms delay
     set_bit(PORTB,LED1);    // LED1 = log.1
     delay(250);             // 250 ms delay
     clear_bit(PORTB,LED1);  // LED1 = log.0
   }
	
   return(0);                // sem nikdy neprideme
}
void setup() 
{
  pinMode(LED_BUILTIN, OUTPUT);       // initialize digital pin LED_BUILTIN as an output.
}

void loop() 
{
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Prečo je tento program napísaný práve takto, s pomocnou funkciou delay a prečo nepoužijeme rovno _delay_ms() sa dočítate v podrobnejšom texte Oneskorenia_s_AVR (ak ho preložím a upravím).

Digitálne vstupy (Tlačidlá)

A potom to využijeme tu

Ošetrenie zákmitov (debouncing)

a) Hardvérové

b) Softvérové


Literatúra:

  • Jack G. Ganssle: A Guide to Debouncing. The Ganssle Group, Rev 2: April, 2007.
  • Elliot Williams: Embed With Elliot:Debounce Your Noisy Buttons, Part I. Hackaday, 2015.
  • Elliot Williams: Embed With Elliot:Debounce Your Noisy Buttons, Part II. Hackaday, 2015.