Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#51 11.10.2005 22:28:09

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,018

Re: Синтезатор частоты для FM стерео передатчика

я ж не говорил, что LMX....  - это филипс,
UMA1015 - филипс. должна подойти , по функциям, ессно.

а вот то что у тебя в схеме:
sd.national.com/iphrase/q?query=PLL+wit … ly+Current

и вобще не плохо бы сообщитьо своей квалификации, а то советы трудновато давать когда говоришь на разных уровнях

от себя могу предложить исходник кода на С для AD4110-4113, для AVR. если это поможет кому либо.....

Вне форума

#52 19.10.2005 11:57:45

pri poj
Ветеран
Откуда: Запорожье
Здесь с 14.09.2004
Сообщений: 604

Re: Синтезатор частоты для FM стерео передатчика


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

Вне форума

#53 12.05.2006 11:45:38

max
Новичок
Здесь с 12.05.2006
Сообщений: 8

Re: Синтезатор частоты для FM стерео передатчика

Посмотри здесь:
electronics-diy.com/
Кучка готовых передатчиков.
А здесь - синтезаторы на многие случаи жизни,есть и передатчики.
С прошивками, на телевизионной комплектухе.
Кое-что я повторял,работает и сейчас.
www.freddospage.nl

Вне форума

#54 10.12.2006 11:10:55

mazur_pavel
Новичок
Откуда: Украина Первомайск
Здесь с 14.11.2006
Сообщений: 7

Re: Синтезатор частоты для FM стерео передатчика

Vasil пишет:

Flyman,
Есть маленькая схемка AT90S2313 + LM7001, если не пропал еще интерес

перекинь и мне если не сложно на мыло

Вне форума

#55 26.04.2007 20:50:23

Fox
Новичок
Здесь с 17.04.2007
Сообщений: 3

Re: Синтезатор частоты для FM стерео передатчика

Vasil пишет:

Flyman,
Есть маленькая схемка AT90S2313 + LM7001, если не пропал еще интерес

И мне если можно перекиньте.

Буду очень благодарен если кто-то еще поделится примером исходника управления синтезатором на С. Заранее спасибо !

Вне форума

#56 27.04.2007 06:19:58

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,158

Re: Синтезатор частоты для FM стерео передатчика

Fox пишет:

.... примером исходника управления синтезатором на С....

нет разницы - на Си, или на ассемблере... smile
но есть пара моментов:
- мой стиль на С вряд ли можно считать примером smile ;
- было это давно, и сохранилось ли, не знаю.
Пороюсь в старых болванках, - чуть позже.
ЗЫ, и еще, делалось это для NFM, будет ли работать на WFM, тоже, не знаю.

Вне форума

#57 27.04.2007 08:54:15

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: Синтезатор частоты для FM стерео передатчика

Вот если кому интересно, управление синтезатором MC12202 на asm для AVR:

;Motorola MC12202 synthesizer load
;
;Input: DRATIO =    8..16383  (2 bytes)
;       MRATIO = 1024..262143 (3 bytes)
;Out:        C = 1 if error
;
; F_r, F_p = F_osc / DRATIO
; F_vco = F_r, F_p * MRATIO
;
;DRATIO -> R, MRATIO -> P,N,A
;
;Note: since A should be less then N there are
;missing codes in 1024..4095 MRATIO range.
;Missing codes are indicated with C = 1 (and
;synthesizer is not loaded). In the same manner
;is indicated out of range for DRATIO or MRATIO.

S_LOAD:	mov	tempML,mratioL
	mov	tempMM,mratioM
	mov	tempMH,mratioH

;Check MRATIO for 1024..262143

	mov 	temp,tempMM
	andi	temp,0xfc
	or	temp,tempMH
	breq	S_ERR		;error if MRATIO < 1024 (400H)
	
	mov	temp,tempMH
	andi	temp,0xfc
	brne	S_ERR		;error if MRATIO > 262143 (3FFFFH)

;Check MRATIO and choose P
;Prescaler = 128 if MRATIO > 16383 (N > 127)
;Prescaler = 64  if MRATIO < 16384 (N < 128)
	
	mov 	temp,tempMM
	andi	temp,0xc0
	or	temp,tempMH
	breq	P64		;jump if MRATIO < 16384 (4000H)

;Save Prescaler = 128 flag

P128:	clt		;Prescaler = 128, flag T = 0

;Extract A_counter for Prescaler = 128 (A_counter = MRATIO MOD 128)
	
	mov	tempA,tempML
	andi	tempA,0x7f	;A_counter = tempML & 7FH
	
;Form N18..N8 as MRATIO DIV 64 and one more time DIV 64 (label SH1:)

SH2:	ror	tempMH		;if P = 128  R2,R1,R0 >> 2
	ror	tempMM
	ror	tempML
	rjmp	SH1

;Error exit point (placed here to reach by relative addressing)

S_ERR:	sec			;set error flag
	ret

;Save Prescaler = 64 flag

P64:	set			;Prescaler = 64, flag T = 1
	
;Extract A_counter for Prescaler = 64 (A_counter = MRATIO MOD 64)

	mov	tempA,tempML
	andi	tempA,0x3f	;A_counter = tempML & 3FH

;Form N18..N8 as MRATIO DIV 64

SH1:	ror	tempMH		;if P = 64  R2,R1,R0 >> 1
	ror	tempMM
	ror	tempML
	andi	tempML,0xe0	;tempMM,tempML = N18..N8,0,0,0,0,0

;tempA = A_counter, tempMM,tempML = N18..N8,0,0,0,0,0
;Check for A_counter < N

	mov	tempB,tempML
	mov	temp,tempMM
	ldi	tempC,3

SH5:	rol	tempB		;tempML <<
	rol	temp		;tempMM <<
	brcs	SH4		;jump if N > A_counter (N > 255)
	dec	tempC
	brne	SH5	

	cp	tempA,temp
	brsh	S_ERR		;error if A_counter >= N
	
;Shift A_counter

SH4:	clc
	ldi	tempB,0
	ldi	tempC,2
	
SH3:	ror	tempA
	ror	tempB
	dec	tempC
	brne	SH3		;tempA,tempB = A_counter >> 2

;Combine N18..N8 and A_counter

	or	tempML,tempA	;tempMM,tempML,tempB = N18..N8,A7..A1,0 (,0,0,0,0,0)

;tempMM,tempML,tempB = N18..N8,A7..A1,0 - ready to load PROGRAMMABLE DIVIDER

	mov	tempDL,dratioL
	mov	tempDH,dratioH

;Check DRATIO for 8..16383

	mov	temp,tempDL
	andi	temp,0xf8
	or	temp,tempDH
	breq	S_ERR		;error if DRATIO < 8 (08H)

	mov	temp,tempDH
	andi	temp,0xc0
	brne	S_ERR		;error if DRATIO > 16383 (3FFFH)

;Shift DRATIO and combine it with SW (F0 flag)

	sec
	rol	tempDL
	rol	tempDH
	bld	tempDH,7	;tempDH.7 <- T, tempDH,tempDL = SW,R14..R1,1

;tempDH,tempDL = SW,R14..R1,1 - ready to load PROGRAMMABLE REFERENCE DIVIDER

;Load PROGRAMMABLE REFERENCE DIVIDER

	mov	temp,tempDH
	ldi	tempC,8		;bit count
	rcall	LOAD		;load SW,R14..R8
	mov	temp,tempDL
	ldi	tempC,8		;bit count
	rcall	LOAD		;load R7..R1,1

	sbi	PD,LE
	nop
	cbi	PD,LE

;Load PROGRAMMABLE DIVIDER

	mov	temp,tempMM
	ldi	tempC,8		;bit count
	rcall	LOAD		;load N18..N11
	mov	temp,tempML
	ldi	tempC,8		;bit count
	rcall	LOAD		;load N10..N8,A7..A3
	mov	temp,tempB
	ldi	tempC,3		;bit count
	rcall	LOAD		;load A2,A1,0

	sbi	PD,LE
	nop
	cbi	PD,LE

;Exit

	clc			;clear error flag
	ret

;Loads data via serial bus
;Input: temp - data, tempC - bit count

LOAD:	rol	temp
	brcc	DATA0
	sbi	PD,DTA		;Set DTA
	rjmp	DONE		;this branch creates setup time on MOSI
DATA0:	cbi	PD,DTA		;Clear DTA
	nop			;also create setup time on MOSI
DONE:	sbi	PD,CLK		;set CLK 
	nop
	cbi	PD,CLK		;Clear CLK
	dec	tempC
	brne	LOAD
	cbi	PD,DTA		;Clear DTA
	ret

Вне форума

#58 27.04.2007 10:14:31

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,018

Re: Синтезатор частоты для FM стерео передатчика

управление синтезатором семейства ADF4xxx
две разные частоты, выбираются через подачу на ногу 0 или1

#include <mega8.h>
#include <delay.h>


// определить порты I/O для ADF4113
#define le PORTC.4
#define _data PORTC.3
#define clk PORTC.2

// определить значения для расчета КД счетчиков
#define R 1250  //КД опорного счетчика
#define Fref 25  //частота опорного генератора  

unsigned char *addr_map,*addr_byte;
void config_register_AD4113(void);
void transmitt_to_ADF4113(void);
bit transmitt_bit,stop_flag1,stop_flag2;
unsigned char mask=0x80,result_AND,;
unsigned int N;
float Fout;


struct Initialization_Latch_Map
{
 
 unsigned long  control_bits_init     :2;
 unsigned long  counter_reset         :1;
 unsigned long  power_down_1          :1;
 unsigned long  MUXOUT_control        :3;
 unsigned long  PD_polarity           :1;
 unsigned long  CP_tree_state         :1;
 unsigned long  fastlock_enable       :1;
 unsigned long  fastlock_mode         :1; 
 unsigned long  timer_counter_control :4;
 unsigned long  current_setting_1     :3;
 unsigned long  current_setting_2     :3;
 unsigned long  power_down_2          :1;
 unsigned long  prescaller_value      :2;
} Init @0x60;

struct Reference_Counter_Latch_Map
{
 unsigned long control_bits_ref         :2;
 unsigned long reference_counter        :14;
 unsigned long anti_backlash_width      :2;
 unsigned long test_mode_bits           :2;
 unsigned long lock_detect_precision    :1;
 unsigned long SYSN                     :1;
 unsigned long DLY                      :1;
 unsigned long reserved                 :1;
} Ref_counter @0x70;

struct AB_Counter_Latch_Map
{
 unsigned long control_bits_AB          :2 ;
 unsigned long A_counter                :6;
 unsigned long B_counter                :13;
 unsigned long CP_gain                  :1;
 unsigned long reserved                 :2;
}AB_counter @0x80;

//-------- пересчет  частоты в коэф. деления счетчиков А и Б
 
void recalc_Freq_to_N_counter(void)
{
 N=Fout*R/Fref;
 AB_counter.A_counter=0;
 AB_counter.B_counter=N;  
}
//------------------------------------
void transmitt_to_ADF4113(void)
{
   recalc_Freq_to_N_counter();
   
    for (addr_map=0x62;addr_map<=0x82;addr_map=addr_map+0x10)//перебрать 3х байтные карты прогр, с адреса 0х62 по 0х82
        {
         le=0;
         for (addr_byte=addr_map;addr_byte>=addr_map-2;addr_byte--) //перебрать байты в каждой карте
          {
            #asm("wdr");
            for (mask=0x80;mask>=1;mask=mask/2) //перебрать биты в каждом байте
             {
              result_AND= *addr_byte & mask;//накладываем маску на элемент массива
              transmitt_bit=result_AND && mask;// определить значение бита
              clk=0;
              _data=transmitt_bit;      // установить порт   
              clk=1;             
             };
           _data=0;clk=0;
           } ;
          le=1;//зафиксировать карту в регистр
         };
}

     //
void main(void)
{

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;
DDRC.3=1;
DDRC.4=1;
DDRC.2=1;

PORTD=0x00;
DDRD=0x00;

#asm("cli")           

config_register_AD4113();
Init.MUXOUT_control =0b001;//LOCK-DET

// Watchdog Timer Prescaler: OSC/2048k
WDTCR=0x1F;
WDTCR=0x0F;
 
while (1)
{               
  if ((PINB.1==1)&&(stop_flag1==0)) {Fout=93.82;transmitt_to_ADF4113();stop_flag2=0;stop_flag1=1;}
  if ((PINB.1==0)&&(stop_flag2==0)) {Fout=94.32;transmitt_to_ADF4113();stop_flag1=0;stop_flag2=1;}
  //формирования пакета передачи
     
    // delay_ms(1000);  
       #asm("wdr");       
     
  }; //while
} //main
 


void config_register_AD4113(void)
{
  //config Init
  Init.control_bits_init      =0b11   ;
  Init.counter_reset          =0b0    ;
  Init.power_down_1           =0b0    ;
  Init.PD_polarity            =0b1    ;
  Init.CP_tree_state          =0b0    ;
  Init.fastlock_enable        =0b0    ;
  Init.fastlock_mode          =0b0    ;
  Init.timer_counter_control  =0b1111 ;
  Init.current_setting_1      =0b111  ;
  Init.current_setting_2      =0b111  ;
  Init.power_down_2           =0b0    ;
  Init.prescaller_value       =0b01   ;
 
  //config  Ref_counter-----------------------
  Ref_counter.control_bits_ref      =0b00   ;
  Ref_counter.reference_counter     = R    ;
  Ref_counter.anti_backlash_width   =0b00   ;
  Ref_counter.test_mode_bits        =0b00   ;
  Ref_counter.lock_detect_precision =0b0    ;
  Ref_counter.SYSN                  =0b1    ;				
  Ref_counter.DLY                   =0b0    ;
  Ref_counter.reserved              =0b0    ;

  //config A_B_counter------------------------
 AB_counter.control_bits_AB           =0b01 ;
 AB_counter.CP_gain                   =0b0  ;
 AB_counter.reserved                  =0b00 ;    
 
}

Вне форума

#59 27.04.2007 20:10:40

Петро Колбаса
Студент
Откуда: Украина
Здесь с 01.01.2007
Сообщений: 242

Re: Синтезатор частоты для FM стерео передатчика

А что это за Фм передатчики такие на том сайте?
Это то самое устройство, реклама которого каждый день падает мне на почту и позволяет в общественном транспорте слушать любимую музыку ?

Вне форума

#60 27.04.2007 20:21:46

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,158

Re: Синтезатор частоты для FM стерео передатчика

да что у вас там? курсовые, что ли wink,
Павел, отправил,
Fox ,мыла не видно и приатачить куда тоже..
ЗЫ, в почту мою что указана, редко заглядываю, так что давайте как то тут..
ЗЫ ЗЫ, и еще, исходник писался под IAR v 1.40, так что под более высокие версии его придется подправить, иначе IDE материться будет, в частности, на обработчик прерывания.

Отредактировано Vasil (27.04.2007 20:35:33)

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.037 сек, 7 запросов выполнено - Использовано памяти: 626.14 Кбайт (Пик: 676.51 Кбайт) ]