Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
A set_tris nem használandó a CCS-nél. Ha fast_IO -t használsz, lehet.
Igen azt használok, ha van rá mód mivel így rövidebb a kód!
Hibát a fast_IO nélkűl sem okoz, csak fölösleges, viszont világosabban látható utólag mit akartam a portokkal.
Azért ez igy, kategórikusan kijelentve kicsit furcsa. Miért nem használandó a set_tris???
Mivel a port irányát egyértelműen az adott művelet állítja be. A CCS fórumán is sokszor írják, hogy ne használják. A User Manual-ban is megemlítik, hogy nincs ez a funkció, csupán a kompatibilitás miatt hagyták meg.
És ezáltal lassabb és hosszabb kódot generál, továbbá aki nagyon "rászokik" a CCS-re az szenvedni fog más C fordítóval.
Ezért is használom a fas_IO-t... A PIC port is lassabb ha minden írás és olvasás előtt piszkáljuk az állapot biteket! Bár most épp a HiTech C vel ismerkedem éppen hasonló okok miatt, igaz ez már itt OFF!
Igen, ez tény. Azért jó is, rossz is...
Sziasztok!
Megint a CCS IP Stack-el akadtam el . A jelenség, hogy ha DHCP-vel kérek IP címet (meg is kapja, kommunikál is TCP-n) de az UDP kérésekre nem válaszol, pontosabban nem küldi ki a választ... Ha a DHCP-t kikapcsolom, minden működik, TCP HTTP és az UDP is (mindet használom, eddig nem is volt vele baj, de most hogy be akartam állítani hogy DHCPn kérjen IP címet esze ágában nincs az UDP kérésekre válaszolni, a többi megy. Igen, mind a három protokoll kell Találkozott már valaki hasonlóval, vagy csak én vagyok ilyen agyament hogy CCS-el próbálom megoldani? W
Ahhoz képest, hogy nincs ez a funkció, elég jól teszi a dolgát.
Ez az utasítás miért lassúbb és hosszabb, mint bármi más: LED=1; Ahol: #bit LED = PORTB.0;
Ez így működik, de ha előtte volt egy input(PIN_B0) bizony okoz neki kisebb fejtörést, mivel az input fuggvény beállítja a TRIS-t.
Hali
Ez csak akkor mukodik igy, ha nem mondtad meg neki, hogy ne birizgalja a TRIS regeket. A "#use fast_io(A)" preprocessor utasitas kiadasa utan nem fogja piszkalni a PORTA tristate-jet. Viszont neked kell megmondani az ini-nel, hogy milyen iranyban kered hasznalni a portot. Amugy a sysy altal javasolt megoldast hasznalom regota, es igyekszem elkerulni az original fvenyeket.
Es igy hasznalom:
Igy tudom mit csinal a fordito, es a kod is kisebb lesz. Csa Vili
Így igaz. Mostanában mióta az IPStacket használom én is így használom, mivel az tapasztalat szerint csak a fastio-val működik (vélhetően épp a tris bitek büzgicselésével eltöltött idő miatt).
Tulajdonképpen projectje válogatja hogy melyiket érdemes használni..... szerintem egy kisebb programnál ahol a program mérete és a portok sebessége nem kritikus felesleges a fastio használata, mert érdemi hozadéka nincs, viszont a forráskód tömörebb olvasmányosabb lesz. Bár ízlések és pofonok....
Hali
Egy nagy elonye van az ilyen programirasnak, hogy konnyebb atvinni mas nyelvjarasra, mint a szabvany CCS kodot. Legfeljebb csinalsz mindenhez 1-1 headert, es hordozhato a kodod. Mondjuk A CCS meg sokkal jobb mint a MikroC. Annak elvarazsolt libjei vannak. Be van betonozva minden es nem lehet rajta valtoztatni. En egy mini webszerveren szivtam egy ideig a MikroC-vel. Csa Vili
Sziasztok! Most a következő a gondom: Ha main-ba benne van az if, akkor nem működik a progi. (Amúgy csak az volt a célom, hogy számoljon szépen, ez így most működik is.) Folyamatosan a hallo van kiírva. A másik bajom a printf függvénnyel van. Csak így tudtam megoldani, hogy törölje az előző kiírást. Szerettem volna a második sorba is írni, de az sem ment. Nem értem ezt a függvényt igazán, és nem is találtam olyan leírást ami olyan ovis nyelven leírná. Próbáltam a \f-et bele tenni, de akkor nem írt semmit, és a \n re sem, maradt mindkettőnél egy üres képernyő.Köszi előre is, és a türelmeteket is! (Ahogy elnézem minél jobban bele merülök annál inkább nem tudok semmit )
És még egy: nem számol csak 255ig. Az int32 kicsit több lenne, ha jól értelmezem. De ezek szerint valamit mégsem jól.
Kérdéssel válaszolok a kérdésedre:
Vajon mit jelent a printf-ben %u ?
Szia!
Én elég régen használtam a CCS-C fordítót, akkor sem sokáig, úgyhogy ennek fényében tekintsd válaszaimat. A jel változó a fordító által kioptimalizálásra kerül, megoldás: volatile kulcsszó használata a változó deklarálásakor (vagy ennek megfelelő ccs kulcsszó, beállítás). Az int32-es értékadásnál talán kell a kasztolás (explicit típuskonverzió), bár ebben nem vagyok teljesen biztos. A printf-es függvényeket én annak idején sem használtam (zabálják a memóriát), úgyhogy ahhoz nem tudok hozzászólni.
Nos, ezt sikerült nagyjából kiderítenem, ez egy előjel nélküli szám lenne, innen szedtem, ezután raktam be a: \f-et majd a \n-t. No, ez nem működött!
Most csak a %u-ról volt szó, a többit ne keverjük ide. Az is jó amit néztél, de ott a táblázatban azt is oda írták, hogy "az argumentum típusa". Talán az jelent is valamit!
Igen, ezt végig is gondoltam mikor olvastam a válaszod, hogy integer, tehát nem tud többet megjeleníteni. Szóval ez már dereng. Viszont a többit végigpróbálva mindig hibát ír, hogy nem megfelelő formátum.
Ha dereng, akkor OK! Szóval int típusú, ami CCS-ben 8 bit, tehát 255-nél nem lesz több! Nézd meg a CCS Reference Manual-t a"DATA DEFINITIONS" résznél felsorolja az adattípusokat! Ott van egy kis táblázatban, hogy az int32 -őt "c standard" típusban long-nak nevezik. Most nézd meg a printf függvénynél mit ír a konverziós karaktereknél! Az kell neked, ahol szintén szerepel a long!
Persze ha a CCS saját dokumentációját vagy helpjét néznéd talán előbbre lennél...
"Longs in the printf may be 16 or 32 bit." Lu --> Long unsigned int Közben megelőztek....
Tehát: Lu!
Köszi szépen! Azt pedig különösen, hogy nem egyből ezt írtad, ez a rávezetős módszer sokkal jobb, szerintem Közben Te is engem, kicsit lassan írtam, vagyis ki is próbáltam...
OK! Tehát a lényeg: fejlesztéskor legyen kéznél a PIC adatlapja, a fordító leírása, és egy c könyv
Kettő itt volt, a helpet meg mindig elfelejtem. Igaz a cavintont is felíratni ha megyek a dokihoz
a '+1' helyett vagy irj '+1L' -t, vagy pedig az egeszet csereldd le '++' operatorosra.
Azonkivul a jel es kijel_ertek valtozoknak volatile-oknak kellene lenniuk szerintem -- akkor valoszinuleg mukodne az if-ed.
Hali
Itt talalsz (talatok) egy nem egeszen uj iromanyt a CCS team-tol. Erdemes atbogaraszni, mert sok rejtelyrol lerantja a leplet. Benne vannak az adattipusok, struct, union, a programiras trukkjei, es meg sok egyeb. Bongesszetek, es ami tetszik "Levele". |
Bejelentkezés
Hirdetés |