Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.09.2010, 19:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
ШИМ в АТMega8535
Добрый день всем.
Помогите решить проблему потому как с ШИМом сильно плаваю.
В ATMega8535 нужно получить ШИМ сигнал с заполнением не более 50% с вывода PB3/OC0. Частота контролера лучше 16мГц но в принципе хватит и 8мГц. Разрядность ШИМа 8бит при заполнении 50%, частота от 32кГц до 40кГц.
Контролер менять не желательно в крайнем случае ATMega16 хотя почти одно и тоже.
Вобшем ШИМ должен работать непрерывно и управлять инвертором.
Может кто подскажет настройки.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
23.09.2010, 20:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: ШИМ в АТMega8535
0х79 в TCCR0
0х80 в OCR0
ножку ОС0 настрой на выход
|
|
|
Эти 2 пользователя(ей) сказали Спасибо niXto за это сообщение:
|
|
|
23.09.2010, 22:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: ШИМ в АТMega8535
Это настройки для 8 мГц ?
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
23.09.2010, 22:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: ШИМ в АТMega8535
А не получить с кварцами в 16 или 8МГц желаемое. С 16 выходит 62КГц, что выше требуемого. С 8МГц - 31КГц, что меньше. Если выбрать режим с ровной фазой, то при 16МГц кварце 31КГц, с 8-ми мегагерцовым вообще 15,5. В общем если частота критична, то надо кварц брать другой.
Если сойдет и 31:
Код:
|
TCCR0 = ((0‹‹FOC0)|(1‹‹WGM00)|(1‹‹COM01)|(1‹‹COM00)|(0‹‹WGM00)|(0‹‹CS02)|(0‹‹CS01)|(1‹‹CS00); // оно же 0x71 |
В OCR0 занести 0x7F - 50% коэффицент заполнения.
Это все для кварца 16МГц и частоты ШИМ-а 31КГц.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо kison за это сообщение:
|
|
|
23.09.2010, 23:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: ШИМ в АТMega8535
kison,
31кГц подойдет, трансформатор еще не расчитан, хотя хотелось бы 38-40.
Цитата:
|
Если выбрать режим с ровной фазой
|
Я по правде про такой не смог найти информацию
Чтоб хоть както разобраться воспользовался генератором кода в CVAvr там тоже чегото такого не нашел и при 16 мГц кварце не смог настроить чтоб было 31 кГц. Так и не понимаю как так получается.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.09.2010, 01:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: ШИМ в АТMega8535
Сообщение от 7Fantomas7
|
Я по правде про такой не смог найти информацию
|
Он называется "Glitch-free, Phase Correct Pulse Width Modulator (PWM)"
Прямо в начале описания таймера 0.
Впрочем можно и 40КГц получить, если не жалко таймер 1 под это отдать.
16МГц/40КГц = 400. Либо будем считать до 399 для полного периода, это обычный ШИМ. Либо до 199 и обратно до 0 - режим Phase Correct.
Второй вариант, 40КГц, Phase Correct.
Код:
|
ICR1 = 199;
OCR1A = 100;
TCCR1A = ((1‹‹COM1A1)|(1‹‹COM1A0)|(0‹‹COM1B1)|(COM1B0)|(0‹‹FOC1A)|(0‹‹FOC1B)|(1‹‹WGM11)|(0‹‹WGM10));
TCCR1B = ((0‹‹ICNC1)|(0‹‹ICES1)|(1‹‹WGM13)|(0‹‹WGM12)|(0‹‹CS12)|(0‹‹CS11)|(1‹‹CS10)); |
|
|
|
Эти 2 пользователя(ей) сказали Спасибо kison за это сообщение:
|
|
|
24.09.2010, 08:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: ШИМ в АТMega8535
Цитата:
|
Впрочем можно и 40КГц получить, если не жалко таймер 1 под это отдать
|
В принципе не жалко но остановимся на 31 кГц и таймере0.
А вот с режимами въехать не могу.
есть режимы
normal
CTC
Fast PWM
Phase Correct PWM
Асинхронный режим
Это все режимы для таймера 0.
Есть еще одна проблемка.
Как ловить задний и передний фронт каждого импульса выхода МИМ. Либо прерывание либо изменение значения переменной пока не важно. Вобшем мне необходимо ловить паузу и знать когда она начинается и когда кончается.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.09.2010, 12:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: ШИМ в АТMega8535
А Вам вообще ШИМ нужен или генератор меандра? Вы собираетесь коэффицент заполнения в сигнале изменять? Если нужен именно меандр, то можно взять режим CTC и изменение вывода при каждом совпадении - получится и частота довольно точно и прерывания будут по обоим фронтам в сигнале. В случае с ШИМ Вы также получите прерывания по изменению состояния вывода, но сам принцип ШИМ может не позволить их обработать. К примеру при коэффиценте заполнения 0,99 паузы получаются короткими и между началом паузы и ее концом будет слишком мало тактов на обработчик. Огласите задачу более подробно - гадать что Вам реально нужно не хочется.
|
|
|
|
24.09.2010, 16:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: ШИМ в АТMega8535
Цитата:
|
А Вам вообще ШИМ нужен или генератор меандра
|
Мне нужен шим. Так как предполагается использовать ШИМ в "косом мосте" то максимальная скважность 50% минимальная 1%.
Цитата:
|
Вы собираетесь коэффицент заполнения в сигнале изменять
|
Да от 1% до 50%.
Цитата:
|
В случае с ШИМ Вы также получите прерывания по изменению состояния вывода, но сам принцип ШИМ может не позволить их обработать
|
Мне нужно в случае с ШИМ. Мне очень необходимо начало и конец паузы, в это время должна выполнятся обработка некоторых сигналов и выполнятся динамическая индикация. Мне очень нужно отчетливо видеть когда начался импульс и когда кончился, в это время не должно выполнятся ничего кроме опроса компаратора. Поэтому прерывания по переднему фронту импульса и по заднему самое оно.
Цитата:
|
но сам принцип ШИМ может не позволить их обработать. К примеру при коэффиценте заполнения 0,99 паузы получаются
|
Уже писал Выше что коэфициент заполнения 0,5 максимум.
Цитата:
|
0,99 паузы получаются короткими и между началом паузы и ее концом будет слишком мало тактов на обработчик
|
При ШИМ 31кГц и тактовой 16мГц и скважности 50% много можно успеть. В принципе это и послужило причиной моей тяги к 16мГц тактовой частоты, но и 8 мГц может быть вполне достаточно и если не выходит 16 мГц то можно и 8.
Цитата:
|
Огласите задачу более подробно - гадать что Вам реально нужно не хочется
|
Управление с помощью оптодрайверов "косым мостом" это когда в одной диагонали моста 2 транзистора, а в другой 2 диода. ШИМ сигнал предполагается подавать на входа опто драйверов управления IGBT.
Во время пауз предполагается обрабатывать и выводить на 7сегментники усредненый ток и напряжение, также данные тока и напряжения использовать для изменения скважности. Также во время пауз прелполагается опрашивать кнопки и три датчика DS18B20 при необходимости получать показания температуры и отключать все при достижении температуры некоторого предела.
Но пока только ШИМ с остальным понимание вроде есть.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.09.2010, 16:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: ШИМ в АТMega8535
Сообщение от 7Fantomas7
|
Уже писал Выше что коэфициент заполнения 0,5 максимум.
|
А без разницы 0,99 или 0,01 - пауза между событиями будет небольшой. 0,32мкс или около 5 тактов при 16МГц кварце. У Вас будет одно и то же прерывание при изменении вывода. При малом заполнении (0.01) - через 5 тактов. С ростом коэффицента заполнения этот временной интервал будет расти и при 50% станет аж 258 тактов. Но это самый тепличный режим.
Ну либо проводите свои действия только по спаду выходного импульса, там 258 тактов гарантированый минимум.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:27.
|
|