Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATMEGA88 меандр с помощью таймера не выводится
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
misyachniy
Вот полный текст

Код
#include "iom88.h"
#include <intrinsics.h>

#define F_CPU 8000000ul // тактовая процессора

// инициализация для генерации меандра на ножке 1(OCR2B)
// Используеи таймер 2
void PWM_init (void)
{
  PRR    &= ~(1<<PRTIM2);
  TIMSK2 = 0; // прерывания запрещены
  TCNT2 = 0;
  TCCR2A = (1<<COM2B0) | (1<<WGM21); // CTC режим
  TCCR2B = (1<<CS20) | (1<<CS21) | (1<<CS22); // прескаллер 1024
  OCR2B  = 8; // 500 Герц
}
  
int main( void )
{
  DDRD  = 0xFF;
  PORTD &= ~(1<<2);
  PWM_init();
  for (;;)
  {
      PORTD &= ~(1<<2);
    __delay_cycles(500000);
      PORTD |= (1<<2);
    __delay_cycles(500000);
    
  }  
}


На PD2 - для контроля светодод моргает.
На PD3/OC2B - логическая единица, меандра нет :-(
SasaVitebsk
Режим CTC (см. таблицу) работает до OCR2A. То есть, на сколько я себе представляю нужно в TCCR2A также занести 8
misyachniy
Цитата(SasaVitebsk @ Nov 8 2007, 23:01) *
Режим CTC (см. таблицу) работает до OCR2A. То есть, на сколько я себе представляю нужно в TCCR2A также занести 8


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