→ MasterChang:queue 07/29 17:09
→ dexders:現在是開一個128byte的陣列 當收到\n或\r之後全部丟到usb 07/29 17:12
→ dexders:endpoint去傳輸 這邊不用firmware控制 但就是來不及塞... 07/29 17:12
→ MasterChang:你程式規劃有問題,UART是超慢設備了.... 07/29 17:28
→ dexders:RI進來就塞一次buffer 塞到滿或是符合條件送出 這樣應該好 07/29 17:34
→ dexders:吧? 這困擾我很久了 07/29 17:34
→ dexders:也不能用while(1)來收 會卡住其他東西 07/29 17:36
推 WolfLord:我用pic18F24k50的作法是用ring buffer,不管他是不是 07/29 18:16
→ WolfLord:end of line,只要mcu有空buf有字就丟。累積太多字丟usb 07/29 18:17
→ WolfLord:有時候在115200以上速度丟一連串字UART會發生OVERSPEED 07/29 18:18
→ WolfLord:因為PC處理USB的時間也是批次批次的,好像一秒才二十幾次 07/29 18:20
→ WolfLord:(感覺上,與技術規格無關)﹍ 07/29 18:20
→ dexders:我虛擬出來的virtual comport大概是10ms掃一次 一次傳1k 07/29 18:26
→ dexders:byte沒問題 fx2lp的USB不需要太多firmware控制 07/29 18:28
→ dexders:現在想到一個問題 MCU是用3.3v target 2.8v 這樣會有關係? 07/29 18:28
→ dexders:重複送同一個字串 有時候很完整 有時候會掉10byte以上.... 07/29 18:29
推 WolfLord:CPU端pull一根4k7看看吧 07/29 18:39
推 ksmrt0123:收到一串資料後, 要等這串資料用USB傳回PC才能再開始收 07/30 09:13
→ ksmrt0123:uart資料對不對? 對的話你需要 double buffering 07/30 09:13
→ ksmrt0123:CY7C68013A的51是4T又可跑到48MHz算蠻快的了 07/30 09:15
→ dexders:封包(n-1)的stop bit跟封包(n)的start bit只隔了1uS... 07/31 23:20
→ dexders:68013A跟得上嗎? 07/31 23:20
→ ksmrt0123:MCU的反應時間不是1uS而是10 bit time, 9600baud有1mS 08/01 09:12
→ ksmrt0123:跟不跟得上要看你在這段時間中要完成多少事 08/01 09:13
→ dexders:我速度是用57600 UART是採用interrupt方式 現在只要收到一 08/01 21:45
→ dexders:個byte就塞進enpoint buffer裡面然後arm endpoint 漏掉的 08/01 21:46
→ dexders:資料比之前少 但是還是會有遺漏 可能是因為 arm endpoint 08/01 21:46
→ dexders:需要SYNCDELAY吧...... 目前還找不到辦法 08/01 21:47