Выдача частоты 4мГц с Arduino(без использования прерываний )

nmi
Offline
Зарегистрирован: 17.12.2012

 

Добрый день уважаемые.

Для оптимизации схемы, требуется выдать с платы Aurdino (с ATMEGA-328)   меандр с частотой 4 - мегагераца.

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

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

Буду вам крайне благодарен.....

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Попробуйте это:


void setup()
{
  pinMode(9, OUTPUT);
  // Timer/Counter 1 initialization
  // Clock source: System Clock
  // Clock value: 16000.000 kHz
  // Mode: Fast PWM top=ICR1
  // OC1A output: Non-Inv.
  // OC1B output: Discon.
  // 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=0x82;
  TCCR1B=0x19;
  TCNT1H=0x00;
  TCNT1L=0x00;
  ICR1H=0x00;
  ICR1L=0x04;
  OCR1AH=0x00;
  OCR1AL=0x02;
  OCR1BH=0x00;
  OCR1BL=0x00;
}

void loop()
{
}

Полезная статья по программированию таймеров в ардуино

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Еще вот так можно:

void setup()
{
  pinMode(11, OUTPUT);
  OCR2A=1;
  TCCR2A=66;
  TCCR2B=1; 
}
void loop()
{
   ...
}