Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.03.2012, 22:04
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
правильно я понимаю
while(1)
{
PWM_buffer[15]=64;
}
все светодиоды - не горят
|
Нет не правильно :
Код:
|
PWM_buffer[0]=64;
PWM_buffer[1]=64;
PWM_buffer[2]=64;
PWM_buffer[3]=64;
PWM_buffer[4]=64;
PWM_buffer[5]=64;
PWM_buffer[6]=64;
PWM_buffer[7]=64;
PWM_buffer[8]=64;
PWM_buffer[9]=64;
PWM_buffer[10]=64;
PWM_buffer[11]=64;
PWM_buffer[12]=64;
PWM_buffer[13]=64;
PWM_buffer[14]=64;
PWM_buffer[15]=64;
while(1)
{
} |
Пусть пока будет 16 каналов.
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 22:05
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
Так это я изменял но бес толку результат тот же ни 1 светодиод не горит
|
|
|
|
10.03.2012, 22:06
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
Так это я изменял но бес толку результат тот же ни 1 светодиод не горит
|
Код давай .
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 22:13
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
сейчас изменял значения от 128 до 8 яркость меняется
следовательно ШИМ работает
|
|
|
|
10.03.2012, 22:16
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
сейчас изменял значения от 128 до 8 яркость меняется
следовательно ШИМ работает
|
Все каналы ?
То есть в PWM_buffer[ ] ты заносил от 8 до 128 и все работает ?
Если так , то все ок .
Надо копать с циклами .
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 22:22
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
смотри что получается
цикл работает
for(PWM_value=0;PWM_value‹128;PWM_value++)
{
PWM_buffer[0]=PWM_value;
PWM_buffer[1]=PWM_value;
PWM_buffer[2]=PWM_value;
PWM_buffer[3]=PWM_value;
PWM_buffer[4]=PWM_value;
PWM_buffer[5]=PWM_value;
PWM_buffer[6]=PWM_value;
PWM_buffer[7]=PWM_value;
PWM_buffer[8]=PWM_value;
PWM_buffer[9]=PWM_value;
PWM_buffer[10]=PWM_value;
PWM_buffer[11]=PWM_value;
PWM_buffer[12]=PWM_value;
PWM_buffer[13]=PWM_value;
PWM_buffer[14]=PWM_value;
PWM_buffer[15]=PWM_value;
delay_ms(m);
}
а вот если я применяю цикл по массиву тогда не канает, до 4-й буквы и назад
|
|
|
|
10.03.2012, 22:24
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Пробуй , что получается ?
Код:
|
while(1)
{
for(Counter_chanel=0;Counter_chanel‹14;Counter_chanel++)
{
for(PWM_value=0;PWM_value‹128;PWM_value++)
{
PWM_buffer[Counter_chanel]=PWM_value;
delay_ms(n);
}
delay_ms(m);
}
while(1);
} |
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 22:30
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
результат тот же до 4-й буквы и также во время загорания 3-й начинают моргать 12-13-14
|
|
|
|
10.03.2012, 22:37
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
И так еще раз :
Запусти этот код обязательно . Должны гореть все одинаково.
Код:
|
#define TMR 65380L //0xFF64 : 78 мкс (при тактовой 16МГц и делителе : 1 такт 128-разрядного ШИМ
volatile unsigned int i,m,n,nn,mm,q,qq;
#define PWM_PORTC_MASK 0xC3
#define PWM_PORTD_MASK 0xE0
volatile unsigned char PWM_buffer[16] ;
void delay_ms(int n)
{
int i;
for(i=0;i‹n;i++){ _delay_ms(1);}
}
//Прерывание по переполнению таймера 1
ISR(SIG_OVERFLOW1)
{
static unsigned char Tic;
static unsigned char PWM_portA;
static unsigned char PWM_portD;
static unsigned char PWM_portC;
TCNT1 = TMR; //начальное значение таймера
PORTA=PWM_portA;
// PWM_portA|=PORTA&~PWM_PORTD_MASK;
PORTC=PWM_portC;
PWM_portC|=PORTC&~PWM_PORTC_MASK;
PORTD=PWM_portD;
PWM_portD|=PORTD&~PWM_PORTC_MASK;
if((Tic++)›=12 Tic=0;
PWM_portA=0;
PWM_portC=0;
PWM_portD=0;
// Канал 0
if (Tic ‹ PWM_buffer[0])PWM_portA|=0x01;
if (Tic ‹ PWM_buffer[1])PWM_portA|=0x02;
if (Tic ‹ PWM_buffer[2])PWM_portA|=0x04;
if (Tic ‹ PWM_buffer[3])PWM_portA|=0x08;
if (Tic ‹ PWM_buffer[4])PWM_portA|=0x10;
if (Tic ‹ PWM_buffer[5])PWM_portA|=0x20;
if (Tic ‹ PWM_buffer[6])PWM_portA|=0x40;
if (Tic ‹ PWM_buffer[7])PWM_portA|=0x80;
// Канал 8 - здесь переходим к следующему порту
if (Tic ‹ PWM_buffer[8])PWM_portC|=0x80;
if (Tic ‹ PWM_buffer[9])PWM_portC|=0x40;
if (Tic ‹ PWM_buffer[10])PWM_portC|=0x01;
if (Tic ‹ PWM_buffer[11])PWM_portD|=0x80;
if (Tic ‹ PWM_buffer[12])PWM_portD|=0x20;
if (Tic ‹ PWM_buffer[13])PWM_portD|=0x40;
if (Tic ‹ PWM_buffer[14])PWM_portC|=0x02;
}
//************************************************** *
// Начало программы
//************************************************** *
int main(void)
{
unsigned char Counter_chanel=0;
unsigned char PWM_value=0;
DDRA=0xFF; //порты - на выход
DDRC=0xFF;
DDRD=0xFF;
PORTA=0x00;
PORTC=0x00;
PORTD=0x00;
delay_ms(1000);
n=5; //задержка в мс между шагами яркости
q=0;
nn=1; // гашение
mm=2; //гашение
m=50; //задержка в мс между "кадрами"
TCNT1 = TMR; //начальное значение счетчика
TIMSK &= ~(1‹‹TOIE1); //запрещаем Ovf1
cli(); //запрещаем прерывания
TIMSK |= 1‹‹TOIE1; //Разрешить Ovf1
TCCR1B |= 0x2; //включить таймер 1 с делителем 8
sei(); //разрешить прерывания
PWM_buffer[0]=64;
PWM_buffer[1]=64;
PWM_buffer[2]=64;
PWM_buffer[3]=64;
PWM_buffer[4]=64;
PWM_buffer[5]=64;
PWM_buffer[6]=64;
PWM_buffer[7]=64;
PWM_buffer[8]=64;
PWM_buffer[9]=64;
PWM_buffer[10]=64;
PWM_buffer[11]=64;
PWM_buffer[12]=64;
PWM_buffer[13]=64;
PWM_buffer[14]=64;
PWM_buffer[15]=64;
while(1)
{
}
} |
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 22:40
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Так, покой ты Counter_chanel объявляешь глобальной да и еще int ????
Цитата:
|
volatile unsigned int i,m,n,nn,mm,q,qq,Counter_chanel;
|
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:14.
|
|