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

Таймер1 в ATtiny45

Случился полный затык с ATtiny45, подключенной Драконом к Студии 4.14b589. В кристалл зашита программа для установки таймера1 в режим PWM на вывод OC1B (32MHz/4/256=31250Hz=Fpwm):

__C_task void main(void) {
  SETUP(OC1Apin,OUT0);
  SETUP(OC1Bpin,OUT0);
  TCCR1 = BIN(00000000);
  GTCCR = BIN(01100010);
  TCNT1 = 0;
  OCR1A = 20;
  OCR1B = 100;
  OCR1C = 255;
  PLLCSR = BIN(10000110);Delay(200*us);  
  while(!CHKBIT(PLLCSR,PLOCK));
  TCCR1 |= 0x03;
  while(1);
}

Однако в результате на выводе OC1B видим лог.0.

Начал разбираться. Протестировал работу OC1A манипуляцией битов COM1A1 и COM1A0 в TCCR1 прямо из Студии. Все работает как и описано в даташите. Те же самые действия с OC1B (меняем COM1B1 и COM1B0 в GTCCR) не приводят к появлению частоты на OC1B. Генерация частоты здесь появляется только если включить канал OC1A теми же COM1A1 и COM1A0 в TCCR1!!!! Не понимаю, как такое может быть? Ведь waveform generators отдельные для обоих каналов судя по даташиту...

Фузы все по умолчанию, т.е. режим совместимости таймера1 с ATtiny15 не установлен.

Использую компилятор IAR v5.10A. Проверил листинг:

     21            TCCR1 = BIN(00000000);
   \   00000004   E000               LDI     R16, 0
   \   00000006   BF00               OUT     0x30, R16
     22            GTCCR = BIN(01100010);
   \   00000008   E602               LDI     R16, 98
   \   0000000A   BD0C               OUT     0x2C, R16

Вроде в адресах регистров нет ошибок.

Напоследок, заменил кристалл. Все то же самое.

Сейчас в полной растерянности... Нужна PWM именно на OC1B и только там, др. выводы используются как general IO.

Поделиться сообщением


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

Вы бы привели еще и код который работает, тот что с OC1A, а так, можно посоветовать только проверить биты в регистрах, которые у вас в студии получаются и с даташитом сравнить, наверняка гдето ошиблись.

И что за макросы такие у вас?

  SETUP(OC1Apin,OUT0);
  SETUP(OC1Bpin,OUT0);

Поделиться сообщением


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

Протестировал работу OC1A манипуляцией битов COM1A1 и COM1A0 в TCCR1 прямо из Студии. Все работает как и описано в даташите. Те же самые действия с OC1B (меняем COM1B1 и COM1B0 в GTCCR) не приводят к появлению частоты на OC1B. Генерация частоты здесь появляется только если включить канал OC1A теми же COM1A1 и COM1A0 в TCCR1!!!! Не понимаю, как такое может быть? Ведь waveform generators отдельные для обоих каналов судя по даташиту...

 

Сам сталкивался с этим эффектом - описан в даташите, раздел Errata ATtiny45.

Посмотрите ревизию вашего МК. У меня были МК ревизии С. В rev.D и далее должно быть исправлено.

Поделиться сообщением


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

Сам сталкивался с этим эффектом - описан в даташите, раздел Errata ATtiny45.

Посмотрите ревизию вашего МК. У меня были МК ревизии С. В rev.D и далее должно быть исправлено.

 

А вот еррату то я посмотреть и не догадался... И плату сделал... И поплатился. Что примечательно, такого количества багов нет ни в Тини25, ни в Тини85.

 

А с этими ревизиями просто ужас какой-то. Прямо-таки тайна. Официальной инфы от Атмела я так и не дождался в свое время. Наверное, сделано специально, чтобы конечный покупатель не смог определить номер ревизии при покупке...

 

Моя имеет такие строки на брюхе:

 

4H2 172A

 

B2 1P

 

0527 E3

 

По еррате ревизия может быть В или С. А вообще доступны D,E,F,G.

 

Обычно ставят букву ревизии в конце второй строки на TQFP. На QFN32 все совсем по-другому. У меня есть образцы, где из букв только "KOREA-A", остальное цифры. Здесь же, на DIP8 своя метода. И отсутствие достоверной официальной информации просто удручает...

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...