roboforum.ru

Технический форум по робототехнике.

Как в МК attiny13 подать на ногу 30кГц?

Как в МК attiny13 подать на ногу 30кГц?

RoboTok » 18 фев 2008, 21:08

Тогда ещё хитрый вопрос.

Есть МК attiny13.

Нужно подать на ножку МК несущую частоту 30кГц.

По идее мне нужно настроить прерывания на частоту 60кГц, чтоб каждое прерывание изменять состояние на ноге МК.

Код настройки таймера на 60кГц, частоту МК 4.8МГц
Код: Выделить всёРазвернуть
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4800,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x02;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=39;//
OCR0B=0x00;


Код который дёргает ноги:
Код: Выделить всёРазвернуть
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
PORTB.0++;
}


Правильно ли я настроил ?

Re: VMLAB vs PROTEUS ?

RoboTok » 19 фев 2008, 13:43

Только, что то частота на ножке выходит странная не та которую я ожидаю.

Настроил таймер так:
Код: Выделить всёРазвернуть
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 4800,000 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x09;
TCNT2=0x00;
OCR2=79;


И в прерывании меняю состояние ног:
Код: Выделить всёРазвернуть
// Timer 2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
// Place your code here
PORTD.0++;
}


По идее должно быть 15кГц, а выводит 30кГц, как так ?

П.С.
Считаю по формуле:
Тогда по формуле OCR: OCR = Fcl/Foc*2*N - 1, где N делитель таймера, Fcl частота таймера, Foc частота прерываний.

Все поправил. Теперь будь внимательнее с личными сообщениями и постами в разные темы :)
<Digit>


Rambler\'s Top100 Mail.ru counter