Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Помогите с ШИМ на 12f509

Пт окт 12, 2012 00:12:11

Здравствуйте!
Помогите с написанием одноканального ШИМ на 12f509. Сколько искал в интернете - очень мало. Можно ли написать для него программный шим?
Увы, есть только этот процессор...
Очень хотелось бы увидеть алгоритм формирования, думаю с кодом я справлюсь. Как именно формируется, например, 80% заполнения?
Сколько перечитал - не понимаю. Пишут как правило, для RGB светодиодов.
Плавное загорание и потухание. А как заставить его дискретно менять процент заполнения?
Как я понимаю, используется прерывание по таймеру, и скорее всего счётчик ещё один нужен, в который и заливается значение заполнения ШИМ.
Очень прошу "C" и и прочие языки не использовать, я их почти не знаю, в универе чуть ассемблер давали. Так что из программ делал только динамическую индикацию на 16f84А:)
Буду очень благодарен за разъяснения и куски кода. Надеюсь на вашу помощь.

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 07:24:41

"Можно ли написать для него программный шим?"
Можно.
Почитай, что такое ШИМ вообще и по какому алгоритму этот процесс выполняется (в приложении аналоговых устройств) и сочини подобие для МК... :tea:

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 07:50:10

а чем обусловлен выбор именно этого чипа ? насколько мне не изменяет склероз -там отсутствие прерываний и 1 8 битный таймер - все это не особенно вдохновляет... и как этим шимом управлять...

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 07:54:11

Для организации ШИМ необходимо два таймера. Один генерирует одинаковые промежутки времени (допустим формирует начало импульса), второй, в зависимости от заполнения, формирует конец импульса.
В 509 один таймер TMR0 - его используем для формирования конца импульса, а еще один таймер делаем программно. В программе проверяем процент заполнения, если он больше нуля, устанавливаем единицу на выходе одного из портов и заносим в регистр таймерa TMR0 нужный коэф. ТМR0 инкриментируясь сгенерирует прерывание. В прерывании устонавливаем лог 0 на выходе порта и выходим из прерывания. Цикл повторяется.
Вот и весь алгоритм.

См. тоже на форуме другом.

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 08:09:18

у 509 нет прерываний, если чо.

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 08:34:45

Значит просто проверяем флаг переполнения таймера

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 09:54:59

Так и флага переполнения таймера там нет :)
мой вопрос состоял в том, зачем применять это камень ....

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 10:03:40

Это да, была бы возможность взял бы с аппаратным ШИМом. Но не найти у нас другого. А то что есть, стоит дорого. Есть 16F84, но жалко его для одноканального ШИМа,жаба душит. Хотя подскажите, может знаете 8-ми выводной PIC с аппаратным ШИМ?

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 10:28:30

микрочип знает :)
Выдало для 8 биток 7 результатов
http://www.microchip.com/maps/microcontroller.aspx
Ну там действительно аппаратный не так нужен, достаточно таймеров с прерыванием.
Наиболее распространенные из 8 ножек 12f675 629

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 10:37:58

Вот чёрт... Ну раз такому новичку, как я на этом МК не написать ШИМ, придётся 12F675 искать.

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 12:40:29

urry писал(а):Так и флага переполнения таймера там нет :)


:) Точно нет. Это все долбаные опечатки в переведенных даташитах )))

Re: Помогите с ШИМ на 12f509

Пт окт 12, 2012 15:39:28

на 509-м спокойненько программный ШИМ сообразится и без всяких аппаратных примочек 8)
А с аппаратным - pic12f683 в лапы 8)
(Инет какой-то пакостный, все "повиснуть"пытается :kill: )
Ответить