Aansluitend op mijn eerdere opmerkingen: het viel mij wel op dat jouw testprogramma vrolijk lijkt te werken, zonder dat er een USB kaart inzit; zou daar niet op getest moeten worden (zoals ook het origineel doet)?
Antwoord: Ja natuurlijk en daar test ik ook op!!!.
Ik heb er voor de test (mijn C# versie) bewust gekozen om dan géén boodschap te geven en vrolijk te blijven wachten tot er een PIC wordt aangesloten.
Ik doe vóór iedere Send/Recieve een "Open pipes" en erna een "Close Pipes" Dat kost wat CPU tijd, maar dat heb ik over voor de flexilbiteit met testen.
Op deze manier kan ik de PIC resetten, nieuwe firmware code laden en weer aanzetten en dan loopt het programma vrolijk door, want hij pikt de PIC weer gewoon op.
Dus in feite check ik dus tijdens iedere timer interrupt, dus vóór elke bewerking of de PIC er is. Alleen geef ik geen error boodschap. Omdat ik de scans in alle versie met een timer interupt doe, blijft het programma ook niet hangen etc.
In de VB6 (en VB.NET) versies die ik in dit forum plaatste controleer ik wel of een PIC is aangesloten en doe ik één keer een openpipes en sluit de pipes pas als ik het programma sluit. Maar (zie die thread op dit forum) dat leverde dus ook commentaar op (zie daar). Tijdens het debuggen blijven de pipes open en bij herstart krijg je dan een error.
Let op het zijn test programma's. Gemaakt om de PIC met zijn originele firmware code te testen en als uitgangspunt te dienen voor uitgebreide eigen programma's. De VB6 en VB.NET versies zijn gemaakt op een stromachtige middag/nacht zonder dat ik uitgebreid heb getest.
In mijn definitieve programma's zal dit allemaal iets anders gaan. Daar open ik de pipes één keer, en bewaak of ze "open" blijven etc. Maar het zal wel flexibel genoeg zijn om on-the-fly PIC's erbij te zetten of eraf te halen, zonder dat het programma er de brui aan geeft zoals de orignele TAD_V.
Mijn controle programma moet meerdere PIC's aankunnen met meerdere identiteiten.
Van de originele Firmware in de PIC is bij mij niets meer over. Ik heb nu een "digitale I/O" FW gemaakt die 64 buttons en 64 led's kan lezen/besturen. 8 of 16 buttons zijn te vervangen door 4 of 8 rotary encoders. De 64 leds zijn individueel bestuurbaar. Het zouden ook 8 7-segment displays kunnen zijn. Maar daarvoor maak ik een tweede kaart met FW ("display card") die gaat 16 (of meer) 7-segment displays aansturen. (allemaal zonder enige andere chip!)
Ik heb mijn PIC18 processors allemaal "USB programmable gemaakt". Dat wil zeggen dat ik geen programmer meer nodig heb om nieuwe firmware te laden als de PIC eenmaal in de schakeling zit. Zie HG 2007, blz 74.
Zie mijn weblog over mijn project :
phpjj.web-log.nl Peter.'