Post
Topic
Board Hardware
Re: Klondike - 16 chip ASIC Open Source Board - Preliminary
by
BkkCoins
on 03/07/2013, 11:19:56 UTC
I've solved the USB disconnect issue - I think. It hasn't done that for quite a while now. It was an issue with interrupt handling in the PIC. But the solution creates a timing sensitive condition where I've had to make the USB have priority and this could cause result bytes to be misread. I'm looking for a way to handle this now. Result bytes need to be handled in < 8uS and originally I had this block all interrupts to catch them (32uS blackout), but this is enough to throw the USB into fits, so I need a way they can co-operate but guarantee the result bytes get moved.

Ever since upgrading to cgminer 3.3.1 I've noticed that the screen updates very slowly. Sometimes it doesn't output any info for many seconds - up to 10 seconds. I have no idea what change was made that causes this now. If anyone knows why this happens please inform me. It seems to still work and the log file has entries every 2-3 seconds but the screen sometimes doesn't seem to get it's update.

I've also enhanced the PIC code to use a circular buffer for USB writes to host so that it can handle collisions gracefully. I'm not sure if this was part of the issue but I do see some data overruns which this should prevent.

edit: Actually the result overrun doesn't seem to be an issue because if an that occurs it increments the PIC error count and I've yet to see that occur. I just modified the result capture to handle multiple bytes in one ISR call, which means it can stand up to 16 uS of USB takeover.

Knock on wood - I'm seem to be seeing better capture now as I've hit 8 accepted nonces without HW errors. So I smell improvement.