Другие языки программирования и технологии
Как написать ШИМ для pic16f628a
Нужно написать ШИМ для данного контролера на языке assembler. Уже несколько дней ищу в интернете, но так и не нашел где мне могли бы это пошагово объяснить. Я имею в виде само тело программы.
Открываем даташит, смотрим главу "Capture/Compare/PWM (CCP) Module"
Смотрим там таблицу "REGISTERS ASSOCIATED WITH PWM AND TIMER2"
и читаем пункт "SET-UP FOR PWM OPERATION"
Там написан четкий алгоритм:
1) Set the PWM period by writing to the PR2 register. (устанавливаем период ШИМ записав в регистр PR2)
Смотрим в таблице адрес этого регистра 92h.
То есть в ассемблере пишем установить значение по адресу 92h и ваше значение.
2) Set the PWM duty cycle by writing to the CCPR1L register and CCP1CON<5:4> bits. (устанавливаем период повторений записав в регистр CCPR1L и 4-5 биты CCP1CON.)
Адреса CCPR1L и CCP1CON смотрим по таблице - 15h и 17h
3) Make the CCP1 pin an output by clearing the TRISB<3> bit (делаем вывод CCP1 выходом сделав третий бит нулем)
4) Set the TMR2 prescale value and enable Timer2 by writing to T2CON. (устанавливаем масштабный фактор TMR2 таймера записав в T2CON)
5) Configure the CCP1 module for PWM operation (настраиваем модуль CCP1 для работы в качестве ШИМ)
Как писать конкретно в ассемблере я не в курсе. (хотя в даташите приводится множество примерев именно на ассемблере). Я писал прям в машинных кодах. Коды команд даны в главе Instruction Set Summary.
Вобщем мой тебе совет - скачать даташит и как следует его изучить. Занимает это дело дня два, после чего становишься богом контроллера.
Смотрим там таблицу "REGISTERS ASSOCIATED WITH PWM AND TIMER2"
и читаем пункт "SET-UP FOR PWM OPERATION"
Там написан четкий алгоритм:
1) Set the PWM period by writing to the PR2 register. (устанавливаем период ШИМ записав в регистр PR2)
Смотрим в таблице адрес этого регистра 92h.
То есть в ассемблере пишем установить значение по адресу 92h и ваше значение.
2) Set the PWM duty cycle by writing to the CCPR1L register and CCP1CON<5:4> bits. (устанавливаем период повторений записав в регистр CCPR1L и 4-5 биты CCP1CON.)
Адреса CCPR1L и CCP1CON смотрим по таблице - 15h и 17h
3) Make the CCP1 pin an output by clearing the TRISB<3> bit (делаем вывод CCP1 выходом сделав третий бит нулем)
4) Set the TMR2 prescale value and enable Timer2 by writing to T2CON. (устанавливаем масштабный фактор TMR2 таймера записав в T2CON)
5) Configure the CCP1 module for PWM operation (настраиваем модуль CCP1 для работы в качестве ШИМ)
Как писать конкретно в ассемблере я не в курсе. (хотя в даташите приводится множество примерев именно на ассемблере). Я писал прям в машинных кодах. Коды команд даны в главе Instruction Set Summary.
Вобщем мой тебе совет - скачать даташит и как следует его изучить. Занимает это дело дня два, после чего становишься богом контроллера.
рукой.
Похожие вопросы
- Как получить 1 МГц на ШИМ порту arduino?
- Очень срочно!!! Помогите с заданиями по ИНФОРМАТИКЕ, надо написать несколько программ:
- Какую написать программу?
- Помогите написать программу со switch в СИ
- Оцените работу, пожалуйста. И напишите нравится ли Вам?
- Ничего страшного, если я напишу дипломный проект на Delphi?
- Как пишутся библиотеки? Что почитать, чтобы попробовать написать самому что-то?
- помогите написать простые программы на Qbasic
- Помогите написать пару программ на СИ
- Помогите на С# написать программу на поиск Синуса с косинусом.