Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.03.2012, 20:15
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
dosikus я знаю что Вы спецы но каждый ведь с такого к я начинал точней с самых низов
Так что пройдет время и я тебе перешиголяю и буду я тебе помогать а не ты мне
|
|
|
|
10.03.2012, 20:49
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
SAHA_T, без обид
Но когда ты поймешь в чем дело...
Короче вникай, спрашивай .
Сразу говорю могут быть ошибки , так как правил наспех и без проверки.
Код:
|
#define TMR 65380L //0xFF64 : 78 мкс (при тактовой 16МГц и делителе : 1 такт 128-разрядного ШИМ
#define sbi(p,m) ((p) |= 1‹‹(m)) //установить бит m порта p
#define cbi(p,m) ((p) &= ~(1‹‹(m))) //сбросить бит m порта p
#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_portD;
TCNT1 = TMR; //начальное значение таймера
PORTA=PWM_portA;
PWM_portD|=PORTD&~PWM_PORTD_MASK;
PORTD=PWM_portD;
PWM_portC|=PORTC&~PWM_PORTC_MASK;
PORTC=PWM_portC;
if((Tic++)›=128) 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;
//DDRC=0xFF;
PORTA=0x00;
PORTC=0x00;
PORTD=0x00;
delay_ms(1000);
//DDRA=0xFF;
//PORTC=0x0;
//Kanal_0 = 0;
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(); //разрешить прерывания
while(1)
{
for(Counter_chanel=0;Counter_chanel‹16;Counter_chanel++)
{
for(PWM_value=0;PWM_value‹128;PWM_value++)
{
PWM_buffer[Counter_chanel]=PWM_value;
delay_ms(n);
}
delay_ms(m);
}
delay_ms(3000);
// */
//
//Гашение
}
} |
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 10.03.2012 в 20:52.
|
|
|
|
10.03.2012, 20:55
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
Млин как все сложно
|
|
|
|
10.03.2012, 20:56
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
Млин как все сложно
|
Спрашивай по порядку , разжуем...
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 21:02
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
#define PWM_PORTC_MASK 0xC3 195
#define PWM_PORTD_MASK 0xE0 224 что это за переменные ? и значения откуда такие ?
PWM_portD|=PORTD&~PWM_PORTD_MASK; это вообще страшная запись
сейчас еще посмотрю
|
|
|
|
10.03.2012, 21:09
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
я уже ошибку нашел
|
|
|
|
10.03.2012, 21:15
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
#define PWM_PORTC_MASK 0xC3 195
#define PWM_PORTD_MASK 0xE0 224 что это за переменные ? и значения откуда такие ?
PWM_portD|=PORTD&~PWM_PORTD_MASK; это вообще страшная запись
сейчас еще посмотрю
|
Это не переменные , это константы маски для портов .
Что бы биты, не участвующие в процедуре, не портились.
Собственно "страшная запись" это и делает..
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 21:20
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
Тогда для порта А как будет выглядеть ?
#define PWM_PORTA_MASK ?
PORTA=PWM_portA;
PWM_portA|=PORTA&~PWM_PORTD_MASK;
Эти маски как они пишутся я просто не могу понять откуда 0xC3 195 и 0xE0 224 какое значение будет для А порта. Объясни плиз как считаются эти числа .
|
|
|
|
10.03.2012, 21:24
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: И снова ШИМ
Сообщение от SAHA_T
|
Тогда для порта А как будет выглядеть ?
#define PWM_PORTA_MASK ?
|
Ну, ну . А подумать ? У тебя же порт А целиком используется ...
А вычисляются так - ставишь те биты которые используются в 1.
Например У тебя порт С используются биты 7,6,1,0 - 0b11000011 0xC3
__________________
Осторожно , злой кот
|
|
|
|
10.03.2012, 21:26
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: И снова ШИМ
я только что сам об этом подумал и пересчитал на калькуляторе, только я не понял почему порта а не написал типа 0xFF или это не нужно ?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:12.
|
|