Ik wil een usb aansluiting maken op een 18f4550,wat is dan het makkelijkst of het beste .cq voor en nadelen ?
usb rechtstreeks op D+ en D-
of met een ft232rl

Als je gewoon een seriele poort wil emuleren is de FTDI het makkelijkste. Aansluiten en gaan maar.

Wil je met HID oid experimenteren kan je beter de rechtstreekse weg nemen, en de microchip usb stack eens goed doornemen, of zelfs gewoon deze als library gebruiken.

Het aller makkelijkste is het gebruik van een ft232rl, dan kun je namelijk via de gewone uart babbelen alsof het een seriële poort is en hoef je je niet druk te maken over buffers, endpoints, drivers en andere zaken.

Maar.. tegenwoordig komen er ook meer USB libraries beschikbaar, en die maken het ook makkelijker om met een 18f4550 USB te babbelen.

Als je ervaring hebt met microcontrollers kan het USB verhaal een leuke, maar lastige uitdaging zijn. Als je alleen maar even wilt babbelen tussen PC en PIC, dan is een FT232 misschien wel geschikter.

Op de site van microchip vind je alle benodigde bibliotheken en een volledig raamwerk die een virtuele com-poort over USB implementeerd voor een PIC18F4550 (of equivalent). Hiermee is het zeer eenvoudig om te communiceren met je PC via de ingebouwde USB-poort. Het is voor je programma-code net alsof je met een gewone seriele poort praat. Ik heb er zelf reeds verschillende keren gebruik van gemaakt, ook in vrij complexe projecten.

Enige nadeel van het raamwerk van microchip is dat het volledig op polling is gebaseerd. Je programma moet je dan inpassen in een initialisatie-functie en een functie die door het raamwerk voortdurend wordt uitgevoerd. Op zich geen probleem, want meestal zit de hoofdbrok van je code toch in een "while(true)"-lus. Je moet er wel voor zorgen dat het uitvoeren van deze hoofdfunctie niet te veel tijd in beslag neemt, of je kan problemen hebben met de stabiliteit van de USB-connectie. Maar in de praktijk doet zich dit maar voor bij rekenintensieve programma's, en dan nog valt dit vrij eenvoudig op te lossen. Voordeel van het polling-mechanisme is dan weer dat alle interrupt-resources en dergelijke vrij blijven. Mocht je een interrupt-gebaseerde versie van het raamwerk verkiezen, op internet zijn er verschillende te vinden, gebaseerd op het originele raamwerk van microchip.

Ik zou zeggen, probeer de ingebouwde USB-poort van de 18F4550 eens, dankzij het uitgebreide raamwerk is een virtuele compoort zeer eenvoudig te implementeren, je hebt geen externe USB->serieel chip nodig, je hebt veel meer flexibiliteit (je kiest b.v. zelf met welke naam een apparaat zich aan de computer aanmeldt, ...).

Als je meer geavanceerde dingen met USB wilt doen, zal je je niet meer kunnen beperken tot een virtuele com-poort. Het is dan sowieso noodzakelijk om gebruik te maken van de ingebouwde USB-functionaliteit van de 18F4550. Dit is wel direct een heel stuk complexer, want USB is geen eenvoudig protocol.

Ik denk dat je je vraag wat verder moet specificeren.
Wat wil je ermee gaan doen?

Zoals ScuD al zei, HID is ook mogelijk direct op de PIC en scheelt weer drivers installeren op de pc.

Met welke taal (talen) werk je (zowel op je PC als de PICfirmware)? Het Microchip-raamwerk gaat uit van C.
Ben je bekend met HID?

@EdwinNadorp De usb aansluiting regeld straks verschillende events die ik met de pc aanpas en naar de pic stuur en omgedraaid als de pic een event registreerd moet deze met opgeslagen worden op de pc bv welk event , tijd

@BenZ Ik programmeer met proton
HID wel van gehoord maar ik heb me er nog niet in verdiept

Overgaan op rechtstreekse USB vergt nogal wat gedoe. De simpelste manier is HID-communicatie, omdat daarvoor standaardprotocollen in de systeemsoftware zitten. Die procollen moet je wel aanroepen en die kunst moet je onder de knie krijgen, bv. in visual basic. Daarnaast moet je in je 4550 firmware zetten die de HID-communicatie afhandelt en tevens doet wat je met je PIC wilt doen. Die firmware kun je maken met C (en dan kan je veel overnemen van Microchip), in assembler (waarvoor allerlei lieden voorbeelden hebben) of in sommige basic-dialecten voor de PIC (bv. mikrobasic). In alle gevallen moet je je wel verdiepen in de wijze waarop HID en USB werken. Daar gaat nogal wat tijd en moeite in zitten, maar uiteindelijk loont dat wel.
Van HID-firmware op assemblerbasis en van PCsources voor VisualBasic heb ik voorbeelden.
Wat wil je precies (zowel met je PIC als op je PC)?

@BenZ De usb aansluiting regeld straks verschillende events die ik met de pc aanpas en naar de pic stuur en omgedraaid als de pic een event registreerd moet deze met opgeslagen worden op de pc bv welk event , tijd

Dat heen en weer doorgeven van info kan dat op basis van polling of wil je aan beide zijden met interrupts werken? Om hoeveel bytes gaat het en met welke intervallen? Houdt je PIC zich alleen maar bezig met iets eens in de zoveel tijd iets te meten? Waar komen de events van de PC vandaan? Enzovoorts, enzovoorts.
Gebruik eens andere termen dan events en vertel in normaal nederlands wat er gebeurt.

Op 1 februari 2010 11:25:28 schreef BenZ:
Met welke taal (talen) werk je (zowel op je PC als de PICfirmware)? Het Microchip-raamwerk gaat uit van C.

Er is ook een raamwerk in Jal beschikbaar, en op Olin Lathrop heeft een framework voor assembler (met zijn eigen preprocessor).

Iets wat ook leuk is om eens mee te experimenteren is de "bit whacker", eenmalig een .hex in je 18F45xx programmeren en je hebt naast de USB bootloader een simpel systeem om via een virtuele seriële poort over USB allerhande commando's te sturen. Bekijk het eens, kan zijn dat het niet voldoet maar het is waarschijnlijk een handige basis om van te vertrekken.

@BenZ Dit moet een soort toegangscontrole / alarmcentrale worden
bv met pincode/kaartlezer deuren openen dus eerst kijken wie waar binnenmag deze gebeurtenissen worden opgeslagen op de computer om later te kijken wie er binnen is geweest .
verlichting sturen

In welke taal denk je je PC te programmeren?

In Proton heb je de EasyHID USB wizard. Dat kun je toch gebruiken?

[Bericht gewijzigd door hadv op (12%)]

@BenZ Met visual basic denk ik (dit is het enigste wat ik voor handen heb )
@hadv EasyHID USB wizard daar ga ik even naar kijken dit kan dan rechtstreeks van de pic of heb ik hier een ft232rl voor nodig? rechtsreeks dus

Easy Hid bevat ook generatoren voor de PC kant (VB5, Delphi5 en VC6). Dus waarom het moeilijer maken...

Let op! De default naam van de directory waar de generatoren in staat is fout. Dit moet zijn (ProtonIde\Plugin\Easy-HID\)"CodeGenerators". Als je dat niet verandert doettie het niet.

Ben even met EasyHID USB wizardbezig geweest maar ik kan bij 4de pagina niks invullen bij usb device compiler en bij application compiler.
Als ik dan op next druk krijg ik de laatste pagina project generation en daar staat dan:
generation errors
easyHID Error: unable to create project INI file

Als je nou mijn vorige post hebt gelezen, en daarnaar hebt gehandeld, dan zou dit probleem moeten zijn opgelost.

@hadv dit heb ik gedaan maar nog steeds errors

Bij mij lostte dat het probleem wel op.
Overigens had ik deze aanpassing op het online forum gevonden.

[Bericht gewijzigd door hadv op (17%)]

dit topic is pas een maand oud en aangezien mijn probleem hier behoorlijk relevant is kwa problemen met de easyHID dacht ik dat hij hier wel bij kon.

Ik kan het namelijk nergens vinden.

ERROR: 'Error in Device Info Section of the PPI file.!

Ik kan hem niet aanklikken en hij geeft geen verdere info ik ben nu een uurtje aan het rommelen maar kom er niet uit overigens kan ik "de PPI file" niet vinden is dit een bestand ?
Ik heb het programma van de easyhid nog NIET aangepast op het kristal na 48 > 20 Mhz, als ik dit terug verander naar 20 dan maakt dat niets uit.

Dank bij voorbaat.

Kijk eens in de PPI map.

ohja ik heb hem gevonden maar wat zou er fout zijn het is gewoon de PPI file van de nieuwste protonide het is een dikke 1300 regels code -_-'

Iemand enig idee

Dit is het pic device info gedeelde als ik het goed begrijp


PICmicro Information Definitions
[INFOSTART]
CORE=16
MAXRAM=2048
MAXCODE=32768
PORTS=5
ADC=10
ADRES=10
EEPROM=256
RAM_BANKS=8
BANKA_END=0X005F
UART=1
USB=1
FLASH_WRITE=1
MSSP=2
BLOCK=32    ; Size of the Code Memory Write Segment (in Bytes)
ERASE=64    ; Size of the Code Memory Erase Segment (in Bytes)
Debug=1
[INFOEND]

[Bericht gewijzigd door Kevinoud op (57%)]