реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вывод PWM3 AT91SAM7S Keil
Vladv002
сообщение Jan 13 2016, 07:14
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 13-01-16
Из: Новосибирск
Пользователь №: 90 003



Здравствуйте.
Подсажите как вывести PWM на PA11,PA12,PA13,PA14 соответственно.
Я только начинаю, не могу даже справится с PWM3
- нет сигнала ни на PA3 ни PA7:( Примеров много - НО без PWM3...
Вот рабочий пример НО PWM3 не работает.

#include "Board.h" /* AT91SAMT7S64 ОПРЕДЕЛЕНИЯ для данной платы */
int main(void) // Keil µVision V4.74.0.22
{
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PWMC); // Peripheral Clock Enable (PMC_PCER)
AT91C_BASE_PWMC->PWMC_DIS = 0x0F; // PWM Disable Register. Регистр отключения ШИМ
AT91C_BASE_PWMC->PWMC_MR = 0x7010701;// Регистр MCK/8 clkB
/// ВЫВОД ШИМ 1
AT91C_BASE_PWMC->PWMC_CH[0].PWMC_CMR = AT91C_PWMC_CPRE_MCKA; //Channel Mode Register
AT91C_BASE_PWMC->PWMC_CH[0].PWMC_CDTYR = 2400/2; //Channel Duty Cycle Register
AT91C_BASE_PWMC->PWMC_CH[0].PWMC_CPRDR = 2400-10; //Channel Period Register (freq+20)
AT91C_BASE_PWMC->PWMC_ENA = 1; // Enable PWM на PA0
/// ВЫВОД ШИМ 2
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CMR = AT91C_PWMC_CPRE_MCKA; //Channel Mode Register
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CDTYR = 2400/2; //Channel Duty Cycle Register
AT91C_BASE_PWMC->PWMC_CH[1].PWMC_CPRDR = 2400; //Channel Period Register (freq+20)
AT91C_BASE_PWMC->PWMC_ENA = 2; // Enable PWM на PA1
/// ВЫВОД ШИМ 3
AT91C_BASE_PWMC->PWMC_CH[2].PWMC_CMR = AT91C_PWMC_CPRE_MCKA; //Channel Mode Register
AT91C_BASE_PWMC->PWMC_CH[2].PWMC_CDTYR = 2400/2; //Channel Duty Cycle Register
AT91C_BASE_PWMC->PWMC_CH[2].PWMC_CPRDR = 2400; //Channel Period Register (freq+20)
AT91C_BASE_PWMC->PWMC_ENA = 4; // Enable PWM на PA2
/// ВЫВОД ШИМ 4 !!! - НЕ МОГУ вывести 4 канал ШИМ
AT91C_BASE_PWMC->PWMC_CH[3].PWMC_CMR = AT91C_PWMC_CPRE_MCKA; //Channel Mode Register
AT91C_BASE_PWMC->PWMC_CH[3].PWMC_CDTYR = 2400/2; //Channel Duty Cycle Register
AT91C_BASE_PWMC->PWMC_CH[3].PWMC_CPRDR = 2400; //Channel Period Register (freq+20)
AT91C_BASE_PWMC->PWMC_ENA = 8; // Enable PWM на PA3 - PA7 не реагирует
while (1);
}
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jan 13 2016, 08:07
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Vladv002 @ Jan 13 2016, 10:14) *
Здравствуйте.
Подсажите как вывести PWM на PA11,PA12,PA13,PA14 соответственно.
Я только начинаю, не могу даже справится с PWM3
- нет сигнала ни на PA11 ни PA14sad.gif Примеров много - НО без PWM3...
Вот рабочий пример НО PWM3 не работает.


Где настройки PIO?
AT91_BASE_PIOA->PIO_PDR = (P11 | P12 | P13 | P14);
AT91_BASE_PIOA->PIO_BSR = (P11 | P12 | P13 | P14);
Go to the top of the page
 
+Quote Post
Vladv002
сообщение Jan 13 2016, 11:26
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 13-01-16
Из: Новосибирск
Пользователь №: 90 003



Цитата(DmitryM @ Jan 13 2016, 09:07) *
Где настройки PIO?
AT91_BASE_PIOA->PIO_PDR = (P11 | P12 | P13 | P14);
AT91_BASE_PIOA->PIO_BSR = (P11 | P12 | P13 | P14);

Спасибо за подсказку, но ни как не получается.
Проверил PWM3, он на РА7, в режиме В. Так настроил...
AT91C_BASE_PIOA->PIO_PDR = (1 << 7); // 0x00000080 (PIO Disable Register)
AT91C_BASE_PIOA->PIO_BSR = (1 << 7); // 0x00000080 (Select B Register)

На панеле PWM в отладчике мигают все 4 канала - Анализатор видит только
РА0,РА1,РА2 - на панеле портов тоже 3 мигают, четвертого канала нет,
помогите найти истину, в гугле PWM3 примера не нашел...

Спасибо за помощь!
Проверил сразу 4 канала и сигнал появился на 4 портах, добавил код:
AT91C_BASE_PIOA->PIO_PDR = ((1 << 11)|(1 << 12)|(1 << 13)|(1 << 14));
AT91C_BASE_PIOA->PIO_BSR = ((1 << 11)|(1 << 12)|(1 << 13)|(1 << 14));
А с РА7 что то не так, НО пока он мне ненужен...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016