Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 07.10.2012, 05:06  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
Лампочка Генератор 5Мгц на Тиньке2313

Вот уперся в проблему - надо откалибровать частотомер сигналом в 5мгц, а нужного кварца для транзисторного генератора нет.

Решил обмануть всех и замутить на Atiny2313 14.3mHz

Естессно на CvAVR

что имею

PHP код:

#include ‹tiny2313a.h›
#include ‹delay.h›

#define PIN_PLUS PINB.0
#define PIN_MINUS PINB.2
#define GEN_OUTPUT PORTB.4

unsigned int TIMER_DELAY=65000;

// Timer1 overflow interrupt service routine
 
interrupt [TIM1_OVFvoid timer1_ovf_isr(void)
 {
 
// Reinitialize Timer1 value
 
TCNT1H=TIMER_DELAY ›› 8;
 
TCNT1L=TIMER_DELAY 0xff;

 
GEN_OUTPUT=~GEN_OUTPUT;
 }

void main(void)
{

#pragma optsize-
  
CLKPR=0x80;
  
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
  
PORTA=0x00;   DDRA=0x00;
  
PORTB=0x05;   DDRB=0x10;
  
PORTD=0x40;   DDRD=0x00;

  
//Таймер гоняется на 14мгц
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

#asm("sei")

  
while (1)
  {                                  

     if (!
PIN_PLUS
      { 
        
delay_ms(5);
        
TIMER_DELAY++;
        if (
TIMER_DELAY65534TIMER_DELAY=65534

      } else
      if (!
PIN_MINUS
      {
        
delay_ms(5);
        
TIMER_DELAY--;
        if (!
TIMER_DELAYTIMER_DELAY=1;

      }

  };


В результате дожимает до 203кгц и привет
Ведь все по честному, 20 тиков на прерывание таймера плюс еще 15 где-то на основной цикл и кнопки, но ведь частоты хватает на 70 тиков при 14.3мгц, тоесть если бы справлялась прога за честные 35 то уже выжала бы система аж 400кгц.


Ухищрения типа

PHP код:
while(1GEN_OUTPUT
Вообще дают унылый результат в полтора килогерца.

Если есть советы и идеи говорите, я записываю.
Ударил бы АСМом по проблеме, только не хочу зарываться в справочник снова
Реклама:
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 07.10.2012, 08:50  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Используй аппаратный ШИМ на таймере. Кварц на 10 МГц, на выходе будет до 5 МГц
niXto вне форума  
Непрочитано 07.10.2012, 09:48  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Сообщение от MasterMushi Посмотреть сообщение
Решил обмануть всех и замутить на Atiny2313 14.3mHz
А кварца на "круглую" частоту нет?
Подозреваю, что этот на 14,318МГц.
А то и на асме отсчитать 2,8636 тика не получится.
Чтобы получить целую частоту на выходе, нужно, чтоб такт делился нацело.
Вот какие целые частоты можно из него получить.
Подсказка: использовать режим СТС таймера0 или таймера1.
Миниатюры:
Нажмите на изображение для увеличения
Название: Image1.jpg
Просмотров: 76
Размер:	66.3 Кб
ID:	39346  
omercury вне форума  
Непрочитано 07.10.2012, 10:11  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Особо понравилась частота: mHz.

Для генерации 5 МГц лучше аппаратный ШИМ. Для программной реализации на асме минимальное количество тактов получиться не менее 4 и процессор только этим и будет заниматься. И кварц нужен 20МГц.

Последний раз редактировалось alvadep; 07.10.2012 в 10:15.
alvadep вне форума  
Сказали "Спасибо" alvadep
MasterMushi (07.10.2012)
Непрочитано 07.10.2012, 11:55  
Алекс Василич
Прописка
 
Аватар для Алекс Василич
 
Регистрация: 14.06.2012
Сообщений: 263
Сказал спасибо: 2
Сказали Спасибо 129 раз(а) в 103 сообщении(ях)
Алекс Василич на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Эхехех, у топикстартера, видимо, с математикой не важно...
Если нет возможности найти кварц с подходящей частотой (в чем я сомневаюсь), есть такая замечательная микросхемка - программируемый генератор AD9833. Точность деления - до долей Герца. Недавно разбирали в теме https://kazus.ru/forums/showpost.php...2&postcount=16
Алекс Василич вне форума  
Непрочитано 07.10.2012, 12:29  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

А я вообще не понимаю, зачем нужно калибровать частотомер обязательно круглой частотой? Калибруйте любой кварцованной частотой, какая есть под рукой, да хоть 14.318 МГц. Или результатом деления этой частоты нацело каким-либо простым делителем...
Yurkin2007 вне форума  
Непрочитано 07.10.2012, 12:50  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Сообщение от MasterMushi Посмотреть сообщение
надо откалибровать частотомер
Когда то калибровал частотомер (задающий 10 МГц) по эфиру, используя ППП на трех транзисторах.
Ловил радиостанцию стандартных частот и времени с частотой 10 МГц, в наушниках были слышны биения между задающим частотомера и сигналом радиостанции. Подстраиваем кварцевый генератор по нулевым биениям, т.е. можно добиться точности до десятых долей Герца!
Что примечательно, стабильность частоты гетеродина приемника никак не влияет на точность калибровки и конечный результат.

Поищите в эфире станцию стандартных частот на 5 МГц, точность у этих станций очень даже приличная а калибровочные приборы с такой точность стоят сумасшедших денег и есть не в каждой службе метрологии.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Сказали "Спасибо" gary2007
MasterMushi (07.10.2012)
Непрочитано 07.10.2012, 17:27  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Уже чутка ближе подобрались

PHP код:
#include ‹tiny2313a.h›
#include ‹delay.h›

#define PIN_PLUS PINB.0
#define PIN_MINUS PINB.2
#define GEN_OUTPUT PORTB.4

eeprom unsigned int TIMER_DELAY_SETTING=0x01;
unsigned int TIMER_DELAY=1;


void main(void)
{
#pragma optsize-
  
CLKPR=0x80;
  
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
  
PORTA=0x00;   DDRA=0x00;  PORTB=0x05;   DDRB=0x10;   PORTD=0x40;   DDRD=0x00;

  
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 14300,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Toggle
// 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=0x10;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x01;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x01;
OCR1BH=0x00;
OCR1BL=0x00;

#asm("sei")

//Here we restore initial setting
TIMER_DELAY=TIMER_DELAY_SETTING;
OCR1AH=TIMER_DELAY ›› 8;
OCR1AL=TIMER_DELAY 0xff;
  while (
1)
  {                                  
     if (!
PIN_MINUS)   
      { 
        
delay_ms(5);
        
TIMER_DELAY++;
        if (
TIMER_DELAY65534TIMER_DELAY=65534
        
OCR1AH=TIMER_DELAY ›› 8;
        
OCR1AL=TIMER_DELAY 0xff;
      } else
      if (!
PIN_PLUS
      {
        
delay_ms(5);
        
TIMER_DELAY--;
        if (!
TIMER_DELAYTIMER_DELAY=1;
        
OCR1AH=TIMER_DELAY ›› 8;
        
OCR1AL=TIMER_DELAY 0xff;
      }
  };


Но если гляните осциллограмму, видно как генерация идет с перерывом. И максимум до чего дожалось при таймере 1 и регистре сравнения 1 это 3.58Мгц
Миниатюры:
Нажмите на изображение для увеличения
Название: 20121007_861757.png
Просмотров: 53
Размер:	14.4 Кб
ID:	39359   Нажмите на изображение для увеличения
Название: 20121007_861817.png
Просмотров: 45
Размер:	15.8 Кб
ID:	39360  
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 07.10.2012, 17:42  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
Радость Re: Генератор 5Мгц на Тиньке2313

Простите, за панику, с проблемой разобрался )))
Оказывается CTC работает для таймера T1 в двойном режиме, нужно еще и регистр В задавать


PHP код:
//Here we restore initial setting
TIMER_DELAY=TIMER_DELAY_SETTING;
OCR1AH=TIMER_DELAY ›› 8;
OCR1AL=TIMER_DELAY 0xff;   
OCR1BH=TIMER_DELAY ›› 8;
OCR1BL=TIMER_DELAY 0xff;
  while (
1)
  {                                  
     if (!
PIN_MINUS)   
      { 
        
delay_ms(5);
        
TIMER_DELAY++;
        if (
TIMER_DELAY65534TIMER_DELAY=65534
        
OCR1AH=TIMER_DELAY ›› 8;
        
OCR1AL=TIMER_DELAY 0xff;   
        
OCR1BH=TIMER_DELAY ›› 8;
        
OCR1BL=TIMER_DELAY 0xff;
      } else
      if (!
PIN_PLUS
      {
        
delay_ms(5);
        
TIMER_DELAY--;
        if (!
TIMER_DELAYTIMER_DELAY=1;
        
OCR1AH=TIMER_DELAY ›› 8;
        
OCR1AL=TIMER_DELAY 0xff;
        
OCR1BH=TIMER_DELAY ›› 8;
        
OCR1BL=TIMER_DELAY 0xff;
      }
  }; 
Но опять таки, дожал всего лишь до 3.5мгц
Миниатюры:
Нажмите на изображение для увеличения
Название: 20121007_863712.png
Просмотров: 48
Размер:	16.5 Кб
ID:	39361  
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 07.10.2012, 17:46  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Генератор 5Мгц на Тиньке2313

Выкопал кварц 20мгц, попробую.....
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
 

Закладки

Метки
attiny2313, генератор
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор Skandalli Электроника - это просто 2 10.07.2012 17:58
Генератор НЧ dosikus Микроконтроллеры, АЦП, память и т.д 9 05.03.2011 00:08
На чем проще сделать отправку 128мб 5мгц ? pod80 Микроконтроллеры, АЦП, память и т.д 10 25.02.2011 00:52
Генератор ВЧ Flash.#13 Электроника - это просто 1 13.07.2010 16:19
Генератор max0000 Микроконтроллеры, АЦП, память и т.д 3 27.12.2006 01:56


Часовой пояс GMT +4, время: 20:03.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot