Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1295 / 1319
(#) pajti2 válasza Hp41C hozzászólására (») Jún 26, 2018 /
 
Szerencsére már vannak elég izmos gépek a java-t futtatni, hogy fel lehessen programozni a pic-et, mint például 1x rack server, és 192x ram kártyák
(#) tomi52 hozzászólása Júl 27, 2018 /
 
Üdv!
MPLAB-X, XC32-ben le lehet kérdezni a fordítás dátumát, idejét?
Olyanra gondolok, mint az Arduinoban a __DATE__ és __TIME__.
Próbáltam keresni, de nem találtam, nem tudom, ez általános-e a c++-ban.
(#) pipi válasza tomi52 hozzászólására (») Júl 27, 2018 / 1
 
ugyanez működik
(#) tomi52 válasza pipi hozzászólására (») Júl 27, 2018 /
 
Köszi, akkor újult erővel keresek. Nem tudom, miért nem találtam.
(#) pipi válasza tomi52 hozzászólására (») Júl 27, 2018 /
 
Mit keresel?
pl nálam:
putrsUART("\r\n\r\n\rMicrochip TCP/IP Config Application ("TCPIP_STACK_VERSION", " __DATE__ ")\r\n\r\n");
de ha keresgélni akarsz:
Bővebben: Link
A hozzászólás módosítva: Júl 27, 2018
(#) tomi52 hozzászólása Júl 27, 2018 /
 
Másik kérdésem: dolgozik valaki linux alatt?

A konfigurációm: kubuntu 14.04 lts / MPLAB-X 4.15 / XC32 v2.05.
Gondolom valami beállítás kérdése lehet ami nálam hibás. Két dolgot is tapasztalok: a szerkesztőben sok hivatkozásra mondja, hogy kielégítetlen, ugyan akkor az output ablakban hibátlan a fordítás, és a program fut is. (Volt olyan szitu is, hogy 1 paraméterrel kielégítetlen volt a funkció hívás, egy csak kamu második paraméter berakásra meg jó lett.)

A másik dolog, hogy csak akkor lesz hibátlan a fordításom, ha a main-be a cpp-t is berakom #include-dal, nem csak a h-t. Sőt, a h nem is szükséges oda.
Mi lehet nálam rossz, vagy hibás beállítás? Hátha valaki tudja, vagy legalább tippje van.
(#) tomi52 válasza pipi hozzászólására (») Júl 27, 2018 /
 
Próbáltam átvenni egy sort egy arduino programból, de hibát dobott. Feltehetően nem pont ugyan úgy kell használni.
Próbáltam keresni a help-ben, de ezek szerint nem jól, eddig nem jött össze.

Most viszont megtaláltam a help-ben, kössz a "bíztatást"!
A hozzászólás módosítva: Júl 27, 2018
(#) pipi válasza tomi52 hozzászólására (») Júl 27, 2018 /
 
Megírhattad volna mit írtál, és arra mi volt a hibaüzi...
ha ez segit a tipuskonverzióban...
TCPPutROMString(sktHTTP, (ROM void*)__DATE__" "__TIME__);
A hozzászólás módosítva: Júl 27, 2018
(#) tomi52 válasza pipi hozzászólására (») Júl 27, 2018 /
 
Köszi, már lényegtelen, már működik.

Mindenesetre segítettél, mert kiderült van ilyen, csak én voltam béna.
(#) pipi válasza tomi52 hozzászólására (») Júl 27, 2018 /
 
Hali!
cpp-t nem "szoktunk" include-olni, nagyon nem elegáns.
Gondolom a "megfelelő" include fájlt nem rakod be mindegyik forrásba,
vagy nincs benne a használt függvények deklarációja, így nem tudja a paraméter ellenőrzést normálisan megcsinálni és valami int fg(int akármi) feltételez, és ami nem így hivatkozik rá, arra warning-ot dob.
De ha konkrétummal nem szolgálsz, mi hol van definiálva, mi a fg, hogy hívod meg, mi a hibaüzi, nem lehet segíteni...
(#) tomi52 válasza pipi hozzászólására (») Júl 28, 2018 1 /
 
Tudom, hogy nem "szoktunk", és az alap feltételezésem, hogy valamit rosszul csinálok, vagy valami beállításom rossz. Pont azért szeretnék rájönni, mert arduino alatt nem csinálok ilyet, ott csak a "h"-t include-olom, és jó. Itt meg valamiért nem. Ha ott tudom jól csinálni, itt vajon miért nem? Ezt szeretném megfejteni.

Ma már nem állok neki, de holnap "alkotok" valami kis mintát, ne rendes nagy forrás fileokat kelljen ide berakni.
(#) tomi52 válasza pipi hozzászólására (») Júl 28, 2018 /
 
Írtam egy kis mintát, a hiba ebben is előjön.
Konfig: Kubuntu 14.04 LTS (linux) / MPLAB-X v4.15 / XC32 v2.05

rutin.h
  1. #ifndef _RUTIN_H
  2. #define _RUTIN_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. class rutin
  7. {
  8. private:
  9.     int a;
  10.     int b;
  11. public:
  12.     void setA(int aa);
  13.     void setB(int bb);
  14.     int  addAB();
  15. };
  16. #ifdef __cplusplus
  17. }
  18. #endif
  19. #endif /* _RUTIN_H */


rutin.cpp
  1. #include "rutin.h"
  2. void rutin::setA(int aa)
  3. {
  4.     a = aa;
  5. }
  6. void rutin::setB(int bb)
  7. {
  8.     b = bb;
  9. }
  10. int  rutin::addAB()
  11. {
  12.     int x;
  13.     x = a + b;
  14.     return x;
  15. }


main.cpp
  1. #include <cstdlib>
  2. #include "rutin.h"
  3. //#include "rutin.cpp"
  4. using namespace std;
  5. rutin r;
  6. int   e;
  7. int main(int argc, char** argv)
  8. {
  9.     r.setA(1);
  10.     r.setB(2);
  11.     e = r.addAB();
  12.     return 0;
  13. }


És végül az Output ablak a fordítás után. Ha a cpp is include-olva van, akkor hibátlan. Az is lehet, hogy a hibát mutatja az outputban, csak én nem tudom?

A rutin.h és rutin.cpp egy saját include könyvtárban van, de ha bemásolom a projekt könyvtárába, akkor is ugyan ez a baj.

  1. CLEAN SUCCESSFUL (total time: 62ms)
  2. make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
  3. make[1]: Entering directory '/home/andras/MPLABXProjects/miabaj.X'
  4. make  -f nbproject/Makefile-default.mk dist/default/production/miabaj.X.production.hex
  5. make[2]: Entering directory '/home/andras/MPLABXProjects/miabaj.X'
  6. "/opt/microchip/xc32/v2.05/bin/xc32-g++" -g -x c++ -c -mprocessor=32MX170F256B -frtti -fexceptions -fno-check-new -fenforce-eh-specs -I../include -MMD -MF build/default/production/_ext/1999400566/miabaj.o.d -o build/default/production/_ext/1999400566/miabaj.o /home/andras/MPLABXProjects/miabaj.X/miabaj.cpp -DXPRJ_default=default
  7. "/opt/microchip/xc32/v2.05/bin/xc32-g++"   -mprocessor=32MX170F256B  -o dist/default/production/miabaj.X.production.elf build/default/production/_ext/1999400566/miabaj.o          -DXPRJ_default=default    -Wl,--defsym=__MPLAB_BUILD=1,--defsym=_min_heap_size=1024,--no-code-in-dinit,--no-dinit-in-serial-mem,-L"../include",-Map="dist/default/production/miabaj.X.production.map",--memorysummary,dist/default/production/memoryfile.xml
  8. nbproject/Makefile-default.mk:139: recipe for target 'dist/default/production/miabaj.X.production.hex' failed
  9. make[2]: Leaving directory '/home/andras/MPLABXProjects/miabaj.X'
  10. nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
  11. make[1]: Leaving directory '/home/andras/MPLABXProjects/miabaj.X'
  12. nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
  13. build/default/production/_ext/1999400566/miabaj.o: In function `main':
  14. /home/andras/MPLABXProjects/miabaj.X/miabaj.cpp:12: undefined reference to `rutin::setA(int)'
  15. /home/andras/MPLABXProjects/miabaj.X/miabaj.cpp:13: undefined reference to `rutin::setB(int)'
  16. /home/andras/MPLABXProjects/miabaj.X/miabaj.cpp:14: undefined reference to `rutin::addAB()'
  17. collect2: error: ld returned 255 exit status
  18. make[2]: *** [dist/default/production/miabaj.X.production.hex] Error 255
  19. make[1]: *** [.build-conf] Error 2
  20. make: *** [.build-impl] Error 2
  21.  
  22. BUILD FAILED (exit value 2, total time: 901ms)
(#) pipi válasza tomi52 hozzászólására (») Júl 28, 2018 /
 
Hali!
Hol a miabaj.cpp tartalma, mert ezt próbálja fordítani...?
Nem látom hogy a rutin.cpp + main.cpp-t akárná fordítani...
Biztos ez az alapértelmezett project, amit fordítasz?
Próbálj meg egy móriczka gyári mintaprogit fordítani, ha az lefordul, akkor azt írd át...
(#) tomi52 válasza pipi hozzászólására (») Júl 28, 2018 /
 
A "main.cpp" a "miabaj.cpp", elírtam a nevet itt a hozzászólásban.

Mivel csak egy projekt van nyitva, feltételezem, hogy ezt fordítja. Kikommentezve ott van az "#include rutin.cpp" is, ha az nem komment, hibátlanul fordul, sőt, a "rutin.h"-t nyugodtan kikommentezhetem.

Összetömörítettem a projekt könyvtárat. Ez ugyan kapott a 2-es számot, de csak annyiban különbözik a fentebb bemásolttól, hogy a "rutin" file-ok is a projekt könyvtárában vannak, nem egy külön "include" könyvtárban. A fordításkor ugyan úgy viselkedik.

Nem vagyok egy c++ guru, de gondolom, a forrás file-ok szintaktikája rendben van, Arduinóban nem szokott velük gond lenni.

miabaj2.X.zip
    
(#) pajti2 hozzászólása Aug 2, 2018 /
 
Dev board kérdés.

Amit gyártanék, az egy usb packet sniffer hardveres alapon. Ami kell hozzá, az két normális teljesítményű pic összekötve, amiken be van kötve az usb, és két usb kapcsolat közül az egyiken tápfelvétel van, a másikon táp support (egy host oldal, és egy kliens oldal).

Vannak rá összetevők egybekötögetni breakoutokat, de mechanikailag megszokhatóbb, ha létezik olyan board egyben is.

Aki ami arra alkalmas eszközt látott, dobjon egy linket plz.
(#) oregharcos hozzászólása Aug 3, 2018 /
 
Sziasztok! A youtube-on találtam Vicsys barátunk által készített C-programozásról három tutoriál filmet. A harmadik egy lépcsőházi világítás kapcsoló programját mutatja be. Két kérdésem van, az egyik, hogy hogyan tudom beilleszteni a programba azt, hogyha haladok a lépcsőházba akkor a PIC-en egy másik lábat kb. 5-másodperc után magas szintre kapcsolja és azt kb. 10-másodpercig tarja. A másik kérdésem az, hogy hogyan lehet C-ben megoldani, hogy a gombnyomást megszakításból figyelje? A segítséget előre is nagyon köszönöm!
Itt van a C-kódja:
  1. // lépcsőházi automata PIC12F683-al
  2. //vicsys-töl a youtube-on.
  3.  
  4. #include <main.h>
  5. #define LED PIN_A2 //LED a port A2-ön.
  6. #define kapcs PIN_A3 //kapcsoló a port A3-on (MCLR)
  7.  
  8. void main()
  9. {
  10.  
  11.    port_A_pullups (0b00011000); //felhúzó ellenállás bekapcs
  12.   // a port A3 és a A4-en.
  13.    
  14.    unsigned int16 i=2; //aktív kimenet ideje másodpercekben.
  15.  
  16.    while (TRUE)
  17.  
  18.    {  
  19.    if(!input (kapcs)) //ha a kapcsoló L-szinten van.
  20.        {
  21.    output_high (LED);
  22.    delay_ms (i*1000);
  23.    }
  24.    else //ha a kapcsoló H-szinten van.
  25.    {  
  26.  
  27.    output_low (LED);
  28.    
  29.    } //output (LED)
  30.    
  31.   }//end while
  32.  
  33. }//end main
A hozzászólás módosítva: Aug 3, 2018
(#) usane hozzászólása Aug 12, 2018 /
 
Üdv!

DMA ügyben kérnék egy kis segítséget.
XC32 már nem tartalmazza a periféria könyvtárakat, felraktam ami külön letölthető de már elavult. System.h-ban is javítgatni kellene, meg még ki tudja hol, hogy fusson. Gondoltam írok egy saját rutint, de ahogy nézem annyira nem egyszerű. Valaki tudna adni valami mintakódot vagy egyszerű instrulciókat mit és hogyan kell beállítgatni illetve hogyan megy a küldés?
Ja és a memóriából SPI-re szeretnék küldeni.
(#) cross51 válasza usane hozzászólására (») Aug 12, 2018 /
 
A Legacy PLIB 32 bitre igazándiból a harmony-val megszűnt.
De neked DMA-hoz driver kell vagy PLIB?
Jelenleg a PLIB (többnyire) annyit csinál hogy bit set/clear nek ad egy olvashatóbb nevet.

Ha nem vagy harmony project párti akkor esetleg csinálhatod azt is hogy leszeded a harmony-t és ki ollózod belőle a DMA source-t az nálam eddig működött (csak én harmony-val használom).

Valamint a harmony-ban van DMA example-t is.
Itt 594. oldaltól látsz példákat, hogy a PLIB-et hogyan kell használni.

És a Harmony-n belül ha kell találsz drivert is (csak a DMA az system service) apps/examples/system/dma alatt.
A hozzászólás módosítva: Aug 12, 2018
(#) usane válasza cross51 hozzászólására (») Aug 13, 2018 /
 
Igen, sajnos megszűnt ezért gondoltam, hogy egy saját rutint írok, de rengeteg flag, IRQ meg egyéb beállítás van, és még nem igazodok el bennük. A harmony nem a barátom, és nem most akartam magam beleásni, de ha azt mondod a DMA source egyszerűen kiollózható megnézem.
Köszönöm.
(#) cross51 válasza usane hozzászólására (») Aug 13, 2018 /
 
Én a 2.04-est használom most.
Először nagyon borzasztó használni mert nem érted mi hol van viszont amikor rájössz utána nagyon gyorsan lehet vele haladni.
Nekem a SYS_TMR-el volt egy problémám azt csak adott beállítás mellet bírtam életre mikor bármelyikkel kéne mennie.

Ha esetleg így elsőre nem látod át a DMA source header-jeit akkor szól összeszedem őket mi kell hozzá.
(#) tothtechnika2 hozzászólása Aug 14, 2018 /
 
Sziasztok! Van egy igen komoly problémám. XC16, dspic33ep512mc504.

Valami oknál fogva a fordító nem enged az 50k memóriából 28672 bájtnál többet lefoglalni. Az lábbi példaprogrammal kipróbálható:
  1. #include <xc.h>
  2.  
  3. static char x[1792][16];
  4.  
  5. void main(void) {
  6.     x[0][0]=1;
  7.     return;
  8. }


Ebben a formában még lefordul, de ha már 1793 elemű tömböt szeretnék, akkor hibára fut a fordító. Találkozott valamelyikőtök hasonló problémával? Nem tudok sajnos rájönni mi lehet a probléma forrása, és szükségem lenne még ramra.

Köszönöm előre is a segítséget!
(#) killbill válasza tothtechnika2 hozzászólására (») Aug 14, 2018 /
 
A fordító jelez hibát (pontosan mit?) vagy a linker?
(#) pipi válasza tothtechnika2 hozzászólására (») Aug 15, 2018 /
 
Két tömbbe létre tudod hozni?
(#) icserny válasza tothtechnika2 hozzászólására (») Aug 15, 2018 /
 
Nem ismerem ezt a fordítót, de lehet valami olyan huncutság, hogy a dsPIC adat memória címterületetét szegmentálja. Az első 4k az SFR, utána jön az X, majd az Y memória. Az X-ben lesz a veremtár és a változók területe is. Az X és Y különválasztása a speciális adatfeldolgozó utasítások miatt van.
A hozzászólás módosítva: Aug 15, 2018
(#) Hp41C válasza tothtechnika2 hozzászólására (») Aug 15, 2018 / 1
 
Motto: A 16 bites PIC azért jó, mert benne nincs lapozásos memóriakezelés.
Nincs itt semmi probléma, csak egy kicsit számolni kell:
A RAM címek byte címek. 0x0000 .. 0x0FFF az SFR címtaromány (4kbyte), a 0x1000 .. 0x7FFF a GPR címtartomány (28k). Így elérünk 32k byte -ot (4096 + 28672 = 32768). Ha a cím legfelső bitje 1, akkor a PSV vagy EDS (Extended Data Space) területet címzünk.
XC16 standard library and EDS memory
A hozzászólás módosítva: Aug 15, 2018
(#) Hp41C válasza Hp41C hozzászólására (») Aug 15, 2018 / 1
 
(#) tothtechnika2 válasza Hp41C hozzászólására (») Aug 15, 2018 /
 
Sajnos én ebből egy mukkot sem értek, csak azt, hogy ez így normális. Mit lehet tenni, ha egyáltalán lehet valamit tenni annak érdekében, hogy tudjak még memóriát használni?
(#) pipi válasza tothtechnika2 hozzászólására (») Aug 15, 2018 /
 
Hali!
Nézted a mintát amit HP41C linkelt?
Esetleg így: Bővebben: Link
(#) cross51 válasza tothtechnika2 hozzászólására (») Aug 15, 2018 /
 
Szerintem nem is kell érteni, a képek és Hp41C első hozzászólása elég "beszédes".

De nagyon leegyszerűsítve 32k(SFR+GPR) fölött más címen érsz el memóriát.

Az example-ből kiindulva így tudsz 40k címezni
  1. static char x[28672];
  2. // A linker donti el hol lesz a tomb az eds teruleten belul
  3. // A static lehet az __eds__ ele kell probald ki
  4. __eds__ __attribute((eds)) static char y[12288];
(#) tothtechnika2 hozzászólása Aug 16, 2018 /
 
OK, megértettem, köszönöm a segítséget. 32 bites pic-et fogok használni kizárólag ezentúl
Következő: »»   1295 / 1319
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