Jump to content

    

как считать CLKPR

Написал простенькую прогу, смотрю на выводе выходную частоту, при любых коэф. деления на выходе 1кГц.

static void avr_init(void)
{  TCCR1B=(1<<CS10)|(1<<WGM12);// ctc mode
     OCR1A=4000;//время 1 милисекунда
     sei();
}

int main(void){
      clock_prescale_set(clock_div_2);
      avr_init();
      DDRB|=_BV(1)|_BV(0);
  while(1)
      {    
      PORTB^=_BV(1);
      if (TIFR1 & _BV(OCF1A)) // 0.001 sek
          {
          TIFR1 = _BV(OCF1A);
          PORTB^=_BV(0);    
          }
      }
  }

 

Все разобрался, этот код работает. Не работал UART из-за этого затормозил. Да и сейчас почему то получается, если взять значение из таблицы baud rate для 4Meg (4800 51 0.2%), то принимает нормально на 9600. Для меги88.

m48.zip

Edited by horoc

Share this post


Link to post
Share on other sites

Народ помогите!

Не могу понять. Ставлю RС 8Мег, CLKPR делю частоту на 2. Дергаю вывод через 1мс, частота должна быть 500Гц. Также уарт настраиваю на 2400 бод, а он в реале принимает на 4800 и частота на выводе 1кГц.

Исходник прилагаю, все лишние убрал. Проверяю в протеусе, там работает правильно.

Как понять такую ситуацию? RC генератор работает на 16Мег?

Еще вопрос, хочу использовать уарт, с тактированием от внутреннего RC, посылка где то раз в секунду не больше 9 байт, такой вариант имеет право на жизнь? Стоять будет в помещение. Никто не проверял на стабильность и повторяемость в разных экземплярах частоты этого генератора?

2.zip

Edited by horoc

Share this post


Link to post
Share on other sites
Еще вопрос, хочу использовать уарт, с тактированием от внутреннего RC, посылка где то раз в секунду не больше 9 байт, такой вариант имеет право на жизнь? Стоять будет в помещение. Никто не проверял на стабильность и повторяемость в разных экземплярах частоты этого генератора?

Именно этого - не знаю, но в преобразователе Wiegand->RS232 нормально работает ATtiny12 на 9600 от внутреннего генератора (UART ногодрыжный) - кварца под рукой не было, а потом лень стало впаивать :) Условия похожие - используется в помещении. Посылки до 64 байт включительно пролезают нормально, больших размеров не попадалось.

 

На счёт частоты для UART в даташите в формулах для расчёта скорости используется fOSC System Oscillator clock frequency...

Edited by RabidRabbit

Share this post


Link to post
Share on other sites

Попросил друга проверить программу из поста выше. Так у него все нормально, частота на выводе 500гц. У меня другой меги нет, что бы самому проверить. На этой с этой программой на выводе 1кГц. Еще есть один нюанс, все байты сигнатуры читаются 0xFF, может это связано как то с тем, что частота внутреннего RC генератора моей меги 16Мег? Звучит конечна как бред :cranky: , но, что в протеусе, что у друга программа работает, а у меня все частоты завышены в два раза.

Share this post


Link to post
Share on other sites

Внутренний генератор можно разогнать до 13 МГц - OSCCAL, но не рекомендуется выше 9 МГц т.к. им тактируется запись в ПЗУ и при высокой частоте срок хранения данных уменьшается

 

Прошить бит CKOUT и измерить частотомером

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this