Maybe is screwy, but it have everything I need for this project, and it's cheep. Thank you
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.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!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.
DT
I'll give it try tomorrow.
Thanks Darrell
And obviously, it doesn't seems Microchip have documented that bug... or again, I'm blind
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
I just recompile CDC from last attempt and it is working. Now just to try HID with VB6.
You save my butt, again
I think it's time to retire one of my signature quotes ...
They don't always do what you tell them.
But I'm definitely keeping this one ...
DT
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:
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.
DT
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!
Last edited by ScaleRobotics; - 24th August 2011 at 03:46.
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.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
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
DT
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:
PBP & VB6 files:
DT_HID260 Template.zip
If knobs doesn't appear in vbForm, you need to add it in components.
Bookmarks