Fórum témák
» Több friss téma |
MIPS
![]() Érdemes megnézned a gépi kódot 18F-re és 24F-re fordítva, ezt egyszerűen meg tudod csinálni. A kettő között ég és föld a különbség. Igen, mindkettő C-hez van, azért is adtam lejjebb 18F-ig az elméletemből az utóbbi órákban... ![]() RTOS-t csak PC-n (naná), mikrokontrolleren még nem akadtam olyan feladatra, amit kooperatív kernel ne tudott volna elintézni. Sokkal biztonságosabbnak tartom, hiszen nem kell megoldani a szinkronizálást, ami a programozók természetellenes idegenkedését okozza a szálaktól (és a természetellenes vonzalmukat az áttekinthetetlen state machine-ekhez). Arra kell csak figyelni, hogy amikor a szál várakozik valamire, lepasszolja a vezérlést a következőnek. Persze ha nem teszi, az úgyis hamar kiderül. Egyébként nem mértem, de feltételezem, hogy a kooperatív kernel még gyorsabb is mint a ríltájm, mivel a szálak 99%-a úgyis épp várakozik valamire az idő nagy részében, hát az az 1% akinek van dolga, hadd csinálja. Persze a prioritás kérdése itt nincs megoldva, de az még belefér a 99%-ba. Kezdőknek mindenképpen inkább ajánlom.
Az RTOS-ok esetén is ugyanúgy lehet altatni a taszkokat, lehet eseményre is várakozni. Így csak a futásra kész taszkok kerülnek ütemezésre, prioritásuk szerint. Nagyon jó példa erre az open-souce uC/OS-II. Érdemes utánanézegetni, nem egy rossz dolog. Külön előnye, hogy nagyon jól skálázható, ami funkció nem kell, az kikapcsolható a fordítás során, így a helyet sem foglalja a kontrollerben.
Igen, már nézegettem és nagyon tetszik. Talán a következő projektben kipróbálom. Egyelőre az van, hogy annyit szívtam a font antialiasinggel, hogy cserébe megérdemlem, hogy az egyetlen szinkró objektum a mutex.
![]() Ó, meg hát a microchipes rossz tapasztalatok. Én a mai napig nem értem, hogy 1. hogy lehet úgy elbonyolítani a kódot ahogy a példaprogramjaikban szokták 2. minek még tovább bonyolítani azzal, hogy egyetlen forrásba beszórják az összes processzor/ICD/fordító/periféria kombinációkat 3. mi a francnak kell annyi hibát benne hagyni. Eleinte próbálkoztam a projektjeimben pl. MiWivel, meg a Microchip grafikus könyvtárral, meg minden egyébbel, de eddig mindig az lett a vége, hogy annyira nem találtam valamit két hétig, hogy nekidühödtem, hogy pár nap alatt lekódoltam a saját változatomat. Ja igen, a nagy kedvencem az USB volt device és host módban is, a szükséges kódmennyiség összesen kb. 1000 sor, a Microchip verzió valami 360kB és nem működik...
Valóban, azt már korábban is tárgyaltuk valamelyik PIC-es témában és legtöbbünk számára érthetetlen, hogy minek kell a segítségül szolgáló frameworkok mintaprogramjait úgy összekutyulni, hogy még véletlenül se lehessen átlátni. Gondolok itt a sok feltételes fordítási direktívákra és társaira. A másik, hogy sokszor tényleg nem működik rendesen a mintakód. Na mindegy ez van, ezt kell szeretni.
![]()
Idézet: „Vagy inkább tudás hiányában nem használják ki az erőforrásokat a programozók, hm?” Maradjunk annyiban, hogy mindig a feladat az adott és ahhoz választunk eszközt, nem pedig fordítva. Idézet: „Idézet: „Vagy inkább tudás hiányában nem használják ki az erőforrásokat a programozók, hm?” Maradjunk annyiban, hogy mindig a feladat az adott és ahhoz választunk eszközt, nem pedig fordítva.” Igen, ezek mar-mar vallasi vitaba illo dolgok, de azert azt meg had jegyezzem meg, hogy elmult evekben eleg sokat koltozkodtem, hol kisebb hol nagyobb lakasba. Mindig ugyanazok a cuccaim voltak, lehet idovel kicsit gyarapodtak is. Eddig mindig el tudtam helyezni a cuccaimat, meg akkor is ha csak egy szobam volt erre -- csak hat a nagy lakasban konyebben ment a tetriszezes es talan a vegeredmeny is szebb lett. Ugyanez igaz a PIC merete es a program-ra is: Van mikor beferunk a kicsibe is, de azert kenyelmesebb a nagy helyen garazdalkodnunk. Hozza tennem, hogy a nagy lakas ketszer annyiba kerul, mint a kis lakas, szoval az sem mindegy hogy mennyi a budzsenk... ![]()
![]() ![]() ![]()
Ezt hogyan kéne helyesen megírnom?
Az asm blokk helyett egyszerűen
ANSEL=0; és ANSELH=0; Amott pedig RA4=1; és RA4=0; Ha nem megy, akkor írd be, hogy mi a hibaüzenet!
Köszi, működik.
![]()
És hogyan sikerült?
Szaladgál ide oda a fény a ledeken. Ha kapcsolok egy kapcsolóval (reed relé) akkor mindegyik led ég és a sötétség mozog.
![]()
A kérdésem arra vonatkozott, hogy mit csináltál ahhoz, hogy a fordító működik!
Sziasztok!
A pic18f14k50 oszcillátor konfigurálása 16 féle. Hol van az dokumentálva, hogy C18-ban miként kell az éppen szükséges értéket megadni? Pl. #pragma config FOSC = IRC
Köszönet!
(Régebbi típusokhoz viszont találtam, ezért nem a fordító helpjét néztem) Idézet: Például így:„Hol van az dokumentálva, hogy C18-ban miként kell az éppen szükséges értéket megadni?”
Sajnos sok más program megszoktatta velünk, hogy a helpjük nem sokat ér. Ezzel szemben az MPLAB egész jó ebben!
SZUPER!
Még az:
is működik!
Uninstaláltam a fordítót meg az mblabot aztán feltettem újra az mblab 8.70-es verzióját és a felajánlott fordítót. Ezután a P.W.-ban a univerzális HI-TECH fordítót választottam.
Köszi az infót, akkor jól gondoltam, hogy nem jól, vagy nem jó verzió volt feltelepítve. Jó programozást!
Hogyan tudok feltördelni egy változót karaktereire?
![]() valami ilyesmire gondolok:
Az int egy egész szám. Nincsenek karakterei. Ha a helyiértékeket akarod megszámlálni, és kijeleztetni(gondolom), akkor egyszerűen elosztod a legnagyobb helyiértékkel és egészként kezelve a hányadost megkapod a kívánt számott, utána kivonod a kapott értéket felszorozva a helyiértékkel és a maradékkal folytatod. Ha az ASCII kódot is elő akarod állítani, akkor hozzáadsz 48-at, és pont a megfelelő kódot kapod egy LCD-hez, vagy PC-hez megjelenítésre.
Sok megoldas letezik (mint mindenre). Pl itoa() fuggvennyel kiteszed egy stringbe es kikapod a megfelelo helyierteku karaktert...
Igen erre gondoltam de ez hogy csináljam.
A c#-al nem megy c-ben meg már rég csináltam ilyet.
Valami ilyesmi?
Persze ez alapesetben fordított sorrendben tölti fel a tömböt, de ez alapján már meg kellene tudnod csinálni.
Ok Köszi, majd próbálkozom!
Jó éjszakát.:nevetes2:
Most kezdtem el próbálkozni PIC programozással. A Hi-tech C fordítót sikerült felélesztenem (azt hiszem).
Van egy 12C508A-m, ezzel szeretnék HDD motort meghajtani. Ha jól értem, a GPIO-val tudom írni a kimeneteket (a GPIObits.GPx-szel bitenként). ezeket a 12C508A header file-jából lestem ki. Arra nem jöttem rá, hogyan tudom konfigurálni a lábakat kimenetként (illetve kellene 1 engedélyező bemenet). Tud vki segíteni? Mellékeltem a c file-t. Előre is köszönöm. |
Bejelentkezés
Hirdetés |