Fórum témák

» Több friss téma
Cikkek » WILL-I THE END (robotika és AVR kezdőknek)
WILL-I THE END (robotika és AVR kezdőknek)
Szerző: Fizikus, idő: Máj 17, 2010, Olvasva: 30590, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   4 / 8

Gyakorlati példa

A megszakításokkal való ismerkedés céljából állítsunk össze egy egyszerű kapcsolást. Kössünk egy nyomógombot a PD2-es (INT0) lábra. Egy LED-et pedig a PC0-ás lábra a linkelt oldal alján lévő ábrának megfelelően (LINK).

A LED-et a nyomógomb megnyomásával kapcsolhatjuk be, és ki.

Láthatjuk, hogy a főprogramban lévő végtelen ciklus üres, a mikrokontroller nem csinál semmit, csak akkor lép be az ISR-be (hajtja végre az ISR-t) miután a nyomógomb le lett nyomva. Természetesen bármilyen kódot tehetünk a főprogramba.
 

  1. /*     Interrupt teszt
  2.     Nyomogomb: a PD2 lábon (INT0)
  3.     LED: a C0 labon  
  4. */
  5. #define F_CPU 1000000UL  // 1 MHz CPU clock
  6.  
  7. #include <util/delay.h>        // Idozito, keslelteto rutinokat tartalmazo fajl
  8. #include <avr/io.h>            // AVR konstansokat, baallitasokat tart. fajl
  9. #include <avr/interrupt.h>        // Megszakításokat kezelo rutinokat tart. fajl
  10.  
  11. ISR (INT0_vect)  // INT0 megszakitas kiszolgalo rutin utasitasai
  12. {
  13.     PORTC ^= (1<<PC0);     // PC0 lab allapotat megcsereli (LED be/ki)
  14. }
  15.  
  16. int main (void)    // Program eleje
  17. {
  18.     // portok beallitasa
  19.     DDRC |= (1<<PC0);        // PC0 kimenet
  20.     PORTC |= (1<<PC0);        // PC0 labra +5V (LED1 kikapcsolva)
  21.     PORTD &= ~(1<<PD2);    // PD2 bemenet
  22.     PORTD |= (1<<PD2);    // PD2-hoz tartozo felhuzoellenallas be
  23.  
  24.     // az INT0 kulso interrupt beallitasa
  25.     GICR |= (1<<INT0);        // INT0 engedelyezese (PD2-es lab)
  26.     MCUCR |= (1<<ISC01);     // a lab lefuto elre adjon megszakitast
  27.     sei();         // megszakitasok bekapcsolasa
  28.  
  29.         while (1)
  30.         {    
  31.             // Ide jon a foprogram
  32.         };
  33. }

 

Készítettem is egy kis videót a kapcsolás működéséről:

A videón látható, hogy a nyomógomb egyszer rendesen működik, másszor meg hibásan. A fenti program jó, nincs benne logikai hiba. De akkor mi lehet a baj, miért nem működik rendesen? Azt is mondhatnám, hogy a hiba nem az Ön szoftverében, hanem az Ön készülékében van! A videón látható jelenséget pergésnek vagy prell-nek is nevezik és megértéséhez ismerni kell a nyomógombok felépítését és működését.


A cikk még nem ért véget, lapozz!
Következő: »»   4 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem