PIC18F4550 aansturen a.d.h.v. windows applicatie

Hallo iedereen,

Voor een project waar ik aan bezig ben moet het mogelijk zijn om via een windows PC een PIC18F4550 aan te sturen a.d.h.v. USB.
De PIC18F4550 is hier ideaal voor aangezien deze 2 data pinnen bezit waar we direct de D- en D+ van het USB signaal kunnen op aansluiten, vandaar ook mijn keuze.

Na heel wat zoek werk begin ik eindelijk te verstaan hoe dit mogelijk gemaakt zal worden.
Ik zal 2 programma's schrijven, 1 in MPLAB IDE voor mijn PIC en 1 in Visual Studio voor mijn Windows applicatie te maken.
Daarnaast zal ik er ook voor zorgen dat a.d.h.v. een bootload optie de PIC herprogrammeerbaar is via de PC (USB).

Het is ook belangrijk dat de PIC herkent wordt door de PC door de juiste drivers te installeren zodat er een virtuele COM poort gecreëerd wordt.

Ik heb gemerkt dat er op het internet heel wat onduidelijkheid is hier rond en daarom wil ik deze discussie aanmaken om te kijken wat er meestal onduidelijk is aangezien ik een document zal maken waar ik alles stap voor stap zal uitleggen om het op die manier wat duidelijker te proberen maken zodat indien jullie hier ook willen aan beginnen niet eerst vele uren moeten zoeken naar soms onduidelijke informatie.

Ik vind namelijk heel wat informatie op het internet maar veel is verouderd waardoor er vaak links niet meer werken. Ik vind de website van Microchip ook heel onduidelijk, er is heel veel informatie maar alles is moeilijk te vinden en van elkaar te onderscheiden, veel verschillende programma's, soorten bootloaders...

Voor mijn programma zal ik mij baseren op een voor geprogrammeerd programma van Microchip.
De interface die gecreëerd gaat worden zal er ongeveer als volgt uit zien.

Indien mensen vragen hebben hierover laat mij maar iets weten.

Zet er een FT232 schakeling tussen. Dan kan via serieel over usb de pic aansturen. Scheelt een hele hoop uitzoek werk.

Shiptronic

Overleden

Ik vermoed dat juist de insteek van Vincent is om dat deel hier juist uit te leggen. Ik lig in ieder geval klaar ;)

En vind je het ook niet een beetje dubbel? Je kies juist die PIC voor die functie, en dan ga je er een FT232 bij zetten. Klinkt als een aanhanger mee nemen om boodschappen in te doen, omdat je niet weet hoe je de kofferbakklep open maakt :)

@TS, wat kan jouw programma (nu) wat ik niet met een terminal programma kan ?

[Bericht gewijzigd door Shiptronic op woensdag 1 maart 2017 10:57:59 (10%)

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Lambiek

Special Member

Daar ben ik ook benieuwt naar. :) Dus brand maar los zou ik zeggen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik ook...ben benieuwd..heb in een verleden wel eens met die usb functionaliteit gestoeid met een 18F4550. Maar nooit aan de praat gekregen. Heb die usb functionaliteit bij latere pic's niet meer gezien maar kan me goed vergissen.

Arco

Special Member

Bijna alle nieuwere pictypes zijn er ook in een USB uitvoering...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 1 maart 2017 18:16:44 schreef Arco:
Bijna alle nieuwere pictypes zijn er ook in een USB uitvoering...

Heb even gekeken op de microchip site..klopt. Maar ben niet meer bezig met microchip. Ben zelf wel benieuwd hoe met name de software voor die usb functionaliteit nu werkt.

Arco

Special Member

Maar ben niet meer bezig met microchip.

Atmel is nu ook Microchip... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 1 maart 2017 20:25:16 schreef Arco:
[...]
Atmel is nu ook Microchip... :)

Ok ben niet meer bezig momenteel met de PIC lijn binnen Microchip..*zucht*

Ik heb voor zowel de 18F4550 als de 18F14K50 software geschreven die gebruik maakt van het HID protocol
Programmeertaal PIC: PicBasic
Programmeertaal PC: Delphi

Just find out what you like and let it kill you
Shiptronic

Overleden

Voor seriële zaken kan je toch CDC gebruiken?

[Bericht gewijzigd door Shiptronic op donderdag 2 maart 2017 12:35:02 (16%)

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Arco

Special Member

Mikrobasic heeft een HID terminal en een HID bootloader...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 2 maart 2017 11:57:02 schreef hadv:
Ik heb voor zowel de 18F4550 als de 18F14K50 software geschreven die gebruik maakt van het HID protocol.

En werkt dat goed?

Als je haar maar goed zit, GROETEN LAMBIEK.

Als je eenmaal weet hoe je de header moet schrijven voor de PIC en hoe je in Visual Basic met HID moet werken, dan werkt dat gewoon goed ja...

Maar daar ben je wel ff zoet mee, zeg maar....

[Bericht gewijzigd door Roches op donderdag 2 maart 2017 21:45:08 (15%)

Domoticz en ESP8266, goede combo!!!

Op 2 maart 2017 15:26:08 schreef Lambiek:
[...]
En werkt dat goed?

Perfect, aan de PC kant gebruik ik de mcHid.dll.

[Bericht gewijzigd door hadv op vrijdag 3 maart 2017 13:53:45 (14%)

Just find out what you like and let it kill you

Hallo iedereen,

Mijn project is zo goed als af, mijn Firmware voor op mijn CU (PIC) is volledig af en werkt en mijn Host Software in Visual Studio is ook zo goed als af maar ik heb hier nog een vraag omtrent.

Binnen mijn programma heb ik een timer met een interval van 50 (dit is nodig omdat er zo om de 50ms gekeken word of er iets veranderd wordt op de USB lijn).
Het probleem is nu dat ik een listview gemaakt heb die aanheeft wat het programma precies aan het doen is, maar dit wordt niet 1 x naar mijn listview gestuurd maar wel om de 50ms...
Hoe kan ik ervoor zorgen dat dit maar 1x gebeurt?

private void ClickMyRadioButton1()
{
if (radioOff1.Checked)
{
radioOff1.PerformClick();
ListViewItem lvi = new ListViewItem("All USB's are off");
listView1.Items.Add(lvi);
}
}

private void tmrUSB_Tick(object sender, EventArgs e)
{
//Everything in here is repeated constantly
USBObject.receiveViaUSB();
listView1.EnsureVisible(listView1.Items.Count - 1);
if ( tabPage1 == tabControl1.SelectedTab)
{
this.radioOff2.Checked = true;

if (radioOff1.Checked == true)
{
USBObject.fromHostToDeviceBuffer[1] = USB_OFF;
ClickMyRadioButton1(); //This is what I only want to send one time to my ListBox and not 50 times a second
}
}

[Bericht gewijzigd door pierreke101 op woensdag 29 maart 2017 10:20:09 (41%)