📄 clock-avr.h
字号:
#ifndef CONTIKI_CLOCK_AVR_H#define CONTIKI_CLOCK_AVR_H#if defined (__AVR_ATmega128__)#define AVR_OUTPUT_COMPARE_INT TIMER0_COMP_vect#define OCRSetup() \ /* Select internal clock */ \ ASSR = 0x00; \\ /* Set counter to zero */ \ TCNT0 = 0; \\ /* \ * Set comparison register: \ * Crystal freq. is 16000000,\ * pre-scale factor is 1024, i.e. we have 125 "ticks" / sec: \ * 16000000 = 1024 * 125 * 125 \ */ \ OCR0 = 125; \\ /* \ * Set timer control register: \ * - prescale: 1024 (CS00 - CS02) \ * - counter reset via comparison register (WGM01) \ */ \ TCCR0 = _BV(CS00) | _BV(CS01) | _BV(CS02) | _BV(WGM01); \\ /* Clear interrupt flag register */ \ TIFR = 0x00; \\ /* \ * Raise interrupt when value in OCR0 is reached. Note that the \ * counter value in TCNT0 is cleared automatically. \ */ \ TIMSK = _BV (OCIE0);#elif defined (__AVR_ATmega1284P__) || (__AVR_AT90USB1287__) || (__AVR_ATmega1281__)#define OCRSetup() \ /* Select internal clock */ \ ASSR = 0x00; \\ /* Set counter to zero */ \ TCNT0 = 0; \\ /* \ * Set comparison register: \ * Crystal freq. is 8000000,\ * pre-scale factor is 1024, i.e. we have 125 "ticks" / sec: \ * 8000000 = 1024 * 125 * 62.5 \ */ \ OCR0A = 62; \\ /* \ * Set timer control register: \ * - prescale: 1024 (CS00 - CS02) \ * - counter reset via comparison register (WGM01) \ */ \ TCCR0A = _BV(WGM01); \ TCCR0B = _BV(CS00) | _BV(CS02); \\ /* Clear interrupt flag register */ \ TIFR0 = TIFR0; \\ /* \ * Raise interrupt when value in OCR0 is reached. Note that the \ * counter value in TCNT0 is cleared automatically. \ */ \ TIMSK0 = _BV (OCIE0A);#define AVR_OUTPUT_COMPARE_INT TIMER0_COMPA_vect#else#error "Setup CPU in clock-avr.h"#endif#endif //CONTIKI_CLOCK_AVR_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -