Maybe is screwy, but it have everything I need for this project, and it's cheep. Thank you;)
Printable View
Maybe is screwy, but it have everything I need for this project, and it's cheep. Thank you;)
Yeh, I've seen that "feature" in a number of the J series parts, not just the J50.Quote:
But one way it is a bit odd, is it shares addresses for SFR's. See: 5.3.5.1 Shared Address SFRs
It doesn't seem to have anything to do with USB register access, though.
Darrel talks about it in post 19 of this thread:
And in due time, we will see his work around!Quote:
There is something seriously messed up with these chips. And it's all Microchip.
The SFR's from address F40h to F5Fh cannot be accessed with either the MOVFF opcode or indirectly through the FSR's.
They can only be accessed by setting BSR to bank15 and using "banked" opcodes like movf, movwf, bcf etc.
I realize that those SFR's are outside of the ACCESS bank, but that should not affect MOVFF or indirect addressing thru FSR's.
That range of SFR's contains many of the USB modules registers.
Other USB module registers such as UCON USTAT etc that reside in the access bank can be written/read with all 3 methods FSR, MOVFF and banked. So it's not related to the USB module itself.
The USB libraries rely heavily on MOVFF and FSR's.
I have found nothing in the errata or datasheet that mentions this behavior.
WOW, I've been chasing my tail, and apparently for not.
The MPASM that comes with MPLAB 8.73a was generating incorrect opcodes for the banked instructions.
This was making me think things were happening in the chip that should not have been happening.
The actual silicon in the xxJ50's is not the problem.
There is a new version MPLAB 8.76 which has fixed the errors.
Compile your USB programs using the new assembler, and walla, working USB.
There are other chips that will be affected by the problem, and it's not only USB that will be affected, so it is recommended that everyone with PBP 2.60 or later upgrade MPLAB to a version higher than 8.73a.
I'll give it try tomorrow.
Thanks Darrell
And obviously, it doesn't seems Microchip have documented that bug... or again, I'm blind
I just recompile CDC from last attempt and it is working. Now just to try HID with VB6.
You save my butt, again:D
I think it's time to retire one of my signature quotes ...
Attachment 5905
They don't always do what you tell them. :eek:
But I'm definitely keeping this one ... :)
Attachment 5906
I have installed MPLAB8,76. Now I get CDC to work on 2.60C, but I don't get the same file to work with PBP3.
But I am wondering where PBP3 is looking for MPLAB or MPASM? 2.60 allowed you to select the location for PBP, and it also allowed you to show it where the assembler was located. In PBP3 I get this option:
Attachment 5907
How am I supposed to enter them both? Or are they really supposed to be in the same place??
In the Start menu, go to All Programs > PBP3 from melabs > MPASM-MPLAB setup.
It allows you to set the path to MPASM.
Thanks Darrel. I had some weird behavior in my computer. PBP3 kept defaulting to MPASMX, no mater how I set it, I'd check back, and it was set to MPASMX. So after removing the Microchip directory, and re-installing MPLAB 8.76, I was able to get PBP to settle on C:\Program Files\Microchip\MPASM Suite . Now CDC and HID work for the 18F67J50 with PBP3.0! Thanks for routing that out for us!
I have to say I'm glad for Melabs it's not another Microchip twist who had to implement another .HWLIB thing.
Finger crossed for the next USB pic though... BTW, it's about time Microchip release USB3 AND/OR Thunderbolt.
Darrel,
I try your DT_HID260, and it work on first attempt. It's very simple to use.
But I have question.
If I want to use 64 byte, #define USB_EP0_BUFF_SIZE should be 64, is that correct?
Thanks
No, endpoint 0 is for setup and control transfers. You should not change that.
And you should not change anything inside the DT_HID260.pbp file.
Set the report sizes with the defines...
Code:;--- Setup USB -------------------------------------------------------------
INCLUDE "DT_HID260.pbp"
DEFINE USB_VENDORID 6017
DEFINE USB_PRODUCTID 2000
DEFINE USB_VERSION 1
DEFINE USB_VENDORNAME "Darrel Taylor"
DEFINE USB_PRODUCTNAME "DT_HID"
DEFINE USB_SERIAL "001"
DEFINE USB_INSIZE 64 ; IN report is PIC to PC (8,16,32,64)
DEFINE USB_OUTSIZE 16 ; OUT report is PC to PIC
DEFINE USB_POLLIN 10 ; Polling times in mS, MIN=1 MAX=10
DEFINE USB_POLLOUT 10
Ok. Everything working fine.
Thanks again.
Here is my template. Maybe it will be useful for someone.
Application for PC is done in VB6. Screen shot:
Attachment 5908
PBP & VB6 files:
Attachment 5909
If knobs doesn't appear in vbForm, you need to add it in components.