Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ШИМ
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
proof
Толи лыжи не едут, толи я ... чегото не понимаю smile.gif

ATMega8

На PB1(OC1A) весит светодиод.
По задумке должна менятся яркость свечения в зависимости от OCR1A. А я этого не наблюдаю....


Код
#include <iom8.h>
#include <intrinsics.h>

#define COM1A1   BIT7
#define COM1A0   BIT6

#define WGM11    BIT1
#define WGM10    BIT0
#define WGM13    BIT4
#define WGM12    BIT3

#define CS10  BIT0
#define CS11  BIT1
#define CS12  BIT2


int main()
{

  DDRB = BIT1;
  TCCR1A = COM1A1 + COM1A0 + WGM10;
  TCCR1B = WGM13 + CS10;
  
  OCR1A = 0xFF;
  
  while(1);

}
Палыч
Наверное, потому, что в выбранном Вами режиме работы таймера TOP= OCR1A
proof
Цитата(Палыч @ May 23 2008, 18:35) *
Наверное, потому, что в выбранном Вами режиме работы таймера TOP= OCR1A


А какой тогда регистр для сравнения?

Цитата
In non-inverting compare output mode, the output compare (OC1x) is cleared on
the compare match between TCNT1 and OCR1x while upcounting, and set on the compare
match while downcounting.


Всё, разобрался.
Спасибо за совет!

Код
#include <iom8.h>
#include <intrinsics.h>

#define COM1A1   BIT7
#define COM1A0   BIT6

#define WGM11    BIT1
#define WGM10    BIT0
#define WGM13    BIT4
#define WGM12    BIT3

#define CS10  BIT0
#define CS11  BIT1
#define CS12  BIT2


int main()
{

  DDRB = BIT1;
  TCCR1A = COM1A1 + COM1A0;
  TCCR1B = WGM13 + CS10;
  
  OCR1A = 0xFF;
  
  ICR1 = 0xFFFF;
  
  while(1);

}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.