По вот этой таблице строю:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
|
__flash unsigned char sin_wave[256]=
{
128,131,134,137,140,144,147,150,153,156,159,162,165,168,171,174,
177,179,182,185,188,191,193,196,199,201,204,206,209,211,213,216,
218,220,222,224,226,228,230,232,234,235,237,239,240,241,243,244,
245,246,248,249,250,250,251,252,253,253,254,254,254,254,254,254,
254,254,254,254,254,254,254,253,253,252,251,250,250,249,248,246,
245,244,243,241,240,239,237,235,234,232,230,228,226,224,222,220,
218,216,213,211,209,206,204,201,199,196,193,191,188,185,182,179,
177,174,171,168,165,162,159,156,153,150,147,144,140,137,134,131,
128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,
79,77,74,71,68,65,63,60,57,55,52,50,47,45,43,40,
38,36,34,32,30,28,26,24,22,21,19,17,16,15,13,12,
11,10,8,7,6,6,5,4,3,3,2,2,2,1,1,1,
1,1,1,1,2,2,2,3,3,4,5,6,6,7,8,10,
11,12,13,15,16,17,19,21,22,24,26,28,30,32,34,36,
38,40,43,45,47,50,52,55,57,60,63,65,68,71,74,77,
79,82,85,88,91,94,97,100,103,106,109,112,116,119,122,125
};
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Таймер 2 использую. Мож че по коду упустил, бо уже что-то в глазах плывет... — shkiper (24.11.2006 18:58 213.227.194.209, 307 байт)
- То есть 256. Значит, запусти отдельный таймер, чтобы генерировал прерывание с частотой 256 килогерц, и в этом прерывании читай следующий элемент таблицы и грузи его в регистр ШИМ. Выходная частота ШИМ, соответственно, тоже должна быть не ниже 256 килогерц — =AVR= (24.11.2006 18:58 80.92.96.19, пустое)
- Это выходит,что ШИМ запускаем с одного таймера, а синусоиду строим по другому таймеру??? Тю, блин, а я бошню ламаю.... — shkiper (24.11.2006 19:09 213.227.194.209, пустое)
- Я уже сказал ниже - можно исхитриться и по одному таймеру. ШИМ строит сам таймер, и ее скважность кто-то ведь должен задавать, а она у тебя в течение периода синуса должна последовательно принять все 256 табличных значений — =AVR= (24.11.2006 19:13 80.92.96.19, пустое)
- Лано,буду разбиратса! Пасиб! Думаю что пора уже пиффка выпить... — shkiper (24.11.2006 19:25 213.227.194.209, пустое)
- Пожалуйста. Только учти, что на Меге8 максимально достижимая частота ШИМ будет 62.5 КГЦ, и синус выше 250 ГЦ не получится. Для более высокочастотной ШИМ есть Tiny25/26/261 - там внутренняя PLL до 64 МГЦ как раз для ШИМ сделана — =AVR= (24.11.2006 19:48 80.92.96.19, пустое)
- Удивительно, но мне удается генерить синус 4800Гц при несущей ШИМа 100КГц (таймер1). Что я делаю неправильно? — Сергей Борщ (24.11.2006 20:58 195.13.250.108, 72 байт)
- Да все ты делаешь правильно, только у тебя синус не из 256 квантов на период, как у автора, а из 20, и ШИМ не из 256 состояний, а из 160 максимум. Остальное, как и обычно у тебя, все правильно — =AVR= (24.11.2006 21:11 80.92.96.19, пустое)
- А почему ты решил, что автору надо 256 квантов и 256 состояний? — Сергей Борщ (24.11.2006 22:52 217.198.224.174, 256 байт)
- Ты знаешь, беседовать с тобой у меня нет никакого желания хотя бы потому, что я еще способен подсчитать, что один период 4800 ГЦ - это 20 периодов 100-КГЦ ШИМ, а не 251, или 1024, или +-255. Там наверху идет оживленная дискуссия с аналогичным уровнем аргументации - лучше туда переключайся, а мне уже и так достаточно, извини — =AVR= (24.11.2006 22:58 80.92.96.19, пустое)
- Ладно, извиню. На досуге предлагаю поделить 100000 на 4800 хотя бы на калькуляторе. — Сергей Борщ (25.11.2006 00:06 217.198.224.174, 201 байт)
- Даже с калькулятором это будет 20 целых, или 20 точек на период синуса. Что там генерит твоя программа - мне по барабану, здесь речь шла об 1-КГЦ синусе по 256 точкам на период, а не о твоем калькуляторе, который умеет делить 100000 на 4*251, получая 10-КГЦ "синус" на 100-КГЦ несущей ШИМа. Успехов в калькуляциях, пешы есчо — =AVR= (25.11.2006 02:08 80.92.96.19, пустое)
- 1) ТЫ думаешь что речь шла о 256 точках. Я понял что речь шла об абстрактном синусе "пусть будет 1КГц". Желаю и дальше использовать два таймера. — Сергей Борщ (25.11.2006 11:55 195.13.250.108, пустое)
- Два таймера, если ты не понял, я упомянул в ответе начинающему, который и без того в тему с трудом въезжал. Для имеющих очи ниже есть моя приписка о том, что можно и на одном, а для тебя есть чайник под столом, который можно радостно двигать, чтобы замять конфуз — =AVR= (25.11.2006 16:44 80.92.96.19, пустое)
- Два таймера, если ты не понял, я упомянул в ответе начинающему, который и без того в тему с трудом въезжал. Для имеющих очи ниже есть моя приписка о том, что можно и на одном, а для тебя есть чайник под столом, который можно радостно двигать, чтобы замять конфуз — =AVR= (25.11.2006 16:39 80.92.96.19, пустое)
- А чтобы ты, наконец, проветрил купе вместо двигания чайника, вот исходный пост АВТОРА (а не мой), однозначно показывающий разрядность его синуса для чукчей --> — =AVR= (25.11.2006 16:50 80.92.96.19, пустое, ссылка)
- А чтобы ты, наконец, проветрил купе вместо двигания чайника, вот исходный пост АВТОРА (а не мой), однозначно показывающий разрядность его синуса для чукчей --> — =AVR= (25.11.2006 16:48 80.92.96.19, пустое, ссылка)
- 1) ТЫ думаешь что речь шла о 256 точках. Я понял что речь шла об абстрактном синусе "пусть будет 1КГц". Желаю и дальше использовать два таймера. — Сергей Борщ (25.11.2006 11:51 195.13.250.108, пустое)
- Можно исхитриться и использовать тот же таймер, что и для ШИМ — =AVR= (24.11.2006 18:59 80.92.96.19, пустое)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание