Страница 1 из 4 123 ... Последняя
Показано с 1 по 20 из 65

Тема: управление WM8804 в soft mode

  1. #1

    По умолчанию управление WM8804 в soft mode

    Родил что-то типа библиотеки для 8804-й.
    Пользуйтесь!

    основной режим: работа СПДИФ приемника на всех частотах 44,1 - 192 - проверил на процике pic16f883, дисплее 20t202da2ja и собсно wm8804

    Хочу поблагодарить за помощь: alex (ценньіе советьі по работе с ПИКами), energetik(общие вопросьі ) ,nazar)
    Последний раз редактировалось Wired; 24.11.2013 в 21:34.
    was fällt, das soll man auch noch stossen

  2. #2
    Завсегдатай Аватар для Serge_L
    Регистрация
    12.09.2008
    Адрес
    Калуга
    Возраст
    49
    Сообщений
    2,740

    По умолчанию Re: управление WM8804 в soft mode

    Wired, Толик! Ты - крут! Спасибо, забрал. Причём, что приятно, под мой самый любимый проц в 16-ом семействе

    ---------- Добавлено в 21:18 ---------- Предыдущее сообщение в 21:17 ----------

    Да там еще круче, чем предполагал...

    Это просто джиттер какой-то! (с) momitko

  3. #3
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,567

    По умолчанию Re: управление WM8804 в soft mode

    А фото какие-нибудь есть? Что как индицируется?

  4. #4

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    А фото какие-нибудь есть? Что как индицируется?
    представлено "as is", без каких-либо гарантий работоспособности, фоток, индикации и прочего ;)
    was fällt, das soll man auch noch stossen

  5. #5
    Завсегдатай Аватар для ViktKors
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Wired Посмотреть сообщение
    Родил что-то типа библиотеки для 8804-й.
    ..работа СПДИФ приемника на всех частотах 44,1 - 192 ..
    Пользуйтесь!
    Круто!

    Пока не смотрел, впорос (если глупый - сотру )
    176.4 кГц тоже получилось? Как?
    Последний раз редактировалось ViktKors; 25.11.2013 в 18:01.

  6. #6

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от ViktKors Посмотреть сообщение
    Круто!

    Пока не смотрел, впорос (если глупый - сотру )
    176.4 кГц тоже получилось? Как?
    не получилось т.к. нету соотвествующего источника, ноут вьідает только 44,1, 48, 96, 192
    но ничего не мешает правильно отработать прерьівания и получить искомое.
    was fällt, das soll man auch noch stossen

  7. #7
    Завсегдатай Аватар для Deemon1970
    Регистрация
    19.02.2013
    Адрес
    Нефтекумск
    Возраст
    53
    Сообщений
    1,312

    По умолчанию Re: управление WM8804 в soft mode

    Вопрос (если глупый - сотру ) ,Wired Вам решать.
    176.4кГц и 82.1кГц где вообще используется? Подготовка ЦД?
    Можно конечно самому файл создать, но смысл какой?
    С уважением. Дмитрий.

  8. #8
    Завсегдатай Аватар для ViktKors
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Wired Посмотреть сообщение
    но ничего не мешает правильно отработать прерьівания и получить искомое.
    Ага, мне так уже с полгода "ничто не мешает". Руки не доходят.

    Я так понял, там только метод "тыка". То-ли 192, то-ли 176 - WM-ка это сама определить не может (емнип). И я так понял, что нужно просто перебирать режимы и смотреть какой их них заработает без ошибок.
    ИМХО, как-то слишком мудрено все это...


    Цитата Сообщение от Deemon1970 Посмотреть сообщение
    176.4кГц и 82.1кГц где вообще используется? Подготовка ЦД?
    Ну да.
    И в хай-рез магазинах такие файлы вполне себе продаются. Если меня братец спросит, насчет того "какого твой ЦАП понимает не все форматы", - не стану-же я его уговаривать, что "на самом деле" ему этот формат не нужен..

    ------------------
    - Почему у тебя 176 кгц не идет?
    - Даю установку: "Потому что тебе он не нужен!"

    Поговорили называется

  9. #9
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,567

    По умолчанию Re: управление WM8804 в soft mode

    Wired, вы совсем закончили работать с SPDIF приёмниками? Теперь только USB впереди?

  10. #10

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от ViktKors Посмотреть сообщение
    я так понял, что нужно просто перебирать режимы и смотреть какой их них заработает без ошибок.
    типа того.
    was fällt, das soll man auch noch stossen

  11. #11
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,567

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от ViktKors Посмотреть сообщение
    ИМХО, как-то слишком мудрено все это...
    SRC4392 не имеет этих проблем.
    CS8416 тоже не должна. Сам ещё не пробовал.

  12. #12

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    Wired, вы совсем закончили работать с SPDIF приёмниками? Теперь только USB впереди?

    ЮСБ мне тоже не интерсен.

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    SRC4392 не имеет этих проблем.
    там другие проблемьі. Точнее недостатки. Точнее, мне не нравится звук после обработки его ASRC.
    was fällt, das soll man auch noch stossen

  13. #13
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,567

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Wired Посмотреть сообщение
    точнее, мне не нравится звук после обработки его ASRC.
    SRC4392 может же работать также как и WM8804(05) с восстановленным клоком без участия ASRC. Т.е. как бы её эмулировать.

  14. #14

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    SRC4392 может работать также как и WM8804(05) с восстановленным клоком без участия ASRC.
    Может, но фиговато.
    was fällt, das soll man auch noch stossen

  15. #15
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,567

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Deemon1970 Посмотреть сообщение
    176.4кГц и 82.1кГц где вообще используется?
    Любой образ SACD легко конвертится в PCM 44, или 88, или 176, или 352. Сами выбирайте.

    ---------- Добавлено в 18:07 ---------- Предыдущее сообщение в 18:04 ----------

    Цитата Сообщение от Wired Посмотреть сообщение
    Может, но фиговато.
    В чём фиговато?

  16. #16

    По умолчанию Re: управление WM8804 в soft mode

    Где то вот так отлавливает 176 кгц 192 и т.д...

    Код:
    #include <htc.h>
    #include "main.h"
    #include "wm8804.h"
    #include "VFD.h"
    
    
    
    
    __CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & PWRTE_ON & MCLRE_ON & LVP_OFF & BOREN_ON);
    __CONFIG(BOR4V_BOR21V);
     
    
    volatile unsigned char wmval;
    volatile unsigned char i;
    
    
    /*=====================INTERRUPT==============================*/
    
    void interrupt isr()
    {
     
     if (RBIF) //разбор прерьіваний на изменение состояния пина
     {
         Led3=GPO0;
         WM_SPDIFSTATE();
         WM_INTSTATE();
         if (bSPDSTAT.UNLOCK==1)
         {
             if (T_192) T_192 = 0; else T_192 = 1;
         };        
         RBIF = 0;
     }    
     if (T0IF) // разбор таймерного прерьівания
     {
         if (Led4) Led4=0;else Led4=1;
         if (GPO0==0)
         {
          WM_SPDIFSTATE();
          WM_INTSTATE();
         }
         TMR0 = 0; 
         T0IF = 0;    
         
     };    
      
    } ;   
    
    
    
    /*=========================================M A I N======================================*/ 
    void main() 
        {
    
        TRISB = 0b00000010;   // Порт В на выход
        PORTB = 0x00;   // Выключаем все выходы порта В
        IOCB =  0x00;   // прерьівания отключеньі пока по PB1
        TRISA = 0b01010000;   // Порт A на выход
        PORTA = 0x00;   // Выключаем все выходы порта A
        ANSEL=0; //вход порт А аналог
        ANSELH=0;
        CCP1CON=0;
        RBIE = 1; //прерьівание на портБ
        PSA = 0; //прескалер на клок
        PS0 = 1; //прескалер на 256
        PS2 = 1;
        PS1 = 1;
        T0CS = 0; //таймер на сист клок
        T0IE = 1;  //преривание по переполнению таймера 
        TMR0 = 255;
    
    
    Led1 = 0;
    Led2 = 0;
    Led3 = 0;
    Led4 = 0;
    CSB = 1;
    STB = 1;
    
    WM_INIT(); 
    WM_WRITE(PWRDN, 0x08);
    VFD_INIT();
    VFD_WRITE(2,"wm8804");
    ei(); //прерьівания разрешил
         
    /*========================================= основной цикл ======================================*/ 
        while(1) 
        {      // Запускаем бесконечный цикл
    
         if (bINTSTAT.UPD_UNLOCK) VFD_WRITE_CH(30,0x75);
         if (bINTSTAT.UPD_REC_FREQ) VFD_WRITE_CH(31,0x66); 
         if (bINTSTAT.UPD_NON_AUDIO) VFD_WRITE_CH(32,0x61);
         if (bINTSTAT.UPD_CPY_N) VFD_WRITE_CH(33,0x63);
         if (bINTSTAT.INT_TRANS_ERR) VFD_WRITE_CH(34,0x65); 
         if (bINTSTAT.INT_INVALID) VFD_WRITE_CH(35,0x69);      
              
            if (bSPDSTAT.UNLOCK==1) 
            VFD_WRITE_CH(21,0x55); // "U" unlock
            else
            VFD_WRITE_CH(21,0x4C); // "L" lock
            if (bINTSTAT.INT_TRANS_ERR==1) 
            {
             VFD_WRITE_CH(23,0x45); // "E" Trans error
             if (bSPDSTAT.REC_FREQ==mode1)
             {
               if (T_192)
                {
                  bPLL.PLL_K_7_0 =   0xBA;
                  bPLL.PLL_K_15_8 =  0x49;
                  bPLL.PLL_K_21_16 = 0x0C;
                  bPLL.PLL_N_3_0 =   0x08;
                  bPLL.F_192 = 1;              
                }  
               else
                {
                  bPLL.PLL_K_7_0 =   0x21;
                  bPLL.PLL_K_15_8 =  0xFD;
                  bPLL.PLL_K_21_16 = 0x36;
                  bPLL.PLL_N_3_0 =   0x07;
                  bPLL.F_192 = 1;
                };
             }
             else
             {
                bPLL.PLL_K_7_0 =   0x21;
                bPLL.PLL_K_15_8 =  0xFD;
                bPLL.PLL_K_21_16 = 0x36;
                bPLL.PLL_N_3_0 =   0x07;
                bPLL.F_192 = 1;
             };           
            }
            else
            {
            VFD_WRITE_CH(23,0x4E); // "N" Trans OK
            };
            
            if (bPLL.F_192)
            {
                di();
                WM_WRITE (PLL1,PLL1_Data);
                WM_WRITE (PLL2,PLL2_Data);
                WM_WRITE (PLL3,PLL3_Data);
                WM_WRITE (PLL4,PLL4_Data); 
                VFD_WRITE_HX (12,PLL1_Data);
                VFD_WRITE_HX (14,PLL2_Data);
                VFD_WRITE_HX (16,PLL3_Data);
                VFD_WRITE_HX (19,PLL4_Data);            
                bPLL.F_192 = 0;
                ei(); 
            };
            
    	    switch (bSPDSTAT.REC_FREQ)
    	    {
    	        case (mode1)://192khz
    	        {
        	        VFD_WRITE(25,"192");    
    	        };
    	        break;
    	        case (mode2)://88.2-96KHz
    	        {
        	        VFD_WRITE(25,"96 ");
    	        };
    	        break;
    	        case (mode3)://44.1-48KHz
    	        {
        	        VFD_WRITE(25,"48 ");    
    	        };
    	        break;	    
    	        case (mode4)://32khz
    	        {
                	VFD_WRITE(25,"32 ");    
    	        };
    	     };
    
        }
     
    }
    Чистьій бьідлокод - но пашет.
    По хорошему таймером читать состояние WM ки не надо, и обрабатьівать все желательно в прерьівании по изменению состояния порта.
    Последний раз редактировалось Wired; 25.11.2013 в 23:15.
    was f&#228;llt, das soll man auch noch stossen

  17. #17

    По умолчанию Re: управление WM8804 в soft mode

    176KHz для тестов брал отсюда - https://forum.vegalab.ru/showthread....ровых-сигналов
    was f&#228;llt, das soll man auch noch stossen

  18. #18
    Завсегдатай Аватар для ViktKors
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от Wired Посмотреть сообщение
    Где то вот так отлавливает 176 кгц 192 и т.д...

    Код:
            .....
            if (bINTSTAT.INT_TRANS_ERR==1) 
            {
             VFD_WRITE_CH(23,0x45); // "E" Trans error
             if (bSPDSTAT.REC_FREQ==mode1)
             {
               if (T_192)
                {
                  bPLL.PLL_K_7_0 =   0xBA;
                  bPLL.PLL_K_15_8 =  0x49;
                  bPLL.PLL_K_21_16 = 0x0C;
                  bPLL.PLL_N_3_0 =   0x08;
                  bPLL.F_192 = 1;              
                }  
               else
                {
                  bPLL.PLL_K_7_0 =   0x21;
                  bPLL.PLL_K_15_8 =  0xFD;
                  bPLL.PLL_K_21_16 = 0x36;
                  bPLL.PLL_N_3_0 =   0x07;
                  bPLL.F_192 = 1;
                };
             }
             else
             {
                bPLL.PLL_K_7_0 =   0x21;
                bPLL.PLL_K_15_8 =  0xFD;
                bPLL.PLL_K_21_16 = 0x36;
                bPLL.PLL_N_3_0 =   0x07;
                bPLL.F_192 = 1;
             };           
            }
           ...
    ... пашет.
    Угу, дошли руки, попробовал 176.4 кГц.

    Пашет, согласен, только это порнография. На 100% работает только если брать СПДИФ сигнал в виде оригинального цифрового потока. После коаксиала или оптики получается невесть что. Ну то есть у меня нормально работало только по кабелю, но исключительно с моим-же передатчиком. Во всех остальных ситуациях в лучшем случае постоянно слетала синхронизация.
    При том, что обнаружить какие-либо проблемы в режиме 192 кГц я, как ни старался, так и не смог.

    Короче говоря, это просто один из 100+ косяков датащита. Эти "неточности" склоняют на каждом углу, но чаще намеками так, чтоб ничего конкретного не сказать, "интеллектулаьная собственность", вестимо .

    Вот картинка:
    Нажмите на изображение для увеличения. 

Название:	WM8804_Page_28.png 
Просмотров:	258 
Размер:	55.2 Кб 
ID:	208580
    вверху - начало страницы 28 актуальной версии датащита (rev. 4.5.), внизу - как оно должно быть.


    А это аналогичное представление таблицы 31 с той-же страницы (зная частоту f2, для других кварцев нетрудно пересчитать):
    Нажмите на изображение для увеличения. 

Название:	WM8804_Table_31.png 
Просмотров:	214 
Размер:	63.0 Кб 
ID:	208581

    Соответствующие данные нужно и записывать в регистры.

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

    Типа такого:
    Нажмите на изображение для увеличения. 

Название:	Code_Fs_select.png 
Просмотров:	208 
Размер:	10.6 Кб 
ID:	208585
    [свернуть]


    Все это можно "между строк" увидеть и в нынешней версии датащита, но ведь есть прямые указания делать иначе. Причем, как уже упоминалось, датащитовский режим тоже как-бы вполне работоспособен .
    * так понимаю, при датащитовских установках PLL способна захватить поток 176.4 кГц, но работает уже "на грани". И не остается запаса даже на умеренный (по меркам СПДИФ) джиттер в линии. Т.е. "датащитовский" режим формально работоспособен, но по сути..

    ------
    П.С. а вообще, конечно чУдная и абсолютно безглючная штука.
    Понятно, что тут далеко не только в джиттере дело, и обобщать нельзя, но.. По кабелю, да с нормальным передатчиком пытаюсь услышать разницу с асинхронным УСБ..
    Последний раз редактировалось ViktKors; 01.05.2014 в 14:34.

  19. #19
    Старый знакомый Аватар для dee-jan
    Регистрация
    09.07.2009
    Адрес
    BLR
    Возраст
    42
    Сообщений
    923

    По умолчанию Re: управление WM8804 в soft mode

    А в целом, в хардвар режиме, 8804 тащит 192кгц? И какие Fs она выдает при 44, 96 и 192? Как-то явно в ДШ не пишут.
    Сергей.

  20. #20
    Завсегдатай Аватар для ViktKors
    Регистрация
    03.05.2010
    Сообщений
    3,532

    По умолчанию Re: управление WM8804 в soft mode

    Цитата Сообщение от dee-jan Посмотреть сообщение
    А в целом, в хардвар режиме, 8804 тащит 192кгц? И какие Fs она выдает при 44, 96 и 192? Как-то явно в ДШ не пишут.
    хардвер не пробовал, но он просто менее гибок в управлении, качественно - то-же самое (ну разве 176.4 нет)

    в хардвере обещают (и вроде как так оно и есть) клок 256*fs для 44/48/88/96 и 128*fs для 192.
    программно наверное удобнее выставить одну частоту клока для всех fs, например 22/24 МГц.

    В софте все обычные fs идут без вопросов, придраться не к чему.
    Другое дело, что далеко не все источники могут нормально отдавать выше 96 кГц. но никаких проблем со стороны приемника нет. То есть при нормальной реализации входов соединение выглядит как обычное аналоговое: воткнул - играет. Чего еще..
    Последний раз редактировалось ViktKors; 01.05.2014 в 17:11.

Страница 1 из 4 123 ... Последняя

Социальные закладки

Социальные закладки

Ваши права

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