Перейти к содержанию

Транзистор С Лог. Управлением Для Rgb Светодиодной Ленты. Уровень Шим 3,3В


Рекомендуемые сообщения

void main(void)
{
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
...

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: Fast PWM top=0x03FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA3;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 250,000 kHz
// Mode: Fast PWM top=0xFF
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x6B;
TCNT2=0x00;
OCR2=0x00;
...
while (1)
 {
 while(OCR2<0xFF)
 {
 OCR2++;
 delay_ms(10);
 }
 while(OCR2>0x00)
 {
 OCR2--;
 delay_ms(10);
 }
 }
}

Ну или просто:

OCR2 = 255;
OCR1A = 500;
OCR1B = 0;

Страница 106 даташита на ATMega8:

The extreme values for the OCR2 Register represent special cases when generating a PWM waveform output in the fast PWM mode. If the OCR2 is set equal to BOTTOM, the output will be a narrow spike for each MAX+1 timer clock cycle. Setting the OCR2 equal to MAX will result in a constantly high or low output (depending on the polarity of the output set by the COM21:0 bits.)

Ну или по-нашему (из Евстифеева):

Отдельно следует рассматривать случаи, когда в регистре сравнения находятся предельно возможные значения. Если в регистре сравненияOCR2 (OCRnA/OCRnB) содержится $00, то на выходе ОСn (ОСnА/ОСnВ)будут наблюдаться короткие выбросы с периодом, равным максимальному значению таймера/счетчика. Если же содержимое регистра сравнения равно максимальному значению, то вывод ОСn (ОСnА/ОСnВ) переключится в устойчивое состояние, определяемое установками битов СОМn1:СОМn0(СОМnx1:СОМnх0). В частности, подобным образом функционирует выход ОСnА, когда максимальное значение задается регистром OCRnA.

Порт настроен на выход и на нем уже выставлен 0. Поэтому думаю достаточно будет при ШИМ 0% просто отключить выход таймера от ножки МК. А при ШИМ > 0 подключать его обратно. Сам таймер пусть постоянно работает.

TCCR1A &= ~(1<<COM1A1);	 // отключили выход A таймера 1 (COM1A1 = 0, COM1A0 = 0)
TCCR1A |=(1<<COM1A1); // включили выход A таймера 1 (COM1A1 = 1, COM1A0 = 0)

TCCR1A &= ~(1<<COM1B1);	 // отключили выход B таймера 1 (COM1B1 = 0, COM1B0 = 0)
TCCR1A |=(1<<COM1B1); // включили выход B таймера 1 (COM1B1 = 1, COM1B0 = 0)

TCCR2 &= ~(1<<COM21);	 // отключили выход таймера 2 (COM21= 0, COM20= 0)
TCCR2 |=(1<<COM21); // включили выход таймера 2 (COM21= 1, COM20= 0)

post-102780-0-47547300-1450860458.png post-102780-0-22690200-1450860466.png

Вечером попробую.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Всё работает! Теперь никаких иголок на затворе! Так что мало выставить ШИМ в 0, надо ещё и выход таймера от ноги МК отцеплять. Всем спасибо!

Пример для одного канала после приема команды с телефона:

#define G OCR2
...
if (buffer[count_now+1] != 0) {
 TCCR2 |=(1<<COM21);         // включили выход таймера 2 (COM21 = 1, COM20 = 0)
}
else {
 TCCR2 &= ~(1<<COM21);       // отключили выход таймера 2 (COM21 = 0, COM20 = 0)
}                         
G = buffer[count_now+1];

Изменено пользователем mr_smit
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...