Управление синтезатором частоты и декодер RDS

Автомотовелофотогребляе@ляиохота
rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Пт июл 23, 2021 12:37 pm

Исходники на Си (WinAVR или Atmelo Studio 7.0 with gnu C toolchain) и прошивка ATMEGA8A-PU(16 MHz) для контроллера управления синтезатором частоты на LC72131(4.5 MHz) и декодер RDS (4.332 MHz ) SAA6579 тюнера FM на основе TC-702FYAB ( с LA1787 со сниженным питанием (6...7 В) и радиатором) . Дисплей 1602A(HD44780 compatible). обсуждался на некоторых форумах в интернете.
Вложения
syntRDS3.zip
(91.01 КБ) Скачиваний: 45

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Пт июл 23, 2021 12:43 pm

Фото работы синтезатора и декодера
Вложения
Photo0209.jpg
Photo0208.jpg
Photo0207.jpg

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс июл 25, 2021 3:34 pm

Вариант исходников и прошивки с переключением режимов кнопкой
Вложения
syntRDS5.zip
(942.17 КБ) Скачиваний: 35

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс июл 31, 2022 11:53 pm

Варіант для ATMEGA8A-PU ,16 MHz з альтернативною прошивкою для 64-108МГц, AM, SSB 80м (альтернативний декодер на основі аналога алгоритму Microchip AN526 на С++ для AVR , деякі режими (40 м SSB або інші ) знаходяться у процесі впровадження ).
Вложения
old_6_FM_AM0.1_4SSB.zip
(42.06 КБ) Скачиваний: 31
syntRDS7ssb0_1_4MHz.zip
(866.58 КБ) Скачиваний: 33
Последний раз редактировалось rpz3598 Вс июл 31, 2022 11:55 pm, всего редактировалось 2 раз(а).

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс июл 31, 2022 11:54 pm

Покращені варіанти та варіанти на ассемблері поки що не викладаю .

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Пн авг 01, 2022 1:04 am

Прошивки не остаточні( концептуальні, радіоаматорські,для удосконалення, не є винаходами для комерційного або мілітарного застосування) , після компіляції може бути виявлена прихована проблема нечіткої обробки кодів кнопок (можливо, потрібно оптимізувати коди сигнатур кнопок, змінити мову програмування на асемблер та більш чітко визначити логіку роботи ,правильніше працювати з регістрами та стеком, змінити підпрограми, що працюють з uint32_t на більш правильні ,оптимізувати порядок опитування кнопок ). Схема ще удосконалюється, для роботи з альтернативними тюнерами програма може бути дороблена .

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб авг 13, 2022 2:30 am

Експериментальна прошивка для 64-108 МГц, , 549-1750 kHz, радіоаматорські 160,80,40м SSB (ключі у мікросхемі синтезатора вмикають гетеродин, перемикають секції тюнера та котушки ). Можливі доробки під ПЧ та кокретні гетеродини.
Вложения
syntRDS7ssb0_1_9.2MHz_test.zip
(808.07 КБ) Скачиваний: 31

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс авг 14, 2022 8:33 am

Ще один варіант прошивки до 9,4 МГц (напруга на варикапах у кінці діапазонів 6,8...7,5 В, на початку діапазонів 0,34...0,65 В).Тестова редакція прошивки.
Вложения
syntRDS7ssb0_1_9.4MHz_test.zip
(809.48 КБ) Скачиваний: 33

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Ср авг 24, 2022 5:41 pm

Експериментальна редакція з пам'яттю на 73 станції (0-72, 0 - вмикається автоматично після вмикання живлення )
Вложения
syntRDS8ssb0_1_9.4MHz72mem_test.zip
(829.8 КБ) Скачиваний: 30

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Чт авг 25, 2022 6:36 pm

Ще одна прошивка для ATMEGA8A-PU, 16 MHz, SAA6579, LC72131(M), пам'ять на 128 станцій, 1602А, LA1787 ( у TC702-FYAB, дороблений ) , осциллятор SSB 450 кГц, IF1=10.7MHz(10.71 MHz у режимі АМ , SSB), IF2=450 kHz. 64-110МГц, 0,1-4,1МГц, 4,1-9,45МГц
Вложения
syntRDS8ssb0_1_9.45MHz128mem_test.zip
(829.65 КБ) Скачиваний: 26

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб авг 27, 2022 1:54 am

Можна доповнити схему підпрограмами обробки сигналів енкодера або регістрами або дешифратором розширення для керування діапазонами та режимами роботи з відповідними підпрограмами обробки (на порти PC2,PC3,або на PC5 та PC1, стерео тоді на світлодіоді ).

clockwise (increment)
11=3
01=1
00=0
10=2

CCW decrement
11=3
10=2
00=0
01=1


Доробити під наші порти , змінивши маску бітів
interrupt [TIM2_COMP] void timer2_comp_isr(void) //fix
{
NewState=PINC & 0b00110000; //fix , змінити

if(NewState!=OldState)
{
switch(OldState)
{
case 2:
{
if(NewState == 3) upState++;
if(NewState == 0) downState++;
break;
}

case 0:
{
if(NewState == 2) upState++;
if(NewState == 1) downState++;
break;
}
case 1:
{
if(NewState == 0) upState++;
if(NewState == 3) downState++;
break;
}
case 3:
{
if(NewState == 1) upState++;
if(NewState == 2) downState++;
break;
}
}
OldState=NewState;
}

TCNT2=0x00; //fix змінити

}

або адаптувати програму з масивом , подібну
static RAMDTCM int_fast8_t graydecoder [4][4] =
{
{
+0, /* 00 -> 00 stopped */
-1, /* 00 -> 01 rotate left */
+1, /* 00 -> 10 rotate right */
+0, /* 00 -> 11 invalid combination */
},
{
+1, /* 01 -> 00 rotate right */
+0, /* 01 -> 01 stopped */
+0, /* 01 -> 10 invalid combination */
-1, /* 01 -> 11 rotate left */
},
{
-1, /* 10 -> 00 rotate left */
+0, /* 10 -> 01 invalid combination */
+0, /* 10 -> 10 stopped */
+1, /* 10 -> 11 rotate right */
},
{
+0, /* 11 -> 00 invalid combination */
+1, /* 11 -> 01 rotate right */
-1, /* 11 -> 10 rotate left */
+0, /* 11 -> 11 stopped */
},
};

static RAMDTCM uint_fast8_t old_val;

void spool_encinterrupt(void)
{
const uint_fast8_t new_val = hardware_get_encoder_bits(); /* Состояние фазы A - в бите с весом 2, фазы B - в бите с весом 1 */

#if ENCODER_REVERSE
position1 -= graydecoder [old_val][new_val];
#else
position1 += graydecoder [old_val][new_val];
#endif
old_val = new_val;
}

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб авг 27, 2022 3:49 am

Уточнення :" на порти PD0,PD1,або на PC5 та PC1, стерео тоді на світлодіоді " .

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб авг 27, 2022 4:39 am

encoder.h
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <util/delay.h>
//#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <stdint.h>
#include <math.h>

void upState()
{
IncFreq ();
}

void downState()
{
DecFreq();

}

//interrupt [TIM2_COMP] void timer2_comp_isr(void) //fix
uint8_t NewState,OldState;
void CheckEncoder()
{
NewState=PIND & 0b00000011;

if(NewState!=OldState)
{
switch(OldState)
{
case 2:
{
if(NewState == 3) upState();
if(NewState == 0) downState();
break;
}

case 0:
{
if(NewState == 2) upState();
if(NewState == 1) downState();
break;
}
case 1:
{
if(NewState == 0) upState();
if(NewState == 3)  downState();
break;
}
case 3:
{
if(NewState == 1) upState();
if(NewState == 2)  downState();
break;
}
}
OldState=NewState;
}

//TCNT2=0x00; //fix змінити

}



Код: Выделить всё

void InitPorts( void )
{
//    DDRD = 0b11100010; // PD0 RX,PD1 TX , PD2 Int0 RDCL, PD3 Int 1 Q, PD4 RDDA,  PD5 DI, PD6 CL PD7  CE 

    DDRD = 0b11100000; // PD0 ENC0,PD1 ENC1 , PD2 Int0 RDCL, PD3 Int 1 Q, PD4 RDDA,  PD5 DI, PD6 CL PD7  CE 
      PORTD=0b00011111 ;
   DDRB = 0b00111111; //PB0-PB3  D0-D4 , PB4 RS, PB5 E
    DDRC = 0b00000000;  //PC0,PC1 AIN or input, PC2,PC3  PC4 Input
    PORTC = 0b00011100;
//LC72131_DDR|=(1<<LC72131_CE)|(1<<LC72131_CL)|(1<<LC72131_DI );
//LC72131_DDR&=~(1<<LC72131_DO );
//LC72131_PORT&=~(1<<LC72131_CE)|(1<<LC72131_CL)|(1<<LC72131_DI );
 GIMSK&=~(1<<INT0);
LCD_init();
//LCD_cursor(0);       
ADC_Init();
return;
}

...


#include "encoder.h"





int main(void)
{
InitPorts( );
InitLC72131();
LC72131_SetBand_Mode(FM_STEREO_MODE);
DecodeStep(Pos);
ReadMemory();
UpdateFreq(mode);
Timer1_Init();
while(1) { Control();  CheckEncoder();  _delay_ms(5); }   
}





Експеримент з бібліотекою encoder.h та імітатором валкодера на основі лічильника та двосторінковому ROM з послідовностями 0x03,0x01,0x00,0x02 та 0x03,0x02,0x00,0x01 демонструє можливіть керування частотою , проте неоптимальний , тому бібліотеку та ISR () треба покращувати до правильної швидкодії, а викликати з правильною частотою .
Вложения
syntRDS9ssb0_1_9.45MHz128mem_testEncod_test_samples.zip
(843.6 КБ) Скачиваний: 29

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб авг 27, 2022 4:47 am

Для імітації сигналів RDS (тактові та довільні дані , тільки для перевірки переривань під час морделювання ) у схему введені генератори імпульсів, валкодер моделюється за допомогою ROM, лічильника, генератора, перемикача сторінок ROM з послідовностями 0x03,0x01,0x00,0x02 та 0x03,0x02,0x00,0x01 , Живлення вхід референсної напруги (21) подається за допомогою резистора 1,5 кОм на +5В, вивід 20 -+5В
Вложения
circuit.jpg

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс авг 28, 2022 7:11 am

Можлива імплементація валкодера (тестова редакція, версія 9, старі можуть бути несумісні з нею , тому що до PD0,PD1 та корпусу під'єднаний валкодер з pull-up-резисторами на +5В 4,7 кОм , обидва входи, в старих версіях ці виводи для UART, один- вихід )
Вложения
syntRDS9ssb012_9.6MHz128mem_testEncoder.zip
(849.98 КБ) Скачиваний: 29

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс авг 28, 2022 1:45 pm

Під деякі енкодери програма може бути змінена (наприклад, перевіряити лише після OldState=3), якщо повертати енкодер достатньо швидко, можливий ефект аліасингу ( https://uk.wikipedia.org/wiki/%D0%90%D0 ... 0%BD%D0%B3 ) через частоту опитування валкодера нижче частоти Найквіста . Тому енкодер може спрацьовувати навпаки.

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс авг 28, 2022 2:30 pm

З деякими енкодерами (в яких зазамовчанням обидва розімкнуті від положення до положення ) може краще працювати ця версія (проте іноді нестійко , краще працює з великою ручкою на енкодері )
Вложения
syntRDS9ssb012_9.6MHz128mem_testEncoder_2.zip
(850 КБ) Скачиваний: 32

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Вс авг 28, 2022 4:15 pm

Приклад функціонування прошивки для схеми з валкодером
Вложения
IMG_20220828_160956.jpg
IMG_20220828_160938.jpg
IMG_20220828_160925.jpg
IMG_20220828_160911.jpg

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб сен 03, 2022 9:24 pm

Версія з покращеною швидкістю опитування валкодера
Вложения
syntRDS9ssb012_9.7MHz128mem_testEncoder_3.zip
(857.75 КБ) Скачиваний: 29

rpz3598
Зарегистрированный пользователь
Зарегистрированный пользователь
 
Сообщения: 130
Зарегистрирован: Вс авг 18, 2019 7:58 pm
Откуда: Запорожье
Пол: Мужской

Re: Управление синтезатором частоты и декодер RDS

Сообщение rpz3598 » Сб сен 10, 2022 5:41 pm

Варіант прошивки до від 130 кГц 14,8 МГц та від 64(62)МГц до 108(110) МГц з двома реле та альтернативною схемою керуванння (інакше приєднані схеми перемикання режимів , струмові ключі та 2 реле , АМ вмикається, коли FM вимкнено логічною одиницею на nBO3, nBO4=0-AM3 nBO3=0-FM, nBO2=0-AM2, nBO1=0-SSB ON ,AM якщо nBO3 високий імпеданс (AM1 якщо nBO4=1 та nBO2=1 ))
Вложения
syntRDS10ssb014_14.8MHz128mem_testEncoder.zip
(821.69 КБ) Скачиваний: 32

След.

Вернуться в Техника

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
cron