Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Пробуем оживить тюнер на LA1787 и LC72144

  1. #1
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML

    Пробуем оживить тюнер на LA1787 и LC72144

    Всем добрый вечер.
    Пытаюсь оживить тюнер . Собрал макетную плату . Схему подключения нашел на китайском форуме. схема подключения тюнера.pdf
    Нажмите на изображение для увеличения. 

Название:	тюнер плата.jpeg 
Просмотров:	251 
Размер:	52.7 Кб 
ID:	374442
    Схему развел как было удобно для себя. LC72144 mega8.rar
    Как начинающий, хочу на начальном этапе просто залить данные в регистры LC72144, чтобы оживить приемник.
    Но самому мне не осилить, это уж точно.
    Написал вот код, но почему-то предупреждение при компиляции, и не пойму никак где моя ошибка.
    Нажмите на изображение для увеличения. 

Название:	ошибка.jpg 
Просмотров:	126 
Размер:	36.5 Кб 
ID:	374446
    О соответствии данных, которые нужно залить в синтез, речь пока не идет.

    Скрытый текст

    #define F_CPU 16000000L
    #include <avr/io.h>
    #include <util/delay.h>

    #define DO_PORT PORTC
    #define DO_DDR DDRC
    #define DO_PIN PINC
    #define DO 5

    #define CL_PORT PORTC
    #define CL_DDR DDRC
    #define CL_PIN PINC
    #define CL 4

    #define DI_PORT PORTC
    #define DI_DDR DDRC
    #define DI_PIN PINC
    #define DI 3

    #define CE_PORT PORTC
    #define CE_DDR DDRC
    #define CE_PIN PINC
    #define CE 2

    #define ADDR_IN1 0x28

    #define ONE_CL() { CL_DDR &= ~(1 << CL); CL_PORT |= (1 << CL); } // установка единицы на линии CLK
    #define NULL_CL() { CL_DDR |= (1 << CL); CL_PORT &= ~(1 << CL); } // установка нуля на линии CLK
    #define ONE_DI() { DI_DDR &= ~(1 << DI); DI_PORT |= (1 << DI); } // установка единицы на линии DI
    #define NULL_DI() { DI_DDR |= (1 << DI); DI_PORT &= ~(1 << DI); } // установка нуля на линии DI
    #define ONE_CE() { CE_DDR &= ~(1 << CE); CE_PORT |= (1 << CE); } // установка единицы на линии CE
    #define NULL_CE() { CE_DDR |= (1 << CE); CE_PORT &= ~(1 << CE); } // установка нуля на линии CE

    unsigned int freq = 0b0010100001010000;
    unsigned int data = 0b0111110000100110;


    // протокол CCB:

    void CCB_delay (void)
    {
    _ delay_us(3);
    }

    void CCB_tx_8(unsigned char d)
    {
    unsigned char x;

    for (x=0; x<8; x++) {
    CCB_delay();
    if (d & 0x01) { ONE_DI();}
    else
    { NULL_DI();}
    CCB_delay();
    ONE_CL();
    d <<= 1;
    CCB_delay();
    NULL_CL();
    }
    }

    void CCB_tx_16(unsigned int d)
    {
    unsigned char x;

    for (x=0; x<16; x++) {
    CCB_delay();
    if (d & 0x01) { ONE_DI();}
    else
    { NULL_DI();}
    CCB_delay();
    ONE_CL();
    d >>= 1;
    CCB_delay();
    NULL_CL();
    }
    }

    void main()
    {
    DDRB = 0xFF;
    PORTB = 0x00;

    while (1)
    {
    CCB_delay();
    NULL_CE();
    CCB_tx_8(ADDR_IN1); //adres
    ONE_CE();
    CCB_tx_16(freq); //p15-p0
    CCB_tx_16(data); //DT0-GT
    NULL_CE();
    CCB_delay();
    }
    }



    Добавлено через 31 минут(ы):

    Нашел, главную функцию обозвал не правильно. Все скомпилировалось, в Proteus также симулируется.
    Теперь самое главное, о вводе и порядке заливки данных. Просмотрел много форумов, но так и не понял про делитель.
    У меня на плате кварц 10,35 - это значит по даташиту что ПЧ 10,8
    Тогда принимаемая станция (92,4мГц) + ПЧ (10,8) = 103,2 щаг выбираем 50кГц тогда Fref =25кГц
    Такие данные нужно залить ??? Я так понял что нужно половину от 103,2, но тогда это не 16bit.
    Последний раз редактировалось SERGEY S.; 27.05.2022 в 19:55.
    73. Best DX


  2. #2

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,420
    Позывной
    LZ2WSG
    void main()
    в
    int main(void)

    и поправьте срока 42 :
    _ delay_us(3);
    в
    _delay_us(3);

  3. #3
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Веселин, спасибо. Но так и не понял я про строку 42.
    Хотел прикрепить даташит с моим переводом но файл pdf почему-то не хочет грузится.
    Закинул к себе на диск
    Последний раз редактировалось SERGEY S.; 27.05.2022 в 20:13.
    73. Best DX

  4. #4

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,420
    Позывной
    LZ2WSG
    В строке 42 был пробел между "подчёркивание" и "delay" (_ delay...).
    Заархивируйте файл напр. в .zip.

  5. #5
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Почитал за фьюзы. Посмотрел свои, должен работать при кварце 16мГц.
    Если что не так, поправьте.
    Нажмите на изображение для увеличения. 

Название:	фьюзы.jpg 
Просмотров:	124 
Размер:	60.1 Кб 
ID:	374450
    73. Best DX

  6. #6
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Ну что, с горем пополам, получилось оживить тюнер. Долго мне, как начинающему в программировании, пришлось это делать.
    Спасибо людям, кто помогал. Прошивка пока конечно минимальная, запускаетя только на одной частоте. На плате пока сделал три кнопки для будущего
    управления станциями. Это на первом этапе, после может еще что-то добавлю, место под разъемы около контроллера оставил.
    Схема пока минимальная.
    Нажмите на изображение для увеличения. 

Название:	схемка.jpg 
Просмотров:	491 
Размер:	60.0 Кб 
ID:	374547
    73. Best DX

  7. #7
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Всем доброго вечера.
    Сегодня написал кнопки, но мне кажется что при переходе туда-сюда как-то не корректно работает.
    Такое впечатление что сначала другая станция а потом та которая нужна. Было бы отображение частоты все было бы видно.
    У меня вопрос. После переписки кода под кнопки тюнер не стартует со станции, т.к. получается она не задана.
    Подозреваю что это как-то через EEPROM делается, подскажите пожалуйста.
    Собственно что имею на сегодняшние день Video
    code.rar
    73. Best DX

  8. #8
    Аватар для EU1SW
    Регистрация
    01.07.2009
    Адрес
    Originally Minsk, but QRM ) near Minsk/2
    Сообщений
    3,854
    Записей в дневнике
    1
    Позывной
    EU1SW
    Сергей, на форумах есть такая удобная вещь, как теги "code", в визуальном редакторе кнопка #
    для примера
    Код:
    ваш код
    а вашем архивчике может быть что угодно )
    .zip универсальнее, чем .rar
    Основы безопасности жизнедеятельности в интернете
    Последний раз редактировалось EU1SW; 31.05.2022 в 21:02.
    73! ***a few homemade DDC|DUC rigs, Malamute DDC, Storch-X DDC 7"

  9. #9
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Цитата Сообщение от EU1SW Посмотреть сообщение
    а вашем архивчике может быть что угодно )
    Да не вопрос , в первом посте я так и сделал. Думал чтобы удобнее было смотреть.
    73. Best DX


  10. #10
    Аватар для SERGEY S.
    Регистрация
    20.08.2006
    Адрес
    Lugansk
    Сообщений
    620
    Позывной
    ex UX7ML
    Всем добрый вечер.
    Ребят, кто может подсказать. Не могу никак вкурить, как мне заставить стартовать со станции которую запомнил. Не хватает тямки
    Получается, что сейчас, судя по тому что я написал, eeprom перезаписывается постоянно при переключении станции . Но это не главное сейчас, я не
    могу заставить стартовать со станции.

    Скрытый текст

    unsigned long PLL_Temp; //PLL временное значени

    unsigned long Freq_PLL[20] = { 88000, 88600, 90800, 91600, 92400,95800, 96200, 99500, 100000, 101100, 101800,102300, 102900,
    103600, 104800, 105500, 106000, 106500, 106900, 107900 } ;




    void CCB_delay (void)
    {
    _delay_us(3);
    }


    void CCB_tx_8(unsigned char d)
    {
    char x;


    for (x=0; x<8; x++) {
    CCB_delay();
    if (d & 0x80) {ONE_DI()}
    else { NULL_DI()}
    CCB_delay();
    ONE_CL();
    d <<= 1;
    CCB_delay();
    NULL_CL();
    }
    }


    void CCB_tx_revert16(unsigned int d)
    {
    char x;


    for (x=0; x<16; x++) {
    CCB_delay();
    if (d & 0x1) {ONE_DI()}
    else { NULL_DI()}
    CCB_delay();
    ONE_CL();
    d >>= 1;
    CCB_delay();
    NULL_CL();
    }
    }


    void send_LC72144(void)
    {
    unsigned int divisor; // коэффициент делителя
    divisor = (PLL_Temp + 10800) / 50; // делим на шаг заданный в R0-R3

    NULL_CE();
    CCB_tx_8(0b00010100); // address IN1
    ONE_CE();
    CCB_tx_revert16(divisor); // R0-R15
    CCB_tx_8(0b01111000); // SNS,DVS,PDC0,PDC1, R0,R1,R2,R3 Настройка диапазона, шага перестройки (шаг, 50кГц)
    CCB_tx_8(0b10101111); // DT0,DT1,ADS,CTE, CTS0,CTS1,GT0,GT1
    NULL_CE();

    NULL_CE();
    CCB_tx_8(0b10010100); //address IN2
    ONE_CE();
    CCB_tx_8(0b01011110); // I/O-0,I/O-1,I/O-2,I/O-3, I/O-4,I/O-5,ADI0,ADI1
    CCB_tx_8(0b10111100); // OUT0,OUT1,OUT2,OUT3, OUT4,OUT5,CTP,CTC
    CCB_tx_8(0b11000111); // H/I-6,L/I-7,IL0,IL1, ULD,UL0,UL1,XS0 (XS0=1)
    CCB_tx_8(0b11000000); // XS1,X B,DZ0,DZ1, TEST0,TEST1,TEST2,DLC (XS1=1)
    NULL_CE();
    }


    int main(void)
    {
    DDRC = 0b00111100;
    PORTC = 0b11000011;
    DDRB = 0x00;
    PORTB= 0x00;

    unsigned char Current_station ;
    Current_station = EEPROM_read(1); // считываем при включении записанный номер станции

    send_LC72144();

    while (1)
    {
    PLL_Temp=Freq_PLL[Current_station] ; // получаем значение PLL

    if ((PINB&(1 <<PB0))==0)
    {
    Current_station++; //Указание на следующую радиостанцию
    _delay_ms(500); //Задержка, чтобы избежать дребезга кнопки
    if(Current_station>19) Current_station=0; //Обнаружение выхода за пределы PLL
    EEPROM_write(1, Current_station); // записываем в еепром
    send_LC72144(); //Отправить значение PLL, сменить станцию
    }


    if ((PINB&(1 <<PB1))==0)
    {
    Current_station--; //Указание на следующую радиостанцию
    _delay_ms(500); //Задержка, чтобы избежать дребезга кнопки
    if(Current_station<0) Current_station=19; //Обнаружение выхода за пределы PLL
    EEPROM_write(1, Current_station); // записываем в еепром
    send_LC72144(); //Отправить значение PLL, сменить станцию
    }
    }
    }

    73. Best DX

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SOFT MSHV.. пробуем в VHF
    от DL8RCB в разделе Цифровые виды связи Новые технологии в электронике и связи
    Ответов: 184
    Последнее сообщение: 20.02.2023, 12:55
  2. В7-22А помогите оживить
    от andry252 в разделе Измерения
    Ответов: 2
    Последнее сообщение: 30.10.2020, 10:09
  3. Оживить Ишим-003
    от 179 в разделе Технический кабинет
    Ответов: 219
    Последнее сообщение: 09.08.2020, 09:02
  4. Оживить Р311
    от Denis_111 в разделе Старое радио (Ламповые души)
    Ответов: 25
    Последнее сообщение: 03.04.2016, 22:16
  5. Помогите оживить Деген
    от Alex-31 в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 26
    Последнее сообщение: 11.01.2016, 16:34

Ваши права

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