Технический форум по робототехнике.
Grover » 25 фев 2008, 19:48
Я сейсат занимаюсь изучением таймеров в ATmega8.
Неодходимо, что бы прерывание происходило точно 1 раз в секунду.
Конфигурирую таумер:
TCCR1B = _BV(CS12) | _BV(WGM12); // Делитель 8 и Режим сравнения.
Записываю расчетное сравниваемое значение:
OCR1A=31250; // 8000000/256
Ну и включаем прерывания:
TIMSK |= _BV (OCIE1A);
sei ();
Таким образом теоретически прерывание должно вызываться примерно раз в секунду. Но оно вызывается один раз в 8 секунд (примерно).
Я попробывал поменять кварц на 16 МГц без изменений в программе - думал, что процесс ускорится в два раза - а не фига - как было, так и осталось!!!
Может не корректно работает кварц, или МК им не пользуется?
Duhas » 25 фев 2008, 22:56
смотри как прошиты фузы и как они должны быть прошиты для внешнего кварца ... последнее в даташите ..
Grover » 26 фев 2008, 09:20
понял.
Тогда такой вопрос: WinAVR фьюзы не прошивает??? Я почему-то думал, что она на автомате все выставляет, иначе, зачем ей указывать частоту кварца???
Vooon » 26 фев 2008, 12:10
хе, а что же нет процедур которым нужно знать частоту тактирования?
fuse всегда нужно самому прошивать, и вобще следить что он там делает.
да и откуда ему знать хочеш ты внешний кварц, керамику или RC?
Grover » 26 фев 2008, 21:27
понял.
послесловие: запарол ATmega8 - запутался в галочках и ноликах - пипец
![Sad :(](http://roboforum.ru/images/smilies/sad.gif)