roboforum.ru

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

Как правильно сгенерировать частоту ?

Как правильно сгенерировать частоту ?

Grover » 25 фев 2008, 19:48

Я сейсат занимаюсь изучением таймеров в ATmega8.
Неодходимо, что бы прерывание происходило точно 1 раз в секунду.
Конфигурирую таумер:
TCCR1B = _BV(CS12) | _BV(WGM12); // Делитель 8 и Режим сравнения.
Записываю расчетное сравниваемое значение:
OCR1A=31250; // 8000000/256

Ну и включаем прерывания:
TIMSK |= _BV (OCIE1A);
sei ();

Таким образом теоретически прерывание должно вызываться примерно раз в секунду. Но оно вызывается один раз в 8 секунд (примерно).

Я попробывал поменять кварц на 16 МГц без изменений в программе - думал, что процесс ускорится в два раза - а не фига - как было, так и осталось!!!

Может не корректно работает кварц, или МК им не пользуется?

Re: Как правильно сгенерировать частоту ?

Duhas » 25 фев 2008, 22:56

смотри как прошиты фузы и как они должны быть прошиты для внешнего кварца ... последнее в даташите ..

Re: Как правильно сгенерировать частоту ?

Grover » 26 фев 2008, 09:20

понял.
Тогда такой вопрос: WinAVR фьюзы не прошивает??? Я почему-то думал, что она на автомате все выставляет, иначе, зачем ей указывать частоту кварца???

Re: Как правильно сгенерировать частоту ?

Vooon » 26 фев 2008, 12:10

хе, а что же нет процедур которым нужно знать частоту тактирования?
fuse всегда нужно самому прошивать, и вобще следить что он там делает.

да и откуда ему знать хочеш ты внешний кварц, керамику или RC?

Re: Как правильно сгенерировать частоту ?

Grover » 26 фев 2008, 21:27

понял.

послесловие: запарол ATmega8 - запутался в галочках и ноликах - пипец :(


cron
Rambler\'s Top100 Mail.ru counter