Fórum témák

» Több friss téma
Fórum » PIC - USB - PC projekt
 
Témaindító: JohnyBravo, idő: Szept 26, 2006
Lapozás: OK   16 / 55
(#) watt válasza Braf hozzászólására (») Aug 25, 2009 /
 
A programban hivatkozok egy a linkerben deklarált szekcióra:
  1. #pragma udata BUF512 //lásd: 18f2550sk.lkr
  2.         unsigned char ReceivedDataBuffer[64];
  3.         unsigned char ToSendDataBuffer[64];

Nem mindegy hová kerülnek, mert a további deklarálásokat is elrontja. Magyarul a fene tudja hová kerültek a változók...
(#) Braf válasza watt hozzászólására (») Aug 25, 2009 /
 
Akkor nem értem miért nem dobott fordítási hibát a feloldatlan hivatkozás miatt.


Amúgy, ha kérdeznéd azért kezdtem rögtön egy ilyen "komoly" dologgal: mert pic10,12,16 széria már jól megy asm-ben és általában olyan dolgokat csinálok ahol elkel a pc-pic kommunikáció és laptopon nincs soros port.
(#) watt válasza Braf hozzászólására (») Aug 25, 2009 /
 
A C nem törődik azzal, hogy hol és mennyi memóriát foglalsz le, ez a PC-n futókkal is így van. A fejlesztő dolga, hogy a területeket helyesen kezelje. Ez nagyobb szabadságot ad, viszont ára van. A Basic viszont nagyon megköti a kezet. Van mikor az egyik, van mikor a másik a jó választás. PC-nél én a Basic-re szavazok
(#) Braf válasza watt hozzászólására (») Aug 28, 2009 /
 
Átírtam az egyik mc. által adott usb-hid programot, hogy menjen a te alap fw.-eddel amit publikáltál. Sajnos nem event alapú az olvasás..
VisualStudio 2008 C++ .net.


A HID PnP demo app érdekesebbnek tűnik mert nem használ semmi külső .dll-t. Valami ram fájlt használ olvasási buffernak. Talán át lehet írni, hogy valami függvényt hívjon meg mikor adat érkezik.


Gondolom van 18f14k50-re is usb-HID.
(#) watt válasza Braf hozzászólására (») Aug 28, 2009 /
 
Idézet:
„A HID PnP demo app érdekesebbnek tűnik mert nem használ semmi külső .dll-t.”

Igen, ott valahogy direktben kezelik az API-t. A dll-es megoldásokban a dll-ben van megírva az API kezelés rész, azokat csak hívogatni kell, ezért egyszerűbb. Ha lesz időm és kedven, én is megnézem a gyári forrást, hogyan oldják meg. A programodat, ahogy lesz időm kipróbálom. Miért nem eseménykezelt az olvasás? A gyáriban sem az? Hogy oldod meg, hogy észrevegye, ha jött adat?

Idézet:
„Gondolom van 18f14k50-re is usb-HID.”

Biztosan, de ha nem, akkor szerintem a 4550-est nem nehéz ráilleszteni.

(#) Braf válasza watt hozzászólására (») Aug 29, 2009 /
 
Be van téve egy timer ami 10mS-onként nézi, hogy jött-e adat. Gyáriban sem esemény kezelt. A programok küldenek egy csomagot majd megvárják a visszaérkezőt.

Amit te tettél fel forrást pc-re azt nem sikerült átírni vb.net alá. Pedig találtam vb.net-hez template-t de az is állandóan pointer hibákat dobált.. Ha a .dll-nek meg lenne a forrása az jó lenne.
Amit a microchipes demók használnak mpusbapi.dll az nem tud eseményt átadni vagy függvényt hívni. A forrása a C:\Microchip Solutions\USB Tools\MCHPUSB Custom Driver\Mpusbapi\Dll\Borland_C mappában van (alapértelmezett mappába történő telepítés esetén).

Valahol láttam libusb-vel történő megvalósítást is. Az jó lenne mivel platformfüggetlen. (ami nekem később lényeges lenne mivel minél előbb szabadulni szeretnék win alól, csak hát szinte minden csak ezt támogatja)
(#) watt válasza Braf hozzászólására (») Aug 29, 2009 /
 
Idézet:
„Ha a .dll-nek meg lenne a forrása az jó lenne.”

Jó bizony, de sajna nem tudok róla, hogy lenne.

Azt nem éretem, miért nem működik a .net alatt, habár az igaz, hogy teljesen más alapra épül(.net futtatási környezet). Néhány egyszerű programot írtam C-ben, és basic-ben .net alatt, de nem nyerte el a tetszésem, mert mindent újra kellett volna tanulni. Így maradtam a VB6-nál. Eddig nem volt olyan, amit ne tudtam volna megoldani vele. Ezzel nem azt állítom, hogy mindent meglehet...
(#) szalaizsol hozzászólása Szept 8, 2009 /
 
"PIC - USB - PC projekt
Nekem ilyen megoldásra lenne szükségem, szóljatok ha nem jó helyen járok.
Partnert keresek egy kapcsolás kiépítésére.
Célja:
===================
25 led közül lehessen számítógéppel kapcsolgatni melyek égjenek. Soros porton keresztül egy vezérlővel, a vezérlőt a számítógép kapcsolgatná. (soros, usb, egyéb?)
Mihez?
===================
Parkoló vezérlése. Piros, vagy zöld led kigyújtása.
Feladat:
===================
egy script vagy exe elkészítése, ami a vezérlőt ""vezérli"". És magának a vezérlőnek az elkészítése.

További információt e-mailben tudok adni. Keressetek.
Legjobb egy standard eszköz lenne.
(#) watt válasza szalaizsol hozzászólására (») Szept 8, 2009 / 1
 
Szóltunk.
(#) szalaizsol válasza watt hozzászólására (») Szept 8, 2009 /
 
Szia!
Hová írjak ilyen kérdésben, ha nem ide?
(#) icserny válasza szalaizsol hozzászólására (») Szept 8, 2009 /
 
Idézet:
„Hová írjak ilyen kérdésben, ha nem ide?”

A szakmai kérdéseket természetesen ide írjad, de a partnerkeresés az Apróhirdetések közé való.

Bővebben: Link
(#) icserny válasza icserny hozzászólására (») Szept 17, 2009 /
 
Üdv mindenkinek!

PIC18F87J50-hez tudnátok olyan USB bootloadert ajánlani, amihez van Linux alatt használható letöltőprogram? Parancssori verzió is tökéletesen megfelel...

Amit eddig találtam, az sajnos, csak PIC18F4550-hez és társaihoz jó.
(#) dimetro válasza icserny hozzászólására (») Okt 10, 2009 /
 
Sziasztok!

Kezdő vagyok USB bootloaderes témában!
Csináltam próbát a 18f4550-el és a microchip gyári bootloaderével, a bootloadert beégettem, és a windows xp is felismerte, miután a boot és reset gombot lenyomtam, telepítette a drivert. A PDFUSB-vel
beküldött saját programom - kiválasztottam felül a pic-et, és látta is - viszont nem akar működni, holott működött normál beégetésnél!
Én nekem jelenleg szükségtelen a pic és pc usb-n keresztüli kommunikációja, amelyről nagyon sok cikket és leírást találtam, én csak a bootloader segítségével saját programot akarok égetőeszköz nélkül a
pic-be küldei és használni.
Új projektet hoztam létre, amibe a saját programom mellett a szükséges linker skrip-et is hozzáadtam, a konfigurációs biteket is beálítottam, hiba nélkül lefordul, de miután a PDFUSB-vel beküldöm a pic-be, mégsem működik.
Abban sajnos nem vagyok biztos, hogy jól tettem e, hogy új projektet hoztam létre, és nem vagyok biztos abban sem, hogy a saját kódot nem kell e kiegészíteni még valamivel!
Segítségeteket előre is köszönöm!

(#) icserny válasza dimetro hozzászólására (») Okt 13, 2009 /
 
A probléma ott szokott kezdődni, amikor egy PIC-hez többféle bootloader és ennek megfelelően többféle letöltőprogram és linker script is van. Jól össze lehet őket keverni...

Ráadásul az MHCPUSB bootloader csak fele annyi helyet foglal, mint a HID bootloader, de kell hozzá driver. Ehhez egyébként az rm18f4550 - MCHPUSB Bootload.lkr linker állományt és a PDFSUSB.exe letöltőprogramot kell használni.

Én a HID bootloadert használom (a PIC18F87J50-hez speciel nincs is más), ehhez viszont más linker állomány és más letöltőprogram kell.

Javaslom, hogy ennek ismeretében előbb az előrefordított demókkipróbálásával próbálkozz (azok közül is a a bootloaderedhez való hex állományokkal. A Precompiled Demos/PICDEM FSUSB könyvtárban az MHCPUSB bootloadable mappában vannak a "driveres" bootloderhez való fájlok.

Utána lehet kísérletezni... Az új projekt nem gond, ha tudod, hogy melyiklinker scriptkell és hogy kell a Reset és interrupt vektorokat áthelyezni (lesd ki a mintapéldákból!).



(#) icserny válasza dimetro hozzászólására (») Okt 14, 2009 /
 
Idézet:
„A PDFUSB-vel beküldött saját programom - kiválasztottam felül a pic-et, és látta is - viszont nem akar működni, holott működött normál beégetésnél!”

Éppen most szembesültem ezzel a problémával, s nálam ez lett a megoldás egy egyszerű, interrupt nélküli (ledvillogtató) programhoz!:
  1. #include <p18cxxx.h>
  2. #define REMAPPED_RESET_VECTOR_ADDRESS   0x1000
  3. extern void _startup (void);        
  4. #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
  5. void _reset (void)
  6. {
  7.     _asm goto _startup _endasm
  8. }
  9.  
  10.  
  11. void main(void) {
  12.   // blabla
  13. }

Vigyázat! Ez HID bootloaderhez való! A PDFSUSB bootloaderhez az alábbi definicíót kell berakni:
  1. #define REMAPPED_RESET_VECTOR_ADDRESS   0x0800

Természetesen interrupt használata esetén hasonló módon a magas és alacsony prioritású interrupt vektorokat is "át kell telepíteni", ahogy a mintaalkalmazások main.c állományában csinálják.
(#) dimetro válasza icserny hozzászólására (») Okt 16, 2009 /
 
Köszi szépen a gyors választ! Már működik is!
(#) brejti hozzászólása Okt 17, 2009 /
 
Helló!

Valaki becsatolna egy működő watt fél USB HID Demo projectet 4550-re állítva? Előre is köszi.

üdv brejti
(#) Husla hozzászólása Okt 22, 2009 /
 
Heló!

Az lenne a kérdésem hogy lehetséges e hogy a pic18f4550-al azért nem akar müködni az USB komunikáció mert nem elég pontosak az oszcillator melletti 22pF os kondik,esetleg elment a kapacitásuk mikor forrasztottam??Vagy valami hiba lenne a kapcsolásban?
(#) icserny válasza Husla hozzászólására (») Okt 23, 2009 / 1
 
1. Nem tudom, hogy milyen USB csatlakozót használsz, de ha olyat, amilyen nekem is van, akkor összekeverted a lábakat! Voltmérővel leellenőrizted a +5V meglétét?

2. A VUSB lábra 470 nF-t tennék.

3. A program tud róla, hogy nem a PICDEM FSUSB mintaáramkörben szokásos 20 MHz-es kvarcot használod? (tehát a CPUDIV osztó át van állítva a 8 MHz-es kvarchoz?)
(#) Husla válasza icserny hozzászólására (») Okt 23, 2009 /
 
Köszönöm a segítséget! Müködik
Sosem jöttem volna rá hogy a csatlakozót nem jól kötöttem be,mivel az irodalom ahonnan olvastam az usb-röl,hibás volt.A rajzon felcserélték az 1-es 2-es lábat.Bosszantó hogy egy gyönyörü vezérlésekkel foglalkozó könyvben ilyen hibát ejtenek
(#) dinokal válasza Husla hozzászólására (») Okt 23, 2009 /
 
Hi! Melyik könyvben ?
(#) Husla válasza dinokal hozzászólására (») Okt 23, 2009 /
 
Pc Interfejsi-Szerb nyelvü,Szabadkai vagyok.
(#) watt válasza Husla hozzászólására (») Okt 24, 2009 /
 
Lehet, hogy csak fordítva értelmezted(tükörkép).
(#) icserny hozzászólása Nov 1, 2009 /
 
Üdv! Nem tudom, hogy ki hogyan oldotta meg a CDC kommunikációt, de engem nagyon zavart az állapotgépes metodika ránkerőltetése (ha többsoros szöveget akarok kiíratni, akkor nem lehet megállni és várakozni, ha USBUSARTIsTxTrfReady() értéke 'false').

Most az USB Device - CDC Basic Demó-ból kiindulva csináltam egy tesztprogramot, s abban a putc(), puts(), getc() mintájára csináltam olyan blokkoló típusú fv-et, amelyek várakozáskor kezelik a CDC tamagocsit, így a főprogramban nem kell a blokkolás miatt görcsölni.

  1. void outChar(char c) {
  2.   while(numBytesToSend>60) {
  3.     ProcessIO();
  4.   }
  5.   USB_In_Buffer[numBytesToSend++]=c;
  6. }
  7.  
  8. void outString(const rom char* psz_s) {
  9.   char c;
  10.   while ((c=*psz_s)) {
  11.     if (c == '\n') {
  12.       outChar(0x0D);
  13.     }
  14.     outChar(c);
  15.     psz_s++;
  16.   }
  17. }
  18.  
  19. char mygetc(void) {
  20.   while(Buffercp==numBytesRead) {
  21.     ProcessIO();
  22.   }
  23.   return(USB_Out_Buffer[Buffercp++]);
  24. }


Az outString mellékesen az LF-et CR/LF-re egészíti (ha esetleg nem kell, akkor ez kihagyható)

A ProcessIO() nálam most csak a bufferek közötti adatmozgatást és a CDC státuszgépet hivogatja:

  1. void ProcessIO(void)
  2. {  
  3.  
  4.  //  BlinkUSBStatus();
  5.     if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return;
  6.  
  7.     if(USBUSARTIsTxTrfReady() && (numBytesRead==Buffercp))
  8.     {
  9.                 numBytesRead = getsUSBUSART(USB_Out_Buffer,64);
  10.         Buffercp=0;
  11.     }
  12.  
  13.     if(USBUSARTIsTxTrfReady() && (numBytesToSend!=0)) {
  14.            putUSBUSART(USB_In_Buffer,numBytesToSend);
  15.            numBytesToSend=0;
  16.                
  17.         }
  18.     CDCTxService();
  19. }


Ha jól értettem, akkor ez felel meg az AN956 alkalmazási mintapéldában emlegetett "Alternative Global Buffer Method"-nak, amelyet ott sajnálatos módon nem részleteztek.

Bővebben: Link (PDF)

U.i.: Az USBDeviceTasks() interrupton fut...
(#) Husla válasza watt hozzászólására (») Nov 2, 2009 /
 
Nem,mert akkor nem csak 2 lenne felcserélve...
(#) frecsko hozzászólása Nov 24, 2009 /
 
Sziasztok. Kíváncsiságból megépítettem ezt a USB Data acquisition with PIC18F4550. A felélesztésében kérném a segítségeteket. Hogyan kezdjek hozzá?
(#) icserny válasza frecsko hozzászólására (») Nov 24, 2009 /
 
Idézet:
„Hogyan kezdjek hozzá?”

Mi a konkrét probléma? Gondolom, le kell fordítani és be kell égetni a firmware-t (lásd FW mappa).

Azután első csatlakoztatáskor össze kell ismertetni a Windows-sal (erre szolgál a projekthez mellékelt .inf állomány).

Csatlakozol egy PC-s programmal (Hyperterminal, vagy putty.exe), s kipróbálod a parancsokat.

Ha minden úgy működik, ahogy leírták, akkor lehet cifrább kezelőprogramot készíteni (erre szolgál a delphi mintaprogram, de egyszerű dolgokat a Liberty Basic-kel is össze lehet ütni).
(#) frecsko válasza icserny hozzászólására (») Nov 24, 2009 /
 
Tehát beégetem a fw-t és utána csatlakozom. Az inf állományt be kell raknom valahova vagy csak hivatkoznom kell rá?
(#) icserny válasza frecsko hozzászólására (») Nov 24, 2009 /
 
Majd amikor a Windows drivert keres, akkor kell odavezetni (Have disk opció, vagy ilyesmi)
(#) frecsko válasza icserny hozzászólására (») Nov 24, 2009 /
 
Átállítottam az MPLabot C18-ra. Megnyitottam a projekteket. egyiket sem tudom lefordítani. Át kell még valamit állítani?
Következő: »»   16 / 55
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem