Понимаю код на си
Синус 31гц на ШИМ на AVR
Доброй ночи всем, подскажите пожалуйста или дайте исходники примеры точного шима для генерации синуса в 31 гц ну или околотого...
Понимаю код на си
Понимаю код на си
- Реклама
Ну и в чем проблема? Один таймер делает ШИМ, другой неспешно выставляет ему значения OCR из таблицы синуса (лучше хранить четверть синуса). Можно и по-другому, но так проще.
Частота синуса зависит от второго таймера, разрешающая способность определяется первым и таблицей.
Частота синуса зависит от второго таймера, разрешающая способность определяется первым и таблицей.
А кто их помнит? Для этого даташит естьtruebest писал(а):не помню назначение регистров AVR
не всегдаEngineer_Keen писал(а):А кто их помнит? Для этого даташит естьtruebest писал(а):не помню назначение регистров AVR
Но это видимо не все, я и щас думаю как переделать часы для работы от 32Mhz кварца...стало быть переводишь 32000 в hex и тупа вставляешь значения, а на деле 1сек получается 1милисек если не меньше, бежит с бешенной скоростью, так и не понял как перевести часы на бОльшую частоту
- Реклама
Ну батенька... а предделитель у таймера включить? По форуму ссылки поищи, попадались проги, которые сразу и предделитель считают и значение таймера.
Собственно, нужно значение предделителя выбрать в 4 раза больше, если это возможно.
Собственно, нужно значение предделителя выбрать в 4 раза больше, если это возможно.
[i]Да здравствует всё то, благодаря чему мы не смотря ни на что![/i]
Да он наверно включен
Все остальные биты таймера 0х00 поэтому их не указывал
Вот впринципе инциализация таймера на 8Мhz, как дальше не знаю, но спасибо за подсказку
Код: Выделить всё
interrupt [TIM1_COMPA] void timer1_compa_isr(void) // таймер выставлен на частоту 1 Гц
{
// Place your code here
TCNT1H=0;
TCNT1L=0;
sek++; // инкрементируем секунду
}
TCCR1B=0x05;
OCR1AH=0x1E;
OCR1AL=0x85;
Вот впринципе инциализация таймера на 8Мhz, как дальше не знаю, но спасибо за подсказку


