| | |
| | | firHead.status = acc_completely; |
| | | firHead.count++; |
| | | } |
| | | |
| | | if(firHead.status == acc_completely) { |
| | | for(struct FIR_tcb* fir = firHead.first; fir != NULL ; fir = fir->next) { |
| | | if(fir->callback) fir->callback(fir->content); |
| | | } |
| | | firHead.status = acc_idle; |
| | | } |
| | | } |
| | | |
| | | uvoid fir_acc_init() |
| | | { |
| | | firHead.count =0; |
| | | firHead.num =0 ; |
| | | firHead.status = acc_completely ; |
| | | firHead.status = acc_idle ; |
| | | firHead.first = NULL; |
| | | firHead.last = NULL; |
| | | |
| | |
| | | { |
| | | s32 restarting = 0; |
| | | |
| | | if(firHead.status == acc_completely && firHead.num > 0) { |
| | | if(firHead.status == acc_idle && firHead.num > 0) { |
| | | for(struct FIR_tcb* fir = firHead.first; fir != NULL ; fir = fir->next) { |
| | | if(fir->callback) fir->callback(fir->content); |
| | | |
| | | if(fir->cp_update) { |
| | | memcpy((uvoid*)fir->cf_buff, fir->cf_temp , fir->tap*sizeof(ufloat)); |
| | | fir->cp_update = ufalse; |
| | |
| | | *pREG_FIR0_CHNPTR = (uint32_t)(saddr(firHead.first->tcb+12)); |
| | | firHead.clock_start = clock(); |
| | | //Initializing the chain pointer register |
| | | *pREG_FIR0_CTL1 = BITM_FIR_CTL1_EN|BITM_FIR_CTL1_DMAEN|(firHead.num -1)<<BITP_FIR_CTL1_CH|BITM_FIR_CTL1_BURSTEN; |
| | | //*pREG_FIR0_CTL1 = BITM_FIR_CTL1_EN|BITM_FIR_CTL1_DMAEN|(firHead.num -1)<<BITP_FIR_CTL1_CH|BITM_FIR_CTL1_BURSTEN; |
| | | *pREG_FIR0_CTL1 = BITM_FIR_CTL1_EN|BITM_FIR_CTL1_DMAEN|((firHead.num -1)<<BITP_FIR_CTL1_CH); |
| | | |
| | | firHead.status = acc_processing; |
| | | } |
| | |
| | | firHead.last->next = fir; |
| | | firHead.last = fir ; |
| | | } |
| | | //fir->tcb[0] = ((s32)(firHead.first->tcb+12)>>2)|MP_OFFSET; |
| | | |
| | | firHead.num ++; |
| | | |
| | | return fir; |