Ich brauche Hilfe bei der USB-HID Firmware für einen PIC18F2550 Die verwendete IDE : MPLAB X IDE v5.25, Compiler XC8 v2.10 Eine bestehende Relaykarte für spezielle Messzwecke soll auf USB umgestellt werden. Verwendet wird dort der PIC18F2550. Zur Zeit steuert ein Windows10 PC (c# .net App) die Karte über die serielle Schnittstelle. Die Anforderungen an die Kommunikation sind niedrig. (Hin und wieder wird ein Relay umgeschaltet und ein ADC wert zum PC übertragen) Die Hardware ist für USB vorbereitet. (20MHz Quarz, 1µF an VUSB). Bei der Umstellung auf USB gibt es Probleme. Leider konnte ich kein USB-HID Beispiel für diese MCU für XC8 Compiler finden. Ich habe ein Beispiel aus der letzten Microchip MLA library (v2018_11_26) für einen pic18f46j50 als Startpunkt genommen. USB_Device_-_HID_-_Mouse Nach wenigen Modifikationen (Portanpassung für zwei LEDs und eine taste) konnte ich das Projekt für den 18f2550 kompilieren und flashen. Nach dem anschließen des (pic18f2550) an einen windows10 PC über USB, wird es als Maus richtig erkannt. In diesem Beispielkode sollte sich der Mauszeiger in kreis bewegen. leider passiert nichts. (keine Datenübertragunbg) Als nächstes habe ich ein anderes beispielprogram genommen. USB_Device_-_HID_-_Custom" für pic18f46j50. Nach kleinen Modifikationen (wie oben, Portanpassung) konnte ich das Programm kompilieren und flashen. Es wird vom PC wieder richtig erkannt, eine Datenübertragung ist leider nicht möglich. (zu diesem Beispiel gibt es eine kleine Windows App womit man eine LED toggeln und eine Potispannung auslesen kann. Das LED toggeln und die Auslesung der Potispannung funktionieren nicht) Ich habe in Datenblättern den USB-Kapitel für den pic18f2550 mit dem pic18f46j50 verglichen. Sie scheinen identisch zu sein. Der einzige Unterschied den ich finden konnte war in der usb-ram section. pic18f46j50 usb ram : 0x0h .. 0xebfh (banks 0 to 14) pic18f2550 usb ram : 0x400h .. 0x7ffh (banks 4 to 7) Der PIC18F2550 kann nur auf bestimmte Speicherbereiche zugreifen. Könnte es daran liegen das ich keine Datenübertragung sehe? Vielleicht hat hier jemand Erfahrung mit den USB Makros für die Pics und könnte mir einen Tipp geben. Gibt es ein USB-HID Beispiel für den pic18f2550 Und XC8 Compiler? (Was ich brauche ist ein fertiges einfaches Beispielprojekt als Basis) Gruss, Jan
Ich habe leider keine Erfahrung, aber vielleicht kann dir das Projekt USB4all von Sprut weiterhelfen: https://www.sprut.de/electronic/pic/projekte/usb4all/usb4all.htm PIC18F2455/PIC18F2550, mit Quelltexten für MCD und CDC. Gruß Erni
Ihr verwendet aktuell den PIC18F2550. Das ist ein sehr alter PIC. Es gibt inzwischen neuere Typen: PIC18F25K50 (5.5V tauglich) und PIC18F25J50 (3.3V). Die Chips sind untereinander pinkompatibel. https://www.microchip.com/wwwproducts/en/PIC18F2550 https://www.microchip.com/wwwproducts/en/PIC18F25K50 https://www.microchip.com/wwwproducts/en/PIC18F25J50 Es könnte weniger Arbeit sein, einfach auf einen aktuellen PIC umzusteigen als die recht neue MLA auf den ziemlich alten PIC zurückzuportieren. Und der PIC18F25J50 ist aus der gleichen Familie wie der PIC 18F46J50, von dem Du die Beispiele hast. fchk
Jan schrieb: > Der PIC18F2550 kann nur auf bestimmte Speicherbereiche zugreifen. Könnte > es daran liegen das ich keine Datenübertragung sehe? Ja, das kann sehr gut daran liegen. Such mal in deinem Projekt nach so was:
1 | #define FIXED_ADDRESS_MEMORY
|
2 | |
3 | #define HID_CUSTOM_OUT_DATA_BUFFER_ADDRESS 0x500
|
4 | #define HID_CUSTOM_IN_DATA_BUFFER_ADDRESS 0x540
|
(Auf den 25K50 umsteigen, wäre wahrscheinlich trotzdem sinnvoll) Vor Jahren hatte ich ein USB Demo Projekt, welches aber nicht ohne einige Änderungen mit v2.10 compilierbar sein dürfte. Siehe Anhang (Configuration mit 4550) und http://picforum.ric323.com/viewtopic.php?f=46&t=103 PS: auch die Hinweise auf CDC aus dem MCHP Forum sollten bedacht werden.
:
Bearbeitet durch User
Volker S. schrieb: > welches aber nicht ohne > einige Änderungen mit v2.10 compilierbar sein dürfte. XC8 auf C90 Standard und die ADC Funktionen selber implementieren, da keine PLIB mehr vorhanden ist (OpenADC(), ConvertADC(), BusyADC()) <edit> gerade mal in die MLA 2018 geschaut. Das passendste Projekt wäre picdem_fs_usb.x. Das verwendet einen 4550.
:
Bearbeitet durch User
Danke für die zahlreichen Antworten. Ich werde manches ausprobieren und mich nochmal melden.
Vielen Dank an Volker S. für den Hinweis auf das Demoprojekt picdem_fs_usb.x in der MLA 2018. Das habe ich leider übersehen, nicht gefunden bzw. falsch gesucht. Das ist genau das was ich brauche. Ich habe es ausprobiert, die MCU von 18F4550 auf 18F2550 geändert, und alles funktioniert wie erwartet. Der Grund warum das andere Projekt nicht lief war wahrscheinlich die Sache mit dem FIXED_ADDRESS_MEMORY. Die Datei fixed_address_memory.h war in dem Ursprungsprojekt (für den pic18f46j50) gar nicht vorhanden, da das USB Macro des neueren PIC diese RAM Zugriffsbeschränkungen nicht hat. Danke an Frank für den Hinweis mit dem neuerem pic PIC18F25K50. Den schaue ich mir auch an. Der 18F2550 Ist tatsächlich sehr alt. Volker S schrieb : >>PS: auch die Hinweise auf CDC aus dem MCHP Forum sollten bedacht werden. Ich wollte custom HID descriptor benutzen und nicht den CDC dienst. (natürlich muss ich die jetzige Windows App ändern, sie ist sehr rudimentär und muss sowie so geändert werden). Das mit der seriellen Schnittstelle finde ich nicht sehr benutzerfreundlich. Jedes Mal muss man am Anfang den richtigen comport öffnen. Ist custom HID nicht prädestiniert für Fälle wo selten wenig Daten übertragen werden? Gruss, Jan
Mir gefällt HID auch sehr gut. Ist inzwischen besser geworde, aber bei Windoof war es immer ein Gschiss mit dem Treiber für CDC. Das Hauptargument für CDC war eine evtl. vorhandene Software auf dem PC. Wenn da eh was gemacht wird, dann fällt das IMO weg. Mit HID kann man einiges an Daten übertragen. Bei füll Speed theoretisch 64000 Bytes/s.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.