Доброй ночи всем, подскажите пожалуйста или дайте исходники примеры точного шима для генерации синуса в 31 гц ну или околотого...
Понимаю код на си
Синус 31гц на ШИМ на AVR
- maglev
- Потрогал лапой паяльник
- Сообщения: 316
- Зарегистрирован: Пт апр 17, 2009 22:45:42
- Откуда: Minsk
- Контактная информация:
Re: Синус 31гц на ШИМ на AVR
Ну и в чем проблема? Один таймер делает ШИМ, другой неспешно выставляет ему значения OCR из таблицы синуса (лучше хранить четверть синуса). Можно и по-другому, но так проще.
Частота синуса зависит от второго таймера, разрешающая способность определяется первым и таблицей.
Частота синуса зависит от второго таймера, разрешающая способность определяется первым и таблицей.
Re: Синус 31гц на ШИМ на AVR
А с кодом никто не поможет, не помню назначение регистров AVR
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Синус 31гц на ШИМ на AVR
truebest писал(а):не помню назначение регистров AVR
А кто их помнит? Для этого даташит есть
Re: Синус 31гц на ШИМ на AVR
Engineer_Keen писал(а):truebest писал(а):не помню назначение регистров AVR
А кто их помнит? Для этого даташит есть
не всегда
Но это видимо не все, я и щас думаю как переделать часы для работы от 32Mhz кварца...стало быть переводишь 32000 в hex и тупа вставляешь значения, а на деле 1сек получается 1милисек если не меньше, бежит с бешенной скоростью, так и не понял как перевести часы на бОльшую частоту
- AlexFisher
- Мучитель микросхем
- Сообщения: 493
- Зарегистрирован: Вт апр 21, 2009 13:31:27
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Синус 31гц на ШИМ на AVR
Ну батенька... а предделитель у таймера включить? По форуму ссылки поищи, попадались проги, которые сразу и предделитель считают и значение таймера.
Собственно, нужно значение предделителя выбрать в 4 раза больше, если это возможно.
Собственно, нужно значение предделителя выбрать в 4 раза больше, если это возможно.
[i]Да здравствует всё то, благодаря чему мы не смотря ни на что![/i]
Re: Синус 31гц на ШИМ на AVR
Да он наверно включен
Все остальные биты таймера 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;
Все остальные биты таймера 0х00 поэтому их не указывал
Вот впринципе инциализация таймера на 8Мhz, как дальше не знаю, но спасибо за подсказку