Не могу дойти как задействовать шим на микроконтроллере AVR. (mega16) Читал курс avr123.nm.ru но не всё понятно. А конкретно непонятно как программно включить.
Код:
DDRD=0x20; // 00100000 PD5(OC1A)-PWM Timer1 OUT ---- тут всё понятно, 5 нога выход для ШИМ
// ножку PD5 назначить выходом
// Настройка TIMER1 для генерации ШИМ
//TIMER1 initialize
//prescale:1 clock 7.37 MHz
// WGM: 7) PWM 10bit fast, TOP=0x03FF
// actual value: 7200,000Hz (100,0%)
// последнее - это частота ШИМ сигнала
TCCR1B = 0x00; //stop Timer
TCNT1H = 0xFC; // 11111100 --- эти строчки не понятны
TCNT1L = 0x01; // 00000001
---
в общем и дальше не понятно. Разъясните пожалуйста.
---
Код:
/* значение в 16 битном регистре OCR1A определяет величину генерируемого ШИМ сигнала на ножке PD5 - если поделить ее на 10.23 то получим PWM в процентах*/
OCR1AH = 0x03; // PWM(PD5) = OCR1A / 10.23
OCR1AL = 0xFF; // 0x03FF это число 1023
/* регистр OCR1A состоит из двух 8-ми битных регистров OCR1AH и OCR1AL запись в них нужно проводить в указанной последовательности! */
OCR1BH = 0x03;
OCR1BL = 0xFF;
ICR1H = 0x03;
ICR1L = 0xFF;
TCCR1A = 0x83; // 10000011
TCCR1B = 0x09; // 00001001 - start Timer
// Теперь ШИМ 100% - т.е. на ножке PD5 лог. "1"
На форуме есть тег 'CODE' для вставки листингов программ! Использование его для вставки листингов ОБЯЗАТЕЛЬНО! <Digit>