Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   87 / 153
(#) g.scorpio.d válasza pipi hozzászólására (») Nov 30, 2013 /
 
Szia! 1000 Köszönet!
A hozzászólás módosítva: Nov 30, 2013
(#) whalaky hozzászólása Dec 8, 2013 /
 
Sziasztok!
Napok óta küzdök, és nem tudok rájönni hogy fordító hiba, vagy én vagyok tudatlan.
  1. DWORD dwTest(void) {
  2.     DWORD dw;
  3.     dw = 0x12345678;
  4.     return dw;
  5. }
  6.  
  7. SNTPUTCSeconds = (DWORD)dwTest();

Számomra megfoghatatlan módon csak az alsó két byte-ot adj avissza a függvény, azaz 0x5678 a visszatérési érték. A compiler C30 3.31.

Minden megoldás érdekel
A hozzászólás módosítva: Dec 8, 2013
(#) Tas84 válasza whalaky hozzászólására (») Dec 8, 2013 /
 
A SNTPUTCSeconds 32 bites?
(#) whalaky válasza Tas84 hozzászólására (») Dec 8, 2013 /
 
Temészetesen az is DWORD, csak már nem tudtam módosítani mikor észrevettem hogy kimaradt
(#) icserny válasza whalaky hozzászólására (») Dec 8, 2013 /
 
dw = 0x12345678L; vagy dw = 0x12345678UL; nem segít a dolgon?
(#) whalaky válasza icserny hozzászólására (») Dec 8, 2013 /
 
Úgy tűnik nem, de nem is lenne megoldás, mivel egy SNTP időt olvas be változóba. A 0x12345678 már csak kínomban született agymenés hogy megkeressem hol romlik el a dolog.
A függvényen belül kiíratva még jó, ha a függvénynek adok egy DWORD* -t és abba is beírom az értéket az is jó lesz. Valahol a stack-ben veszik el a felső két byte, csak nem tudom hogy ez normális, valami fordító beállítás kérdése vagy bug.
(#) whalaky válasza whalaky hozzászólására (») Dec 8, 2013 /
 
És úgy tűnik ugyan ez a helyzet a C30 v2.0-val is
(#) benjami válasza whalaky hozzászólására (») Dec 8, 2013 /
 
Kipróbáltam, nálam unsigned long változókkal jól működik még típuskényszerítés nélkül is (C30 3.31). Biztos unsigned long az a DWORD ?
(#) whalaky válasza benjami hozzászólására (») Dec 8, 2013 /
 
sajnos igen
  1. typedef unsigned long       DWORD;              // 32-bit

A Microchip TCPIP Stack-ben van, ettől igazán pikáns a dolog....
A hozzászólás módosítva: Dec 8, 2013
(#) whalaky válasza whalaky hozzászólására (») Dec 8, 2013 /
 
Kezdem azt hinni hogy fordító hiba....
C30 v3.12-vel 0xFFFF5678 a visszaadott érték..... ez azért így durva....
(#) whalaky válasza whalaky hozzászólására (») Dec 8, 2013 /
 
feladom..... 3.31 és az első 2 byte hol 0x0000 hol pedig 0xFFFF érték függő, de hogy hol fordul azt nem tudtam még kifigyelni
(#) potyo válasza whalaky hozzászólására (») Dec 8, 2013 /
 
Harmadik bájt legfelső bitjétől függhet? Próbáld 0x12345678 és 0x1234D678-al.
(#) whalaky válasza potyo hozzászólására (») Dec 9, 2013 /
 
Úgy tűnik igen.....
0x12345678 => 0x00005678
0x12345678 => 0xFFFF5678

csak nincs valami tipped?
már 4 féle C30-al próbáltam, az eredmény ugyan az....
  1. DWORD SNTPGetUTCSeconds(DWORD * val)
  2. {
  3.         DWORD dwTickDelta;
  4.         DWORD dwTick;
  5.  
  6.         // Update the dwSNTPSeconds variable with the number of seconds
  7.         // that has elapsed
  8.         dwTick = TickGet();
  9.         dwTickDelta = dwTick - dwLastUpdateTick;
  10.         while(dwTickDelta > TICK_SECOND)
  11.         {
  12.                 dwSNTPSeconds++;
  13.                 dwTickDelta -= TICK_SECOND;
  14.         }
  15.        
  16.         // Save the tick and residual fractional seconds for the next call
  17.         dwLastUpdateTick = dwTick - dwTickDelta;
  18.  
  19.         dwSNTPSeconds = 0x1234D678;
  20.         *val = dwSNTPSeconds;
  21.         return dwSNTPSeconds;
  22. }
  23.  
  24. dwUTCSec = SNTPGetUTCSeconds(&t_UTCTime);

t_UTCTime == 0x1234D678
dwUTCSec == 0xFFFFD678

és természetesen minden változó DWORD azaz unsigned long....
A hozzászólás módosítva: Dec 9, 2013
(#) potyo válasza whalaky hozzászólására (») Dec 9, 2013 /
 
Sajnos tippem az nincs, csak az a bájt felső bitje tűnt valószínűnek. Eleve fura, hogy unsigned long típusnál miért csinál előjelezést. Esetleg nézz meg olyasmit, hogy mit ad a fordító vissza a sizeof(DWORD) és sizeof(unsigned long)-ra. Elvileg 4-et kellene adni, de ki tudja...

Amúgy én is szívok az XC8-al, úgytűnik, hogy ha már kevés a memória a kontrollerben, akkor ezt-azt hibásan fordít...
(#) whalaky válasza potyo hozzászólására (») Dec 9, 2013 /
 
Valami stack bugra gyanakszom, mert az átadott változót jó értékkel tölti fel... mintha a veremben az első kéát byte megzavarodna.....
a dolog érdekessége hogy benjami -nak jó. Már töröltem az összes fordítót, újra telepítettem a 3,31-et és semmi és semmi és semmi.....
nem tudom elképzelni hoiyg ezt ne vették volna észre .... gondolom párezren használják a stack-et...
A hozzászólás módosítva: Dec 9, 2013
(#) potyo válasza whalaky hozzászólására (») Dec 9, 2013 /
 
Próbálj ki esetleg egy virtuális gép alatt egy teljesen új telepítést
(#) pipi válasza whalaky hozzászólására (») Dec 10, 2013 /
 
Hali!
A progi warning nélkül lefordul?
Nem lehet hogy a függvényt a forrásban előrébb hívod meg, mint a deklarációja szerepel?
(#) Sting hozzászólása Jan 4, 2014 /
 
Sziasztok!
Segítséget szeretnék kérni, a mellékelt programot milyen fordítóval lehetne hiba nélkül lefordítani?
Most ismerkedem a C-nyelvvel, (a gépi kód az megy már valamicskét) de az általam fellelhető c fordítók nem fordítják le ezt a forrás listát. A vas úgy néz ki, hogy 3 digites hétszegmenses DVM voltmérő, a hex-et mellékelték hozzá, így működik is, de szeretném megismerni a "miérteket" is.
Köszönöm előre is.
(#) vicsys válasza Sting hozzászólására (») Jan 4, 2014 /
 
Szerintem CCS C-vel menni fog.
Szerk: csatoltam. (a .txt nem kell a végére)
A hozzászólás módosítva: Jan 4, 2014
(#) Sting hozzászólása Jan 4, 2014 /
 
szia!
Nagyon köszönöm a gyors választ, mivel én is próbáltam vele, de nem ment - bennem van a hiba.
Fontos volt tudnom, hogy milyen fordítóval próbálkozzam tovább.
Igyekszem.
(#) Sting hozzászólása Jan 4, 2014 /
 
Baj van. lejárt a 45 napos demo intervallumom, és hiába próbálom meg törlés után újra telepíteni - feltelepül, de szép piros keretben közli, hogy lejárt a demom. mit lehet ilyenkor tenni? ötlet valakinek?
(#) vicsys válasza Sting hozzászólására (») Jan 4, 2014 /
 
2 lehetőséged van:
1. Megvásárlod.
2. Google a barátod...
(#) janimester válasza Sting hozzászólására (») Jan 4, 2014 /
 
Igaza van Vicsys-nek google a barátod, nem akarlak más irányba terelni mint amit elkezdtél de én a Mikroc for PIC-et ajánlanám (V5.61) ha kicsit utánakeresel megtalálod a teljes verziót Én ezzel kezdtem el a pic-eket babrálni , és a fordítója is jó kódot szokott generálni.
(#) vicsys válasza janimester hozzászólására (») Jan 4, 2014 /
 
Gondolom a meglévő file miatt kellene pont a CCS...
(#) Sting hozzászólása Jan 4, 2014 /
 
Köszönöm mindkettőtöknek a választ, dolgozom rajta!
(#) Sting válasza janimester hozzászólására (») Jan 5, 2014 /
 
Sziasztok!
Túl vagyok az első sikeres fordításon
A microC for PIC lett a befutó nálam, mégpedig egy jó kis projekt miatt, mellékelve a rajz is.
A lényeg, könnyen telepíthető, és jól átlátható a fejlesztő rendszer, így a kisebb hibákat ami a linken a c file-ban van, lépésről lépésre sikerült kijavítani.
bővebben itt: http://embedded-lab.com/blog/?p=396
Az áramkört próbapanelen megépítettem és kifogástalanul működik is!
Még egyszer köszönöm a hasznos segítségeteket!
(#) janimester válasza Sting hozzászólására (») Jan 5, 2014 /
 
Üdv. Látom meg lett a siker. Ha elég energiát fektetsz bele bonyolultabbak is menni fognak idővel
(#) Sting válasza janimester hozzászólására (») Jan 5, 2014 /
 
Már megvannak az alapfeltételek - innen már szorgalom, tanulás, gyakorlás.
Igyekszem majd.
(#) vasy85 hozzászólása Jan 6, 2014 /
 
helló!Kezdő vagyok a PIC terén.flowcode4-5 ben írtam már progikat,de szeretnék assembly-ben és vagy C ben megtanulni programozni.PIC KIT2-m van.És csináltam egy teszt panelt LED visszajelzővel,LCD csatlakozással és a LED MATRIX-ot az LCD helyére lehet csatlakoztatni..16-os szériát tudnék programozni és a 18f2550-et.Felraktam az mplab-ot vin7-re,de beállt kékhalállal.Le kellett szenem csökkentett módban.valaki tudna segíteni.Olyan progi kellene,ahol: 1,meg tudnám írni a progit; 2,le tudnám fordíttatni vele hex-be,esetleg teszetlni tudnám.és ha lenne valakinek C és assembly jegyzete ahol le van írva,hogy mik a parancsok jelentései.Ilyen PIC-jeim vannak.16f887,16f886,18f2550,16f628A
emil címem:vasy21@freemail.hu
Előre is kössz!
(#) icserny válasza vasy85 hozzászólására (») Jan 6, 2014 /
 
Idézet:
„Felraktam az mplab-ot vin7-re”
Melyik változattal próbálkoztál? Nálam az MPLAB 8.76 vidáman fut win7 alatt.
Következő: »»   87 / 153
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