This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:avr:timers [2015/02/19 16:40] – raivo.sell | et:avr:timers [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 23: | Line 23: | ||
} | } | ||
- | int main() { | + | int main(void) { |
// Et esimene ületäitumise katkestus tekiks 10 ms pärast, | // Et esimene ületäitumise katkestus tekiks 10 ms pärast, | ||
// tuleb ka siinkohal loendur algväärtustada | // tuleb ka siinkohal loendur algväärtustada | ||
TCNT0 = 178; | TCNT0 = 178; | ||
- | |||
// Sagedusjaguri teguriks 1024 | // Sagedusjaguri teguriks 1024 | ||
TCCR0 = 0x07; | TCCR0 = 0x07; | ||
- | |||
// Loenduri täitumise katkestuse lubamine | // Loenduri täitumise katkestuse lubamine | ||
TIMSK |= (1 << TOIE0); | TIMSK |= (1 << TOIE0); | ||
Line 54: | Line 52: | ||
<box 100% round # | <box 100% round # | ||
- | |||
Vaja on 8 MHz taktsagedusel töötava ATmega128-ga mõõta välise 122 Hz - 100 kHz loogilise nelinurksignaali sagedust 1 Hz täpsusega. Programm on tehtud 16-bitise loendur 1 sündmuste püüdjaga. | Vaja on 8 MHz taktsagedusel töötava ATmega128-ga mõõta välise 122 Hz - 100 kHz loogilise nelinurksignaali sagedust 1 Hz täpsusega. Programm on tehtud 16-bitise loendur 1 sündmuste püüdjaga. | ||
Line 85: | Line 82: | ||
} | } | ||
- | int main() { | + | int main(void) { |
// Tõusva frondi registreerimine, | // Tõusva frondi registreerimine, | ||
TCCR1B = (1 << ICES1) | (1 << CS10); | TCCR1B = (1 << ICES1) | (1 << CS10); | ||
Line 101: | Line 98: | ||
Programmis tekib välise signaali tõusva frondi ajal sündmuse katkestus. Katkestuse jooksul kontrollitakse, | Programmis tekib välise signaali tõusva frondi ajal sündmuse katkestus. Katkestuse jooksul kontrollitakse, | ||
- | |||
</ | </ | ||
Line 112: | Line 108: | ||
Mõnedel signaali genereerimise režiimidel on määratav ka loenduri suurim väärtus - loenduri füüsiline suurus jääb küll samaks, kuid mängus on võrdlusregister, | Mõnedel signaali genereerimise režiimidel on määratav ka loenduri suurim väärtus - loenduri füüsiline suurus jääb küll samaks, kuid mängus on võrdlusregister, | ||
- | Loendurid ja nende abil genereeritavate signaalide režiimid on ühed keerulisemad perifeeriamoodulid AVR-il. Kõigist neist kirjutamine läheks pikaks ja enamasti pole nende kasutamisel kõike detailselt teada. Seetõttu on järgnevalt kirjeldatud vaid üht levinuimat PWM signaali robootikas. Ülejäänut saab juba AVR dokumentatsioonist järgi uurida. | + | Loendurid ja nende abil genereeritavate signaalide režiimid on ühed keerulisemad perifeeriamoodulid AVR-il. Kõigist neist kirjutamine läheks pikaks ja enamasti pole nende kasutamisel |
==== Pulsilaius-modulatsioon ==== | ==== Pulsilaius-modulatsioon ==== | ||
Line 125: | Line 121: | ||
#include < | #include < | ||
- | int main() { | + | int main(void) { |
// Viigud väljundiks | // Viigud väljundiks | ||
DDRB |= (1 << PIN5) | (1 << PIN6); | DDRB |= (1 << PIN5) | (1 << PIN6); |