Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
short lesz az.
Mindenki hordozható kódról beszél. Marhaság. A kódok nem hordozhatóak. Hacsak nem CCS 16C84-ről hordozod CCS 16F84-re, de még ebben az esetben sem biztos a dolog. Az UNIX forráskódot echte ANSI C-ben írták és egyetlen függvénye sem fordítható le sem Hi-Tech sem CCS, sem MicroC, sem Bang & Olufsen (vagy mi) fordítóval. Ezt szerintem el kell felejteni, mint a véletlen elérésű memóriát. Itt a fórumban is biztosan százával vannak olyanok, akik az interneten talált Hi-Tech C kódot akarnak CCS kóddá alakítani és csak hosszas vérpisálás után indul el nekik a program. Meg lehet cáfolni engem, ha valaki küld egy néhány száz soros programot bármilyen fordító (akár ANSI C) alól valamilyen PIC-re írva, és az lefordul pl. CCS alatt. Még a 3.xx és a 4.xx verziójú CCS sem kompatibilis önmagával. Innentől kezdve nem is értem, hogy miről beszélünk hordozható kód alatt. Azt hiszem, hogy itt nem szabványos C programot akarnak írni, hanem működőt. És azt szerintem nem akarják sehova sem hordozni. Uff, én beszéltem.
Nagyon szépen köszönöm a short működik. Ha tudnád mekkora memória területet szabaditottál fel nekem...
Köszi! Idézet: A hordozható kód lényege pont az, hogy minél kevesebb legyen a "vérpisálás". S pont erre találták ki az ANSI C-t. „Itt a fórumban is biztosan százával vannak olyanok, akik az interneten talált Hi-Tech C kódot akarnak CCS kóddá alakítani és csak hosszas vérpisálás után indul el nekik a program.” Nyilván minden fordítónak megvan a saját rigolyája, de a programot célszerű úgy megírni, hogy ezek kezelése minél egyszerűbb legyen, s lehetőleg a "sajátos kezelést igénylő" részek legyenek elkülönítve.
Valaki segítene megint.
Szükségem lenne egy timerre ,de nem tudom beállítani. 40Hz -en kellene hívogatni egy függvényt. 20Mhz kristály van a PIC en. Valaki segítsen ,llégyszi Előre is köszi!
Legegyszerűbben megszakításból lehet ilyeneket csinálni.
Valahogy így:
Nem értem. Lehet bennem van a hiba ,de egyszer sem hívódik meg a függvényem. nem ,hogy 40Hz -n. Nem tudom mit ronthattam el, mert csak bemásoltam amit írtál és kész.
Visszavonom. Én néztem el.
Nagyon szépen köszönöm a segítséget. Kérhetnék egy kis magyarázatot? Ehhez a sorhoz: setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); //26.2 ms overflow A zárójelben lévő beállítások mit jelentenek és honnét lehet ilyeneket kikeresni?
Elsősorban a CCS helpben és a fordító leírásában lehet magát a parancsot megtalálni. A paraméterezését az adott proci.h filéjében taglalják és végül egészen egyszerűen, ahonnan én is kimásoltam, az a CCS IDE (Pcw.exe) alatt futtatható Project -> New ->PIC wizard varázsló, ahol be lehet állítani a kívánt paramétereket és máris írja a "programot" a varázsló.
Idézet: Bizonyára azért, hogy az egész osztás ne csonkítsa, hanem kerekítse az értéket. A 8/16 az éppen 0.5, s ezzel az eltolással 0.5-től felfelé, azalatt pedig lefelé történik a kerekítés. Negatív számoknál pedig a lefelé és a felfelé fordítva van, ezért ott levonni kell, hogy ne a nulla felé kerekítsünk, hanem a mínusz végtelen felé. „miért ad hozzá vagy kivon 8 -at?”
A választ nem tudom, viszont ha a temperature változó valamilyen int típusú (és miért ne lenne az), akkor a 16-al osztás helyett értelmesebb négy hellyel jobbra léptetést csinálni. Tehát temperature = (temperature-8)>>16;
Közben most jutott eszembe, hogy ez szimpla kerekítés akar lenni.
Értem, akkor a kerekítés valamilyen szinten a pontosság rovására történik. Nem?
Nézőpont kérdése. Szerintem az egészosztásod megy a pontosság rovására (lehetne pl. tizedfokokban számolni, ami ugyanígy kezelhető egészaritmetikával, csak az eredmény kiírása komplikáltabb).
Az egyszerű csonkításhoz képest a kerekítés szerintem növeli a pontosságot (csökkenti a pontos értéktől való eltérést), hiszen így már nem fog a végeredmény rossz esetben 0.9999...-cel eltérni, legfeljebb 0.49999...-cel.
Igazad van, átgondoltam és utána is számoltam.
MPLAB alatt, CCS fordítóval biztosan (a CCS FAQ szerint).
van PCWHD 4.106-os CCS-em, a Debugger / Enable Debugger alatt szerepel az ICD2 es ICD3 is szépen feketén nem szürkén mint a nem aktív objektumok ez bizsergette meg a fantáziámat ,érdemes szerezzek 1 ICD-ét ?
Az ICD2 már eléggé kifutott, inkább az ICD3 javasolható, de csak annak, aki lopja a pénzt, vagy más pénzét költi!
Hali,
Honnan lehet szert tenni a 4.106-osra?
Helló mindenki!
Valaki le tudná ,hogy lehet ccs -ben a pic -et rávenni ,hogy a belső kristályt használja az órajelhez? (PIC18F2550) Esetleg azt is megírhatná ,hogy ez az órajel mennyi? Előre is köszi!
Igy:
valaszthato frekik a setup_oscillator() fveny szamara. A CCS telepito konyvtarban a 18F2550.h tartalmazza ezt az informaciot.
Köszi szépen! Ezt a könyvtárat hol találom ?
A CCS telepito konyvtaraban. Talalsz 3 alkonytarat ugymint : Devices, Drivers es Examples. A Devices tartalmazza a xxx.h device header fileket, a Drivers kulonbozo eszkozokhoz tartalmaz driver filet, es az Examples tartalmazza a mintapeldakat.
Valaki tudna segíteni? Van ez a kód:
#include <18F2550.h> #use delay(clock=32000000) /*#define OSC_31KHZ 0 //választható órajelek setup_oscillator(); számára #define OSC_125KHZ 0x10 #define OSC_250KHZ 0x20 #define OSC_500KHZ 0x30 #define OSC_1MHZ 0x40 #define OSC_2MHZ 0x50 #define OSC_4MHZ 0x60 #define OSC_8MHZ 0x70 #define OSC_16MHZ 0x4060*/ #define OSC_32MHZ 0x4070 main() { setup_oscillator(OSC_32MHZ); while(true){ output_toggle(PIN_B0); delay_ms(1000); } } Valamiért nem 1mp -t vár a delay_ms résznél ,hanem kb 3-4 -et. (tudom ,hogy nem túl pontos ez a fv ,de azé legalább nagyából 1 mp -t kéne várnia) Szimulátorban teljesen jó. Valóságban nem. Ez miért lehet? Előre is köszi!
Azokat a #define osc_XX részeket hagyd ki.
Kapcsold ki a tápot és kapcsold be újra.
Azok kommentbe vannak, szal nem zavarhat semmit. Azért kiszedtem. Viszont ugyan az...
Közben előkaptam az adatlapot, és ez nem tudja a belső oszcillátor órajelét a PLL-re vezetni. Vagyis belső órajelről 8MHz-en tud csak futni a kontroller. Szóval ez van.
|
Bejelentkezés
Hirdetés |