This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| en:examples:delay [2009/03/05 10:20] – created raivo.sell | en:examples:delay [2010/02/04 12:34] (current) – removed mikk.leini | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Lihtsa viite tekitamine | ||
| - | Kontrollige, | ||
| - | ja et AVRStudios oleks määratud kontrolleri taktsagedus: | ||
| - | |||
| - | {{: | ||
| - | |||
| - | <code c> | ||
| - | void delay1s(int count){ // ~0,09s | ||
| - | unsigned int i,j; | ||
| - | for(i=0; | ||
| - | for(j=0; | ||
| - | } | ||
| - | |||
| - | |||
| - | // | ||
| - | delay1s(10); | ||
| - | |||
| - | </ | ||
| - | |||
| - | Paus taimeriga. | ||
| - | Järgnevat pausi tekitamise koodi optimeerimine ei mõjuta. | ||
| - | |||
| - | <code c> | ||
| - | // Paus millisekundites | ||
| - | // Pausi tegemiseks on kasutusel taimer 0 | ||
| - | // Maksimaalne pausi aeg on 4500 ms | ||
| - | // Pausi täpsus on 3% | ||
| - | void aeg(unsigned int t) | ||
| - | { | ||
| - | // Maksimaalse aja piiramine | ||
| - | if (t > 4500) t = 4500; | ||
| - | | ||
| - | // Sagedusjaguri teguriks 1024 | ||
| - | TCCR1B = _BV(CS12) | _BV(CS10); | ||
| - | |||
| - | // Taimerile sellise väärtuse omistamine, et | ||
| - | // t millisekundi pärast märgitakse katkestuse bitt | ||
| - | TCNT1 = 0xFFFF - (unsigned int)((unsigned long)t * (unsigned long)144 / (unsigned long)10); | ||
| - | | ||
| - | // Lõputu tsükkel kuni katkestuse bitt märgitakse | ||
| - | while ((TIFR & _BV(TOV1)) == 0) | ||
| - | { | ||
| - | asm volatile (" | ||
| - | } | ||
| - | | ||
| - | // Katkestuse biti kustutamine toimub seda üheks kirjutades | ||
| - | TIFR |= _BV(TOV1); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |||
| - | Viide kasutades util/ | ||
| - | Probleem on maksimaalses väärtuses, | ||
| - | Järgnev funktsioon võimaldab kasutada oluliselt suuremaid viiteid. | ||
| - | |||
| - | <code c> | ||
| - | void delay_ms(uint16_t ms) // Määrab pausi pikkuse | ||
| - | { | ||
| - | while (ms) // tsükkel, kuni ms väärtus on jõudnud nullini | ||
| - | { | ||
| - | _delay_ms(1); | ||
| - | ms--; | ||
| - | } | ||
| - | } | ||
| - | </ | ||