This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:digi:io [2009/11/04 13:51] – vana versioon taastatud mikk.leini | et:examples:digi:io [2014/01/30 11:03] (current) – eemaldatud raivo.sell | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Digitaalsed sisend-väljundid ====== | ||
| - | |||
| - | ===== Laborikomplekti ühendamine ===== | ||
| - | |||
| - | - Ühendage ribakaabli abil Atmega128 plaat Digitaal i/o plaadiga | ||
| - | Atmega128 pistik: PA-PC | ||
| - | - Ühendage JTAG programmaator Atmega128 plaagi JTAG pistikuga | ||
| - | - Ühendage Atmega128 plaagi toide (+9 V) | ||
| - | |||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | |||
| - | ===== Digitaalsed sisend-väljundid ===== | ||
| - | |||
| - | Demoplaadil ‚Basic’ on kolm valgusdioodi (LED) ja kolm mikrolülitit. | ||
| - | Valgusdioodid on ühendatud porti PORTC[3..5] ja lülitid PORTC[0..2]. | ||
| - | Harjutuse eesmärgiks on luua C kood, kus vastava lüliti vajutamisel süttib vastav LED. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | ==== Ühendusskeem ==== | ||
| - | |||
| - | {{: | ||
| - | |||
| - | ==== Programmi kood ==== | ||
| - | |||
| - | <code c> | ||
| - | /* Labor 1 näide | ||
| - | Harjutus töötab laborikaardiga Basic v3 | ||
| - | |||
| - | Vajutades nupule S1 süttib LED 1 | ||
| - | vajutades nupule S2 süttib LED 2 | ||
| - | vajutades nupule S3 süttib LED 3 | ||
| - | Raivo Sell 2008 | ||
| - | |||
| - | LED = 0 (põleb) | ||
| - | S = 0 (lülitui sees) S = 1 (lüliti väljas) | ||
| - | |||
| - | PORDI suuna konfigureerimine: | ||
| - | |||
| - | #include < | ||
| - | |||
| - | // | ||
| - | #define SET(x) |= (1<< | ||
| - | |||
| - | // | ||
| - | #define CLR(x) & | ||
| - | |||
| - | int main(void) { | ||
| - | |||
| - | DDRC = 0x38; // DDRC 0bXX111000 | ||
| - | PORTC = 0x3F; // PORTC 0bXX111111 | ||
| - | |||
| - | //Lõputu tsükkel | ||
| - | while(1) { | ||
| - | // Kui toimub nupule vajutus | ||
| - | if (bit_is_clear(PINC, | ||
| - | PORTC CLR(3); //LED 1 sisse | ||
| - | else if (bit_is_clear(PINC, | ||
| - | PORTC CLR(4); //LED 2 sisse | ||
| - | else if (bit_is_clear(PINC, | ||
| - | PORTC CLR(5); //LED 3 sisse | ||
| - | else //Kui pole midagi vajutatud | ||
| - | PORTC=0xFF; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Kompileeritud näide {{: | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== Nupu sädeluse ellimineerimine ==== | ||
| - | |||
| - | Algallikas: [[http:// | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | #define BUTTON_PORT PORTC /* PORTx - nupu register */ | ||
| - | #define BUTTON_PIN PINC /* PINx - nupu sisendi register */ | ||
| - | #define BUTTON_BIT PC0 /* nupu sisend/ | ||
| - | |||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | int nupuvajutus() | ||
| - | { | ||
| - | /* nupp on all kui BIT on madal (0) */ | ||
| - | if (bit_is_clear(BUTTON_PIN, | ||
| - | { | ||
| - | _delay_ms(25); | ||
| - | if (bit_is_clear(BUTTON_PIN, | ||
| - | } | ||
| - | |||
| - | return 0; | ||
| - | } | ||
| - | |||
| - | int main (void){ | ||
| - | |||
| - | /* lülitab sisse sisemised ' | ||
| - | BUTTON_PORT |= _BV(BUTTON_BIT) | ||
| - | if (button_is_pressed()){ | ||
| - | // tee midagi | ||
| - | // oota kui vaja | ||
| - | } | ||
| - | } | ||
| - | </ | ||