Перейти к содержанию
    

mirr

Участник
  • Постов

    31
  • Зарегистрирован

  • Посещение

Весь контент mirr


  1. спасибо огромное, буду гуглить...
  2. привет всем!!! у меня такая проста задача: нужно чтоб светодиод светился когда темно и не светился когда светло (т.е. или свет от окна или от люстры). я собрал простую схемку на p-n-p транзисторе (2Т208К) и фотодиоде (ФД-К-155). принципе она работает, но не совсем так как мне надо, а именно: чтоб полностью погасить светодиод нужно в упор светить фонариком в фотодиод :crying: . потому прошу подсказать кто знает какой фотодиод или фототранзистор нужно взять чтоб он реагировал на дневной свет...
  3. SSC на AT91SAM7X256

    спасибо, буду бороться дальше...
  4. SSC на AT91SAM7X256

    aaarrr, а Вам не приходилось разгонять SSC быстрее?
  5. SSC на AT91SAM7X256

    ну а может быть так, что TCP просто не успевает отправить данные за то время пока SSC принимает новые? может у меня как-то прием не правильно организован?
  6. SSC на AT91SAM7X256

    Всем привет. у меня такая проблема: необходимо по SSC принимать данные от ПЛИС и отправлять их по Ethernet'y и это все на максимально возможной скорости. данные поступают порциями по 16 бит, передачу тактирует SSC. сначала пакеты отправлял по udp, но не был уверен что все доходят, сейчас пока отправляю по TCP. передача без ошибок, если SSC гоняет на 1МГц, если увеличить, то пропадают пакеты. MCLK = 86МГц. знатоки, подскажите, можно ли ускорить весь этот процесс? код: void SSC_ReInit( void ) { unsigned int SLOT_BY_FRAME = 1; unsigned int BITS_BY_SLOT = 16; pSSC->SSC_CR = AT91C_SSC_SWRST; pSSC->SSC_CMR = 40; *AT91C_SSC_TFMR = (AT91C_SSC_FSOS_POSITIVE | (((SLOT_BY_FRAME-1)<<8) & AT91C_SSC_DATNB) | AT91C_SSC_MSBF | (BITS_BY_SLOT-1)); *AT91C_SSC_RFMR = (AT91C_SSC_FSOS_POSITIVE | (((SLOT_BY_FRAME-1)<<8) & AT91C_SSC_DATNB) | //AT91C_SSC_LOOP | AT91C_SSC_MSBF | (BITS_BY_SLOT-1)); *AT91C_SSC_TCMR = (((((BITS_BY_SLOT*SLOT_BY_FRAME)/2) -1) <<24) | AT91C_SSC_START_FALL_RF | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKI | AT91C_SSC_CKS_DIV); *AT91C_SSC_RCMR = (((((BITS_BY_SLOT*SLOT_BY_FRAME)/2) -1) <<24) | AT91C_SSC_START_FALL_RF | AT91C_SSC_CKO_CONTINOUS| AT91C_SSC_CKS_DIV); } ----------------------------------------------------------------- void BSP_SSC_Init( void ) { // Init buffers buffersRX[0] = &pBufferRX1[0]; buffersRX[1] = &pBufferRX2[0]; buffersRX[2] = &pBufferRX3[0]; buffersRX[3] = &pBufferRX4[0]; AT91F_SSC_CfgPIO(); AT91F_SSC_CfgPMC(); pSSC->SSC_IER = ( unsigned int )0x00; pSSC->SSC_IDR = ( unsigned int )0xffff; SSC_ReInit(); old_buff = 0; next_buff = 1; pSSC->SSC_RPR = (AT91_REG)buffersRX[0]; pSSC->SSC_RCR = SSCBUFSIZE; pSSC->SSC_RNPR = (AT91_REG)buffersRX[1]; pSSC->SSC_RNCR = SSCBUFSIZE; pAIC->AIC_IDCR = (1<<AT91C_ID_SSC); pAIC->AIC_SVR[AT91C_ID_SSC] = (unsigned int)SscHandler; pAIC->AIC_SMR[AT91C_ID_SSC] = (AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL|0x4); pAIC->AIC_IECR = (1<<AT91C_ID_SSC); pSSC->SSC_IER = /*AT91C_SSC_ENDTX|*/AT91C_SSC_ENDRX; pSSC->SSC_IDR = ~(/*AT91C_SSC_ENDTX|*/AT91C_SSC_ENDRX); pSSC->SSC_PTCR = /*AT91C_PDC_TXTEN|*/AT91C_PDC_RXTEN; pSSC->SSC_CR = /*AT91C_SSC_TXEN|*/AT91C_SSC_RXEN; } ----------------------------------------------------------------- void SscHandler(void) { INT8U err; INT8U flg; unsigned long STATUS = AT91C_BASE_SSC->SSC_SR; if ((STATUS & AT91C_SSC_ENDRX) == AT91C_SSC_ENDRX) { pSSC->SSC_IER = /*AT91C_SSC_ENDTX|*/AT91C_SSC_ENDRX; OSQPost(CommQ, (void *)buffersRX[old_buff]); old_buff = next_buff; next_buff++; if (next_buff == SSCBUFCOL) next_buff = 0; pSSC->SSC_RNPR = (AT91_REG)buffersRX[next_buff]; pSSC->SSC_RNCR = SSCBUFSIZE; } if ((STATUS & AT91C_SSC_ENDTX) == AT91C_SSC_ENDTX) { pSSC->SSC_IER = AT91C_SSC_ENDTX; pSSC->SSC_TNPR = (AT91_REG)pBufferTX1; pSSC->SSC_TNCR = SSCBUFSIZE; } AT91C_BASE_AIC->AIC_IVR = 0; AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_SSC); } ------------------------------------------------ static void App_TaskUserIF (void *p_arg) { NET_SOCK_ID sock, sock_cl; struct sockaddr_in client; INT8U errMbox; CPU_INT16U* pbuf; // Init TCP/IP structures client.sin_family = AF_INET; client.sin_port = htons(11001); client.sin_addr.s_addr = htonl(INADDR_ANY); // Create socket sock = socket(AF_INET, SOCK_STREAM, 0); bind((int) sock,(struct sockaddr *)&client, (socklen_t)(sizeof (struct sockaddr_in))); listen (sock,3); sock_cl = accept (sock,(struct sockaddr *)&client, (socklen_t*)&errMbox); // Init SSC BSP_SSC_Init(); while(1) { pbuf = (CPU_INT16U*)OSQPend(CommQ, 0, &errMbox); send(sock_cl,pbuf,2048,0); }; }
×
×
  • Создать...