Hallo zusammen,
Ich benutze einen PIC18F2455 und MPLAB IDE. Jetzt baue ich auf dem
USB-HID-Mouse-Beipiel von Microchip auf und möchte die Übertragung von 3
Bytes auf 5 Bytes ändern. Also ich möchte an den PC immer 5Byte-Packete
per USB schicken. Ich habe schon ein ganzen Haufen Sachen ausprobiert,
aber immer wenn ich irgendwas in der Firmware änder kommen entweder
immer noch 3 Bytes, oder er sendet gar nichts mehr (meldet sich
erfolgreich an und dann tut sich nix mehr).
Kann mir jemand sagen, wo ihr die Stellschraube ist; Welche Variablen
ich hier umändern muss?
Danke für eure Antworten!
Gruß Tobias
> Ich habe schon ein ganzen Haufen Sachen ausprobiert
Zum Beispiel?
Üblicherweise würde ich dort ansetzen, wo das Paket geschnürt und
versendet wird, in der Funktion "Emulate_Mouse(void)":
//increment the counter of when to change the data sent
16
movement_length++;
17
}
Wenn Du hier die Buffergröße auf 5 Bytes erweiterst und dann aus der
0x03 eine 0x05 machst, sollten auch 5 Bytes übertragen werden.
Zusätzlich musst Du noch die Endpoint-Größe in usb_config.h anpassen
1
#define HID_INT_OUT_EP_SIZE 3
2
#define HID_INT_IN_EP_SIZE 3
... die Größe des Endpoint Descriptors in usb_descriptors.c ändern...
1
/* Endpoint Descriptor */
2
0x07,/*sizeof(USB_EP_DSC)*/
3
USB_DESCRIPTOR_ENDPOINT,//Endpoint Descriptor
4
HID_EP|_EP_IN,//EndpointAddress
5
_INTERRUPT,//Attributes
6
DESC_CONFIG_WORD(3),//size
7
0x01//Interval
...und natürlich den "Class specific descriptor - HID mouse" in der
gleichen Datei danach anpassen, was und wie Du übertragen möchtest.
Danke für deine schnelle Antwort!
Diese Variablen habe ich alle geändert, aber es funktioniert immer noch
nicht. Der PIC versucht jetzt die Verbindung immer wieder aufzubauen,
schickt dann einmal 5 Byte und baut die Verbindung dann wieder auf - so
mein ich das auf jeden Fall zu sehen, wenn ich einen USB-Tracker
dazwischen hänge. Wenn ich HID_INT_IN_EP_SIZE = 3 setze und
HIDTxPacket(buffer, 3) sende funktioniert alles Problemlos
Ich schick mal mein (auf 5-Byte geänderter) Projektordner mit.
Vielleicht sieht noch jemand einen Fehler.
du hast da ne reportsize von 1. Das heißt 1Bit. Jede taste wird
sozusagen auf ein Bit gemappt. wenn du 5 hinschreibst, dann hättest du 5
tasten. dann braüchtest du nur 3 padding bits.
unten hab ich ja die reportsize auf 8 bit geändert, also 1 byte.