Hi I want to draw graphs of position of 2-phased QEI versus time. so I want to capture QEI position every time period. time gap between to position pulses is at least 7.2 microseconds. I think I have to choose one of these methods:
1-send position to USB during time overflow interrupt(TIM_INT)
2-send content of the timer when the situation changes. (I don't know if it is possible to sense the changes as an interrupt?)
I think there are some restrictions due to interrupt latancy. so what is the highest resolution for my system. and which method is better? How can I define interrupt for 2nd method? can i send data to buffer and send batch buffer to USB? Is it help me Reduce interrupt latancy effects? HOW? Please Help me Best Regards
thanks:
Such a noise is filtered by, 1) R/C (or L/C) filter at the input pins of the QEI unit. And 2) The integrated digital filter of the LPC17xx QEI unit. Is it embedded in the IC or Should I do ? LPC_QEI->FILTER =???(What should i put??)
As of QEI unit of LPC17xx, an ENCLK_Int interrupt occurs at the every transition of the encoder.... I have written below codes to send the data to usb using usbhost lite. FILE_Open, FILE_Write & FILE_Close belong to USBHostlite part:
void qei_main(){ //Basic Configuration: LPC_SC->PCONP |= (1<<18); LPC_SC->PCLKSEL1 |= (0x01); //configuration for the pins: LPC_PINCON->PINSEL3 |=((1<<8)|(1<<14)|(1<<16));//PH A&B & index LPC_QEI->QEICONF =(1<<2);//PhA and PhB function as quadrature encoder inputs.(4x) LPC_QEI->QEICON = 0x02;//Control register: Reset position counter on index.(RESPI) LPC_QEI->INXCMP = 0x00;//QEI Index Compare register LPC_QEI->QEILOAD = 0x00;//QEI Timer Reload register LPC_QEI->QEICLR = 0xFFFFFFFF; LPC_QEI->QEIIEC = 0xFFFFFFFF; LPC_QEI->QEIIES = 0x00000020;//enable ENCLK_EN } NVIC_EnableIRQ(QEI_IRQn); /*enable the interrupt*/ NVIC_SetPriority (USB_IRQn, 1); /*2nd priority--is it correct??*/ void QEI_IRQHandler(void){ USB_INT32S fdw; fdw = FILE_Open(FILENAME_W, RDWR); if (fdw>0) { *UserBuffer=LPC_QEI->QEITIME; FILE_Write(fdw,UserBuffer,4); FILE_Close(fdw); }else{ return; } LPC_QEI->QEICLR = 0xFFFFFFFF; // clear all interrupts }
Is it correct set priority of USB to 0 and QEI to 1??
kind regards
> LPC_QEI->FILTER =???(What should i put??
The time constant of the passive input RC (LC) filter is determined by the PCLK frequency of QEI. It's much less than (1/8 - 1/16) of PCLK QEI FILTER register holds a minimum expected interval of encoder transition, counted in PCLK scale.
> Is it correct set priority of USB to 0 and QEI to 1??
QEI should have the highest priority (0), and USB is assigned to lower priority than QEI.
> I have written below codes to send the data to usb using usbhost lite.
FILE_Open, FILE_Write and FILE_Close are too slow to run in the QEI ISR. Also, it is efficient to write data of sector size at a time.
In the QEI ISR, the timer value is written to a buffer of 1024 bytes. When the buffer holds 512 bytes (sector size) or more, one sector of data is written to the USB drive.
Tsuneo
>The time constant of the passive input RC (LC) filter is determined by the PCLK frequency of QEI. It's much less than (1/8 - 1/16) of PCLK
So, if i want to filter pulses less than 2us, what should i write?(clk=100mhz) LPC_QEI->FILTER =0xc8; /*200*/ Is it correct?
>When the buffer holds 512 bytes (sector size) or more, one sector of data is written to the USB drive.
Oh, I am a beginner! I don't know how to access to the buffer. How can i get access to this Buffer? what should i write instead of *UserBuffer=LPC_QEI->QEITIME; ?? can you help me with the codes? thanks
Thanks Dr Tsuneo Chinzei
But how can i detect that number of bytes written in QEITIME is 512? And how to Empty the buffer after writing data?
An other Question: Is it correct to write LPC_QEI->FILTER =0xc8; /*200*/ to filter less than 2us when clock is 100mhz?
Best Regards?
I still haven't got answered my previous questions! I don't know how to get access to the buffer that included timer(QEITIME) values?
another question: what is the practical difference between set register & enable register(QEISET & QEIIES)? Can you give me an example please?
Amir hejazi1365[at]gmail[dot]com Best regards