|
ШИМ 100 кГц, help, ШИМ 100 кГц |
|
|
|
Jun 2 2008, 16:03
|
Участник

Группа: Новичок
Сообщений: 43
Регистрация: 2-06-08
Пользователь №: 37 994

|
Такая проблема: есть микроконтроллер, скажем ATmega8535, есть кварц, пусть 12 МГц, использовать таймер-счетчик будем в режиме счета до максимального числа и обратно. Так вот в чем проблема, в таком режиме таймер-счетчик можно использовать минимум как 8-битный. мне нужно получить частоту ШИМ = 100 кГц, соответственно, если не используем предделитель частоты получаемчастоту ШИМ=12 МГц/510, где 510-кол-во счета таймера Мне нужно чтоб частота ШИМ равнялась 100 кГц, так вот, если испоьзовать такой счетчик, то кристал должен работать на частоте 12 МГц*510=многова то будет Спецы, как можно исправить проблему, в принципе, можно заставить таймер считать от 0...61 и от 60 ...1 Уважаемые, помогите настроить таймер, чтоб так считал, вот мой кусок прграммы: таймер все равно считает до 255 и обратно, где ошибка? Start: ldi R16, low(RAMEND) out SPL, R16 ldi R16, high(RAMEND) out SPH, R16 clr R16 out ICR1H, R16 ldi R16, 60 ; ICR1 = 60 - "потолок" счетчика out ICR1L, R16 clr R16 ldi R16, 160 ; ICR1 = 60 - "потолок" счетчика out TCNT1L, R16 ; в OCR1A и(или) OCR1B можно занести коэффициент заполнения ШИМ ; предварительно настроив режим выхода OC1A и OC1B ldi R16, (1<<WGM11) out TCCR1A, R16 ldi R16, (1<<WGM13)+(1<<CS10); счетчик работает на тактовой частоте без деления out TCCR1B, R16 rjmp PC ; просто бесконечный цикл
|
|
|
|
|
 |
Ответов
|
Jun 2 2008, 17:58
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(САНЯ100 @ Jun 2 2008, 19:03)  должен работать на частоте 12 МГц*510=многова то будет Почему 12M * 510? вообще-то 100kHz * 510. Но и это многовато. Цитата Мне нужно чтоб частота ШИМ равнялась 100 кГц Выход - использовать другие режимы ШИМ. 0->OСRxB (где таймер будет считать не до 0xFF, а до OCRxB).
|
|
|
|
|
Jun 2 2008, 19:32
|
Участник

Группа: Новичок
Сообщений: 43
Регистрация: 2-06-08
Пользователь №: 37 994

|
Выход - использовать другие режимы ШИМ. 0->OСRxB (где таймер будет считать не до 0xFF, а до OCRxB). [/quote]
Друг, подскажи как это программно реализовать
|
|
|
|
|
Jun 2 2008, 22:19
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(САНЯ100 @ Jun 2 2008, 22:32)  Друг, подскажи как это программно реализовать Сорри, я чего-то подумал на другой чип. Для m8535 все верно. Вот убрал лишнее и проверил CODE clr R16 out ICR1H, R16 ; ldi R16, 60 ; ICR1 = 60 - "потолок" счетчика out ICR1L, R16 ; ; в OCR1A и(или) OCR1B можно занести коэффициент заполнения ШИМ ; предварительно настроив режим выхода OC1A и OC1B ldi R16, (1<<WGM11) // | (1 << WGM10) out TCCR1A, R16 ldi R16, (1<<WGM13) | (1<<CS10); счетчик работает на тактовой частоте без деления out TCCR1B, R16
rjmp PC ; просто бесконечный цикл
Если смотреть симулятором, то там баг - действительно крутит до 512. А в железе этот же код (смотреть через JTAG, на m16) работает как надо - до 60-ти и обратно.
|
|
|
|
|
Jun 3 2008, 04:59
|
Участник

Группа: Новичок
Сообщений: 43
Регистрация: 2-06-08
Пользователь №: 37 994

|
Цитата(defunct @ Jun 3 2008, 02:19)  Сорри, я чего-то подумал на другой чип. Для m8535 все верно. Вот убрал лишнее и проверил CODE clr R16 out ICR1H, R16 ; ldi R16, 60 ; ICR1 = 60 - "потолок" счетчика out ICR1L, R16 ; ; в OCR1A и(или) OCR1B можно занести коэффициент заполнения ШИМ ; предварительно настроив режим выхода OC1A и OC1B ldi R16, (1<<WGM11) // | (1 << WGM10) out TCCR1A, R16 ldi R16, (1<<WGM13) | (1<<CS10); счетчик работает на тактовой частоте без деления out TCCR1B, R16
rjmp PC ; просто бесконечный цикл
Если смотреть симулятором, то там баг - действительно крутит до 512. А в железе этот же код (смотреть через JTAG, на m16) работает как надо - до 60-ти и обратно. Нда, и как же быть? может действительно чего не хватает? ведь по идее он во время отладки тоже должен считать до 60 и обратно  Цитата(domowoj @ Jun 3 2008, 05:51)  Тоже не разглядел про ICR1. Но в этом реж. в него ( ICR1) коэф. счета нужно заносить число 30, а не 60. Т.е. дискретность ШИМ при 100кГц будет период/30.
при частоте 12 МГц чтобы частота ШИМ получилась 100 Кгц надо чтоб счетчик считал кол-во импульсов=120, в принципе все равно в каком режиме получить ШИМ
САНЯ100 а зачем вам считать в обе стороны, может подойдет реж. fast PWM, дискретность удвоится. можно и так- не получается
|
|
|
|
|
Jun 3 2008, 05:07
|
Участник

Группа: Новичок
Сообщений: 43
Регистрация: 2-06-08
Пользователь №: 37 994

|
Т.е. в программе все нормально?! добавить еще значения переключения на выводах (короче сделать ШИМ) - И ВСЕ ДОЛЖНО РАБОТАТЬ?
|
|
|
|
Сообщений в этой теме
САНЯ100 ШИМ 100 кГц, help Jun 2 2008, 16:03 domowoj ICR1 - регистр захвата, информация в котором защел... Jun 2 2008, 16:39 САНЯ100 Цитата(domowoj @ Jun 2 2008, 20:39) ICR1 ... Jun 2 2008, 17:45      _Pasha Цитата(САНЯ100 @ Jun 3 2008, 08:07) И ВСЕ... Jun 3 2008, 05:16       САНЯ100 Цитата(_Pasha @ Jun 3 2008, 09:16) ... ес... Jun 3 2008, 11:41        САНЯ100 Ребята, кто нито может привести кусок программы, г... Jun 3 2008, 13:48         САНЯ100 Посоветуйте схему JTAG для AVR рабочую,проверенную Jun 3 2008, 15:11          defunct Цитата(САНЯ100 @ Jun 3 2008, 18:11) Посов... Jun 3 2008, 23:59           САНЯ100 может кто даст нормальную ссылочку с файлами под Л... Jun 5 2008, 14:13      defunct Цитата(САНЯ100 @ Jun 3 2008, 08:07) Т.е. ... Jun 3 2008, 11:40 ILYAUL Цитата(САНЯ100 @ Jun 2 2008, 20:03) Код ... Jun 2 2008, 19:05 domowoj Тоже не разглядел про ICR1.
Но в этом реж. в него ... Jun 3 2008, 01:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|