Перенос на Win

Тема в разделе "WASM.SOFTWARE", создана пользователем Andrei, 10 июн 2018.

  1. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.101
  2. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
  3. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Нашел еще один комп, попробую на железе
     
  4. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Поставил open SUSE, не помогло,
     
  5. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.101
    не понял.. и на жестянке не пашет???
     
  6. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    НЕ до жестянки я еще не добрался, какой дистриб из по win ставится из папки ?
    Не могу на болванку скинуть, нет болванки, купить пока нет возможности ?

    Мне кстате для опытов arduino DUE приехала, все ниче но сделано ужасно,
    Пины портов вразноброд, разрядность портов по даташиту(atsam3x8e) 6х32 в реальности 1х32 да и тот если dac не использовать,
    лучше брать нужный чип и делать плату самому, ....
     
    Последнее редактирование: 24 июн 2018
  7. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    вот код чтения ADC и вывод в DAC, почти то что нужно, осталось переделать на 1200 ЧД и вставить фильтры
    Код (C++):
    1.  
    2. void setup()
    3. {
    4.   Serial.begin (57600) ; // was for debugging
    5.   adc_setup () ;         // setup ADC
    6.   pmc_enable_periph_clk (TC_INTERFACE_ID + 0*3+0) ;  // clock the TC0 channel 0
    7.   TcChannel * t = &(TC0->TC_CHANNEL)[0] ;    // pointer to TC0 registers for its channel 0
    8.   t->TC_CCR = TC_CCR_CLKDIS ;  // disable internal clocking while setup regs
    9.   t->TC_IDR = 0xFFFFFFFF ;     // disable interrupts
    10.   t->TC_SR ;                   // read int status reg to clear pending
    11.   t->TC_CMR = TC_CMR_TCCLKS_TIMER_CLOCK1 |   // use TCLK1 (prescale by 2, = 42MHz)
    12.               TC_CMR_WAVE |                  // waveform mode
    13.               TC_CMR_WAVSEL_UP_RC |          // count-up PWM using RC as threshold
    14.               TC_CMR_EEVT_XC0 |     // Set external events from XC0 (this setup TIOB as output)
    15.               TC_CMR_ACPA_CLEAR | TC_CMR_ACPC_CLEAR |
    16.               TC_CMR_BCPB_CLEAR | TC_CMR_BCPC_CLEAR ;
    17.   t->TC_RC =  875 ;     // counter resets on RC, so sets period in terms of 42MHz clock
    18.   t->TC_RA =  440 ;     // roughly square wave
    19.   t->TC_CMR = (t->TC_CMR & 0xFFF0FFFF) | TC_CMR_ACPA_CLEAR | TC_CMR_ACPC_SET ;  // set clear and set from RA and RC compares
    20.   t->TC_CCR = TC_CCR_CLKEN | TC_CCR_SWTRG ;  // re-enable local clocking and switch to hardware trigger source.
    21.   setup_pio_TIOA0 () ;  // drive Arduino pin 2 at 48kHz to bring clock out
    22.   dac_setup () ;        // setup up DAC auto-triggered at 48kHz
    23.   REG_PIOC_OER = 0x1 <<22; //Порт С 22 пин на выход
    24.   REG_PIOB_OER = 0x1 <<27; //Порт B 27 пин на выход
    25. }
    26. void setup_pio_TIOA0 ()  // Configure Ard pin 2 as output from TC0 channel A (copy of trigger event)
    27. {
    28.   PIOB->PIO_PDR = PIO_PB25B_TIOA0 ;  // disable PIO control
    29.   PIOB->PIO_IDR = PIO_PB25B_TIOA0 ;   // disable PIO interrupts
    30.   PIOB->PIO_ABSR |= PIO_PB25B_TIOA0 ;  // switch to B peripheral
    31. }
    32. void dac_setup ()
    33. {
    34.   pmc_enable_periph_clk (DACC_INTERFACE_ID) ; // start clocking DAC
    35.   DACC->DACC_CR = DACC_CR_SWRST ;  // reset DAC
    36.   DACC->DACC_MR =
    37.     DACC_MR_TRGEN_EN | DACC_MR_TRGSEL (1) |  // trigger 1 = TIO output of TC0
    38.     (0 << DACC_MR_USER_SEL_Pos) |  // select channel 0
    39.     DACC_MR_REFRESH (0x0F) |       // bit of a guess... I'm assuming refresh not needed at 48kHz
    40.     (24 << DACC_MR_STARTUP_Pos) ;  // 24 = 1536 cycles which I think is in range 23..45us since DAC clock = 42MHz
    41.   DACC->DACC_IDR = 0xFFFFFFFF ; // no interrupts
    42.   DACC->DACC_CHER = DACC_CHER_CH0 << 0 ; // enable chan0
    43. }
    44. void dac_write (int val)
    45. {
    46.   DACC->DACC_CDR = val & 0xFFF ;
    47. }
    48. void adc_setup ()
    49. {
    50.   NVIC_EnableIRQ (ADC_IRQn) ;   // enable ADC interrupt vector
    51.   ADC->ADC_IDR = 0xFFFFFFFF ;   // disable interrupts
    52.   ADC->ADC_IER = 0x80 ;         // enable AD7 End-Of-Conv interrupt (Arduino pin A0)
    53.   ADC->ADC_CHDR = 0xFFFF ;      // disable all channels
    54.   ADC->ADC_CHER = 0x80 ;        // enable just A0
    55.   ADC->ADC_CGR = 0x15555555 ;   // All gains set to x1
    56.   ADC->ADC_COR = 0x00000000 ;   // All offsets off
    57.   ADC->ADC_MR = (ADC->ADC_MR & 0xFFFFFFF0) | (1 << 1) | ADC_MR_TRGEN ;  // 1 = trig source TIO from TC0
    58. }
    59. // Circular buffer, power of two.
    60. #define BUFSIZE 0x400
    61. #define BUFMASK 0x3FF
    62. volatile int samples [BUFSIZE] ;
    63. volatile int sptr = 0 ;
    64. volatile int isr_count = 0 ;   // this was for debugging
    65. #ifdef __cplusplus
    66. extern "C"
    67. {
    68. #endif
    69. void ADC_Handler (void)
    70. {
    71.   if (ADC->ADC_ISR & ADC_ISR_EOC7)   // ensure there was an End-of-Conversion and we read the ISR reg
    72.   {
    73.     int val = *(ADC->ADC_CDR+7) ;    // get conversion result
    74.     samples [sptr] = val ;           // stick in circular buffer
    75.     sptr = (sptr+1) & BUFMASK ;      // move pointer
    76.     dac_write (0xFFF & ~val) ;       // copy inverted to DAC output FIFO
    77.   }
    78.   isr_count ++ ;
    79. }
    80. #ifdef __cplusplus
    81. }
    82. #endif
    83. void loop()
    84. {
    85.            REG_PIOC_SODR = 0x1 << 22; //c22 = 8 pin
    86.            REG_PIOB_CODR = 0x1 << 27; //b27=13 pin
    87.            delay(1000);
    88.            REG_PIOC_CODR = 0x1 << 22; //c22=8 pin
    89.            REG_PIOB_SODR = 0x1 << 27; //b27 = 13 pin
    90.            delay(1000);
    91. }
    92.  
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.101
    вообще, линь ставится очень легко..

    1. можешь сделать загрузочную флэху и загружаться с неё в лайв режиме.
    1.1. можешь с этой же флэхи поставить на винт.
    2. можешь отформатировать партицию mkfs.ext4 /dev/sd[a|b|c|..] и скопируй на эту партицию ранее установленный линь, затем /etc/fstab подправь и будет загружаться.
    3. opensuse, сюзя, может ставиться из под выни.. за другие дистры не скажу, но скорей всего дэбя/убунтя/роса тоже.
     
  9. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Открыл SUSE, не нашел setup .exe, попробую скачать ubuntu, флешки нед у меня.
    У меня засада еще такая, wi-fi свисток d-link. На win 7, работает.
    Пароль вида хххх-хххх-хххх, на XP поставил драйвера, видит домашнюю сеть, просит ввести пароль, ввожу,
    а он зараза на него ругается, говорит что пароль может состоять только из строчных ..... и.т.д
    что делать пароль менять на роутере ?
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.101
    запость содержимое исошки == странно как-то.. у сюзи наиболее развитый установщик из возможных.
    если в роутере отображается попытка подруба == можешь чрез веб-панель роутера разрешить сий подруб иль смотри кнопки на роутере -- там тоже могут быть команды для разрешения подруба с вафли.. иль пропиши мак адрес своей жестянки в роутере. а, ваще, да == лучше пароль сведи в совместимую форму.
     
  11. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    /
     

    Вложения:

    • suse.png
      suse.png
      Размер файла:
      104,5 КБ
      Просмотров:
      770
  12. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Вот такой код для DUE ..., только я еще не пробовал, может и не работает
    Но компилится вроде ), ...
    Код (C++):
    1.  
    2. #include <DueTimer.h>
    3. #define Ntap 31
    4. #define DCgain 32768
    5. int myLed = 13;
    6. int OutSample,I,Q,N,X1,X2,X3,Y1,Y2,Y3;
    7. float count=0;
    8. int led_flag=0;
    9. int cos_N[4]={1,0,-1,0};
    10. int sin_N[4]={0,1,0,-1};
    11. int sin_N_m[4]={0,-1,0,1};
    12. bool ledOn = false;
    13. // Фильтр канала Q
    14. int  fir_Q(int NewSample) {
    15.     int FIRCoef[Ntap] = {
    16.          -406,
    17.          -207,
    18.           529,
    19.           240,
    20.          -698,
    21.          -274,
    22.           942,
    23.           308,
    24.         -1317,
    25.          -338,
    26.          1972,
    27.           363,
    28.         -3441,
    29.          -379,
    30.         10572,
    31.         17042,
    32.         10572,
    33.          -379,
    34.         -3441,
    35.           363,
    36.          1972,
    37.          -338,
    38.         -1317,
    39.           308,
    40.           942,
    41.          -274,
    42.          -698,
    43.           240,
    44.           529,
    45.          -207,
    46.          -406
    47.     };
    48.     static int x[Ntap];      //input samples
    49.     long int y=0;            //output sample
    50.     int n;
    51.     //shift the old samples
    52.     for(n=Ntap-1; n>0; n--)
    53.        x[n] = x[n-1];
    54.     //Calculate the new output
    55.     x[0] = NewSample;
    56.     for(n=0; n<Ntap; n++)
    57.         y += FIRCoef[n] * x[n];
    58.  
    59.     return y / DCgain;
    60.  
    61. }
    62. // Фильтр канала I
    63. int  fir_I(int NewSample) {
    64.     int FIRCoef[Ntap] = {
    65.          -406,
    66.          -207,
    67.           529,
    68.           240,
    69.          -698,
    70.          -274,
    71.           942,
    72.           308,
    73.         -1317,
    74.          -338,
    75.          1972,
    76.           363,
    77.         -3441,
    78.          -379,
    79.         10572,
    80.         17042,
    81.         10572,
    82.          -379,
    83.         -3441,
    84.           363,
    85.          1972,
    86.          -338,
    87.         -1317,
    88.           308,
    89.           942,
    90.          -274,
    91.          -698,
    92.           240,
    93.           529,
    94.          -207,
    95.          -406
    96.     };
    97.     static int x[Ntap]; //input samples
    98.     long int y=0;            //output sample
    99.     int n;
    100.     //shift the old samples
    101.     for(n=Ntap-1; n>0; n--)
    102.        x[n] = x[n-1];
    103.     //Calculate the new output
    104.     x[0] = NewSample;
    105.     for(n=0; n<Ntap; n++)
    106.         y += FIRCoef[n] * x[n];
    107.  
    108.     return y / DCgain;
    109.  
    110. }
    111. void myHandler(){ // обработчик прерывания по таймеру
    112.                   if (N==3)
    113.          {
    114.    N=0;
    115.    }
    116.          else N++;
    117. I=analogRead(A0);
    118. Q=analogRead(A1);
    119. X1=I*cos_N[N]+Q*sin_N[N];
    120. X2=fir_I(X1);
    121. X3=X2*cos_N[N];
    122. Y1=I*sin_N_m[N]+Q*cos_N[N];
    123. Y2=fir_Q(Y1);
    124. Y3=Y2*sin_N_m[N];
    125. OutSample=X3+Y3;
    126. OutSample=OutSample+512;// восстанавливаем однополярный сигнал
    127. analogWrite(DAC0, OutSample);
    128. }
    129.            
    130. void setup(){
    131.   pinMode(myLed, OUTPUT);
    132.   Timer3.attachInterrupt(myHandler);
    133.   Timer3.start(1000000); // Calls every 50ms
    134.   pinMode(DAC0, OUTPUT);
    135.   pinMode(A0, INPUT);
    136.   pinMode(A1, INPUT);
    137. }
    138. void loop(){
    139.   while(1){
    140.     // I'm stuck in here! help me...
    141.           }
    142. }
    143.  
     
  13. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Сигнал какой-то хрипловатый, наверное LC фильтры нужно ставить, и смещение по входу сделать ...
     
  14. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Вот версия с 2 кГц, ЧД, ...
    Код (C++):
    1. #include <DueTimer.h>
    2. #define Ntap 31
    3. #define DCgain 32768
    4. int myLed = 13;
    5. int OutSample,I,Q,N,X1,X2,X3,Y1,Y2,Y3;
    6. float count=0;
    7. int led_flag=0;
    8. int cos_N[4]={1,0,-1,0};
    9. int sin_N[4]={0,1,0,-1};
    10. int sin_N_m[4]={0,-1,0,1};
    11. bool ledOn = false;
    12. // Фильтр канала Q
    13. int  fir_Q(int NewSample) {
    14.     int FIRCoef[Ntap] = {
    15.   -98,
    16.           -92,
    17.           159,
    18.           143,
    19.          -265,
    20.          -220,
    21.           450,
    22.           335,
    23.          -792,
    24.          -490,
    25.          1469,
    26.           671,
    27.         -3046,
    28.          -827,
    29.         10313,
    30.         17347,
    31.         10313,
    32.          -827,
    33.         -3046,
    34.           671,
    35.          1469,
    36.          -490,
    37.          -792,
    38.           335,
    39.           450,
    40.          -220,
    41.          -265,
    42.           143,
    43.           159,
    44.           -92,
    45.           -98
    46.     };
    47.     static int x[Ntap];      //input samples
    48.     long int y=0;            //output sample
    49.     int n;
    50.     //shift the old samples
    51.     for(n=Ntap-1; n>0; n--)
    52.        x[n] = x[n-1];
    53.     //Calculate the new output
    54.     x[0] = NewSample;
    55.     for(n=0; n<Ntap; n++)
    56.         y += FIRCoef[n] * x[n];
    57.  
    58.     return y / DCgain;
    59.  
    60. }
    61. // Фильтр канала I
    62. int  fir_I(int NewSample) {
    63.     int FIRCoef[Ntap] = {
    64.   -98,
    65.           -92,
    66.           159,
    67.           143,
    68.          -265,
    69.          -220,
    70.           450,
    71.           335,
    72.          -792,
    73.          -490,
    74.          1469,
    75.           671,
    76.         -3046,
    77.          -827,
    78.         10313,
    79.         17347,
    80.         10313,
    81.          -827,
    82.         -3046,
    83.           671,
    84.          1469,
    85.          -490,
    86.          -792,
    87.           335,
    88.           450,
    89.          -220,
    90.          -265,
    91.           143,
    92.           159,
    93.           -92,
    94.           -98
    95.     };
    96.     static int x[Ntap]; //input samples
    97.     long int y=0;            //output sample
    98.     int n;
    99.     //shift the old samples
    100.     for(n=Ntap-1; n>0; n--)
    101.        x[n] = x[n-1];
    102.     //Calculate the new output
    103.     x[0] = NewSample;
    104.     for(n=0; n<Ntap; n++)
    105.         y += FIRCoef[n] * x[n];
    106.  
    107.     return y / DCgain;
    108.  
    109. }
    110. void myHandler(){ // обработчик прерывания по таймеру
    111.                   if (N==3)
    112.          {
    113.    N=0;
    114.    }
    115.          else N++;
    116. I=analogRead(A0);
    117. Q=analogRead(A1);
    118. X1=I*cos_N[N]+Q*sin_N[N];
    119. X2=fir_I(X1);
    120. X3=X2*cos_N[N];
    121. Y1=I*sin_N_m[N]+Q*cos_N[N];
    122. Y2=fir_Q(Y1);
    123. Y3=Y2*sin_N_m[N];
    124. OutSample=X3+Y3;
    125. OutSample=OutSample;// восстанавливаем однополярный сигнал
    126. analogWrite(DAC0, OutSample);
    127. }
    128.              
    129. void setup(){
    130.   pinMode(myLed, OUTPUT);
    131.   Timer3.attachInterrupt(myHandler);
    132.   Timer3.start(500); // Calls every 50ms
    133.   pinMode(DAC0, OUTPUT);
    134.   pinMode(A0, INPUT);
    135.   pinMode(A1, INPUT);
    136.    REG_PIOC_OER = 0x1 <<22;
    137.    REG_PIOB_OER = 0x1 <<27;
    138.    analogWriteResolution(12);
    139.    analogReadResolution(12);
    140.  
    141. }
    142. void loop(){
    143.   while(1){
    144.           REG_PIOC_SODR = 0x1 << 22; //c22 = 8 pin
    145.            REG_PIOB_CODR = 0x1 << 27; //b27=13 pin
    146.            delay(1000);
    147.            REG_PIOC_CODR = 0x1 << 22; //c22=8 pin
    148.            REG_PIOB_SODR = 0x1 << 27; //b27 = 13 pin
    149.            delay(1000);
    150.           }
    151. }
    152.  
     
  15. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Так с win 7 по этому же паролю ОК, а XP не хочет (
     
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.101
    воткни провод и совсем с паролями не будет мороки :)
     
  17. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Да не всё так просто, ситуация такая , у меня сейчас комп на win7, все ниче только он у меня с 2011 и еще немного и загнется, .... нашел я на замену старый комп а там ХР на селероне 2,4 512 Мб озу, и.т.д. вин ХР, и нет сетевой карты...
    На всякий перетащил туда нужные файлы, часть в облако закинул, ....
     
  18. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    Ане у кого нету компакт диска от книги Стивена Смита по DSP ?
     
  19. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    У меня где-то дома должен быть, надо посмотреть.
     
  20. Andrei

    Andrei Member

    Публикаций:
    0
    Регистрация:
    13 апр 2018
    Сообщения:
    322
    ОК, уж больно книжка понравилась, ....