Ув. коты! доброго времени суток!
Сразу попрошу не кидатся камнями по котятам из-за их недостаточной образованности в этом вопросе.
И так... начну с того с чего грамотно обсуждается любой вопрос: с начала
Разделю своё рассуждение на несколько взаимосвязанных частей, и так:
1. ЗВУК.
Т.к. звук в электронном мире - это изменение напряжения на выходе с определенной частотой и амплитудой (ака колебания), которое хитрое устройство - динамик - преобразует в звуковые волны воспринимаемые нашими кошачими ушками. Т.е. если с частотой 440 Гц изменять напряжение на выходе, то мы получим ноту ЛЯ первой октавы, а от величины изменяемого напряжение зависит громкость. Вроде всё понятно. Т.е. нам нужно некое устройсво способное генерировать это самое изменение напряжения на выходе с нужной частотой.
2. ГЕНЕРАТОР ЭЛ. ИМПУЛЬСОВ или ЧАСТОТЫ.
Такое устройство, способное выдавать изменение напряжение с заданной частотой. И в этом нам поможет уважаемый и любимый AT90S2313. И так... чтобы с ним такого сделать, чтоб заставить генерировать эти самые импульсы. Заглянем ему вовнуторь.... ну не в прямом смысле, а через даташит...
Ага, есть такая замечательная штука как таймер с компоратором...
Т.е. надо бы заставить его работать на нужной нам частоте и при срабатывании компоратора выдавать "1"(+5v) на ногу МК.
А на какую ногу выдавать? так.... смотрим даташит, ага там оказывается умные коты уже предусматрели такой вариант. Эта нога номер 15 - ака PB3(OC1). (я правильно рассуждаю?).
И так как же это сделать то? Заставить компаратор срабатывать с нужной частотой. Правильно!, настроить его. Опять читаем даташит.
Опа. Вот они, регистры настройки компаратора.
И так имеем:
TCCR1A - читая даташит понимаем, что для того чтоб при срабатывании компаратора на 15 ноге появлялась "1", устанавливаем флаг на 7 бит.
TCCR1B - настройка предделителя и сброса при переполнении. Ага, чтобы заставить работать таймер с меньшей частотой нежели МК нужно установить соответствующие флаги, см. даташит. Т.е. при делителе 8 - счётчик нашего таймера будет увеличивать своё значение на одну единицу за 8 тактов нашего МК, и так далее для остальных коэффициентов(64,256 и 1024). Т.е. зная частоту МК можно подстчиать время за которое счётчик таймера увеличивает своё значение. Так же можно установить флаг отвечающий за сброс счётчика при удачном сравнении с OCR1A.
OCR1A (Н и L) - это 16-битное число с которым постоянно сравнивается инкрементирующее значение счётчика таймера.
Т.е. подсчитав значения этх регистров мы можем заставить появляться "1" на 15 ноге с заданной частотой - ура товарищи. Внимание вопрос!
Каково время прибывания "1" на 15 ноге? 1 такт МК?
На "Патриота" прошку не отправлять меня, собственно при изучении работы сего устройства и возникли вопросы