Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Üdv!
Pusztán kíváncsiságból, de megkérdezném hogy valakinek sikerült már életet lehelni a CCS ex_fat demo programjába? Az igazság az hogy mostanában nem tudok erre költeni, proteusban próbálnám összerakni a programot, de egyszerűen nem megy. Már összeszedtem egy kazal programot, de egyetlen egy volt ami működött (a proteusban ugyan azzal az áramkörrel, így gyanítom nem az a hunyó) de az csak olvasni tudott és a könyvtárakat is hibásan kezelte. Volt amelyik szépen olvasott mappástól mindenestől, a kártyára fel is írta a file-t, csak épp a FAT-ot felejtette el írni a drága. Valami olyan kéne ami ír olvas és PC kompatibilis marad (ez sem kis kihívás a fórumok szerint). A chan FsFat-ra monták hogy nagyon korrekt, azzal a portolásnál véreztem el. Tud vaalaki egy megbízhatóan működő FAT-ot CCS-re?
A CCS legfőbb előnye a sok példaprogram és beépített függvény. Ha pont ezeket nem használja egy program, akkor nem sok értelmét látom a portolásnak.
Hali
Szoval esetleg inkabb MPLAB, es HW proba. A proteus biztos szep es jo egyszeru HW-nel, de ez mar nem az a katergoria. MPLAB+PK2 HW debug szerintem hamarabb fog eredmenyt adni, mint a proteus. Lehet hogy a szimulacional van hiba, nem a programban.
vilmosd:
Mint írtam is, van olyan program ami működik a szimulációban, ezért bátorkodom feltételezni hogy túlzott baj nem lehet vele, bár nem kizárható, ezért is kérdeztem hogy valaki próbálta-e és milyen sikerrel. Pillanatnyilag nem tudok hardverre költeni, így ez a verzió teljes mértékben elvethető. icserny: A chan FsFat egy ismerősök által kipróbáltnak és beváltnak mndott progi, de CCS-re bizony portolni kéne CCS-re. Itt a beépített függvényekkel nem megyek sokra, de egy nagyon szépen átgondolt "gumiprogram". Nagyon jól lehet(ne) konfigurálgatni hogy csak az kerüljön bele amire tényleg szükség van, de ha kell mindent tud a FAT12-től a FAT32-ig, csak a CCS már a típusoknál eldobja az agyát. Sajnos nem tudom határozottan rámondani hogy azt sem hogy a szimulátor jó, de azt sem hogy a program hibás (bár a CCS fórumon javítgatták, de ennek ellenére sem megy a szimulátorban). Amit nem értek hogy ha a szimulátor hibás, akkor a másik miért megy? No mindegy, ha lesz lehetőség megoldom hardveresen, legfeljebb feleslegesen költök rá.
Háhh!! Pont tegnap keltettem azt életre.
Tapasztalatok: Mikor kiíratod a help paranccsal a dolgokat, a format() -nál hibás a magyarázat. 1024*2*(kicsit kevesebb mint a kártya mérete MB-ban) a helyes érték. Ha ezzel megformáztad, elvileg mennie kell. A becsatolt fat.c elején olvasd el a kommentet -például ha mappát hozol létre, akkor a "mkdir mappa" helytelen; "mkdir /mappa/" kell. Ez mondjuk csak addig érdekes, míg az eredeti példaprogramban játszik az ember. A formázás amúgy a kényes pont; szimulátorban lehet hogy minden rejtve marad... EZT olvasd még hozzá; itt pont arra buzdítanak hogy a gyári format()-ot el kell felejteni, mert "rossz helyen kezdi" a filerendszert. Eleinte nekem is döcögött, de a végső megoldás az lett hogy WinHex programmal TELJESEN üresre gyalultam az egész SD-t (feltölti 0-val), aztán a pic-kel formáztam, és akkor lett minden tökéletes. Jelenleg a laptop belső SD olvasója mindent tökéletesnek lát, míg a HP nyomtató kártyaolvasója hibát jelezve villog -de a windows azon át is jó kártyát lát, és a pic-kel felírt dolgok jól jelennek meg. Mikor a linken olvasható módon windowsban formáztam FAT32-re 512byte foglalási mérettel, a piccel felírt adatok a pic szerint látszottak; meg lehetett őket nyitni, stb, de a windows nem látta őket.
Nem akarok élősködni, de nagyon megköszönném, ha tennél fel kapcsolási vázlatot és felkommentezett mintaprogit is. Ugye nem nagy kérés...?
Sajnos nekem már az inicializálásnál (init_mmc) lehal a dolog. Mindenképpen az kell hogy amit a PIC ír azt a PC is tudja olvasni és vissza, azaz a tervezett projekt miatt a PC-vel felírt adatokat a PIC-nek kell olvasni, a PIC adatait pedig a PC-nek.
Ha azt mondod hogy vason megy akkor csak a szimulátorral lesz valami, pihentetnem kell a dolgot.
Az init_mmc még a "rendszerközeli driver" része. init_fat kell, az majd meghívja az init_mmc-t is. Hogy valójában konkrétan mi történik azt én is csak nagyon felületesen értem.
Én most a gyári ex_fat.c-t változtatás nélkül használtam úgy ahogy volt. Működik az, csak a formázás körüli dolgok érdekesek. Ha a 128MB kártyát 114MB-re formázom vele, nem megy. Ha 113-ra, minden jó. Ennek pl semmi értelme. Azt hiszem, végülis az a lényeg, hogy a pic formázza a kártyát, ne a windows. Nekem az vált be. Bekötés az annyi, hogy az itteni lábkiosztás szerint az SD kártya DO, CLK, DI, CS lábait kell bekötni (elvileg sima SPI kommunikáció folyik) VSS1 és VSS2-t együtt földre, VDD 3,3V. (gondolom ebből egyértelmű, hogy a pic-en mit hová kötsz. Az ex_fat elején úgyis bármit megadhatsz neki, csak a fast_io arra a portra is be legyen állítva a megfelelő TRIS bitekkel). Tegyem fel magát az példaprogramot?
Sziasztok! Előszöris az a gondom, hogy nem bírom rávenni az mplab-ot a debuggolásra pk2-vel. Amit szeretnék kideríteni (és ebben is kérnék segítséget), hogy miért van az, hogy csináltam (segítséggel )egy hőmérős progit, ami ment is szépen, aztán gondoltam kiegészítem egy "órával", no ekkor megbolondult. A hőmérő rész (kijel_ertek) elkezdett össze vissza mutatni, bár mintha lenne egy kis rendszer, olyan számlálás szerű. No erre kivettem az óra részeket, de akkor is ezt tette. Át tettem egy másik analóg lábra, de akkor is. A kijelzőnek az a része pedig ami a hőmérsékletet és az órát mutatná villog. Ha az utolsó három késleltetést kiveszem, akkor szinte nem is látszik. Ami a potit mutatná, az stabil, és teljesen korrekt. Bocsi a hosszért, de próbáltam részletesen leírni. Volt pár ötletem, ám mind kudarcba fulladt, ezért is próbáltam volna debuggal, de az meg nem megy.
Előre is köszi az újabb segítséget!
Szerintem nem szerencsés 40-50ms-enként az LCD-t törölni és újraírni. Próbálj meg egy hosszabb várakozást tenni aa ciklus végére (a többit nem egészen értem miért kellett)
Hali
Egy hiba:
Köszi! A többi azért kellett, mert az maradt mikor az ad-nek még nem volt külön függvény. A dupla egyenlőséget jól benéztem, csak tegnap óta próbálkozok De így jár aki nem figyel. php-ban szoktam eljátszani a pontosvesszővel, vagy a kétféle idézőjellel A kijelzést pedig megjegyzem! Köszi még egyszer Nektek.
Még egy kérdés: kapok egy figyelmeztetést: >>> Warning 225 "main.c" Line 16(0,1): Duplicate #define
Ezt miért? Nincs sehol máshol definiálva. Legalábbis én nem találtam. Vagy csak megint nem figyelek. És arra rá lehet venni, hogy ne szóljon ha direkt kergetek egy ciklust végtelenbe, vagy szokjam meg, ha ott van? No, kettő lett
És még egy: próbáltam átlagolni a mérést mert nagyon ugrált (igaz csak a 9700 jele, és azon nincs semmi szűrés, nem tudom a próba panelon hová tenni, gondoltam majd szoftveresen, és több helyen találkoztam az átlagolással erre a problémára), de nekem nem tetszik, bár sokat javított a helyzeten, viszont sok változót használ. Lehet egyszerűbben, főleg az elvre vagyok kíváncsi Amit kreáltam:
És bocsi a sok kérdésért, de amint látom, ahogy haladok előre nem kevesebb lesz hanem több Köszi a türelmet!
Csináltam egy állatorvosi ló programot ami minden (valóban szükséges dolgot) végigcsinál a kártyán. Találtam egy parancsot, amiből lehetett csinálni olyan olvasó függvényt ami egy használható tömbbe teszi a kiolvasott adatokat. A sok printf-t benne hagytam, hogy látszódjon mi történik.
Sziasztok!
Az lenne a kérdésem hogy CCSC-ben lehet-e configoló regisztert írni, mert sztem bugos a fordító, ugyanis erre a parancsra: enable_interrupts(INT_RB4); ezt a regisztert kellene írnia: F7D IOCB, 4.bit viszont ezt írja: F79 CM2CON1, 4.bit Ezért ha megoldható manuálisan beállítanám az IOCB-t Előre is köszi a segítséget!
Na megoldottam így:
IOCB regiszter címének megadása a define részen: #byte IOCB = 0xF7D aztán már tudom írni azt a regisztert: IOCB = 0b11110000; Így működik, de azért kérek véleményt ha van...
Hali
Ez igy a jo megoldas. Igy kikerulhetsz sok beepitett fvenyt, es egyszerusitheted a programot. Sot meg elosegiti a program hordozhatosagat is. A konyvtaramban talalsz ilyen mintapeldakat, ahol ugyanezzel a megoldassal irtak a programokat.
Lehet hogy ostoba kérdés, de ...
Sehogy nem tudom életre keltein az SD kártya olvasást. Most ott tartok, hogy a proteusban hibátlanul megy, összeraktam próbanyákon, természetesen nem működik. Ami nekem gyanús, és nem vagyok biztos benne, az az, hogy az 5V-on van egy 3,3-as stabkocka aminek a kimenetén így csak 2,9V ami már lehet kevéske? Már a kártya inicializálás sem sikerül neki...
Az konnyen lehetseges, de az igazi kerdes mitol esik le a fesz? Valami ott tulsagosan leterheli, avagy a stab kockad nem megfelelo teljesitmenyu?
Elvileg mennie kéne 5V-ról (én hajtottam így pic-et gond nélkül), de ez a 2,9V nem tűnik egészségesnek. Nézd meg a datasheetjében a minimális bemenő feszt, vagy a dropout-ot.
Újabb UFO jelenség, amit nem fogok megfejteni.
Az adatlap szerint a dropout max. 1.2V (LD33 egy agymenés már a lábkiosztása is) Ráakasztottam 9V bemenő feszt, és lőn csoda, a kimenet 3.3V Aztán hogy ez megoldja-e, az majd kiderül, most át kell variálni a próbapanelt és össze kell tajkolni valami külső 5/3.3-as tápszerűséget.
Nagy kérdés, hogy mit kaptál LD33 néven... Tanulságos végigolvasni a megadott topikszálat:
Bővebben: Link
Nekem elárulták a lábkiosztást a boltban, de megtaláltam az adatlapját is.
A feszültségek rendben vannak, de az SD kártya továbbra sem működik. Azt hiszem feladom... Ez a program proteusben megy, ( már ez is ritka ) de ha összerakom - már harmadszor - akkor sem. Init error. Ja, és a soros porton is szemét megy ki. ha a FUSEST lecserélem erre #FUSES NOWDT, WDT128, HS, NOPROTECT, NOBROWNOUT, BORV20, NOPUT, NOCPD, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOIESO, NOFCMEN, NOPBADEN, NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, MCLR, LPT1OSC, NOXINST, PLL1, CPUDIV1, NOUSBDIV, NOVREGEN, ICPRT a sorosport legalább elindul rendesen. Nincs valami ötletetek?
Egymásnak ellentmonó dolgok vannak a fuse bitek közt...
NOWDT ne legyen watchdog. WDT128 legyen watchdog. NOBROWNOUT ne legyen brownout. BORV20 2V-nál reseteljen (tehát 3,3-ról nem is indul). Amit linkeltél, az filerendszert szerintem nem hoz létre. Az órajelet sem lehet így beállítani, a fordító erről illedelmesen hallgat... Nézd meg ezzel: #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL5,CPUDIV1,NOBROWNOUT //20MHz kvarchoz #use delay(clock=48M) (Tehát a berakott kvrackristály ferkvenciája *osztva* "PLL" utáni szám ==4 kell legyen.) Azt írtad, hogy a PC-nek látnia kell majd, mi van a kártyán; így max egy picen át fogja, ami olvasgatja a kártyát.
A #FUSES úgy néz ki jó lesz, csak törölni kellett a PIC-et... mondjuk ezt sem teljesen értem, de továbbra sem megy.
DI és DO vonalak fel vannak húzva tápra (10k)? SD kártya DO lába bemenetre állított PIC lábra megy (DI meg kimenetre)? Több ötletem nincs.
A filerendszer az már egy nagyon távoli jövő, most ott trartok hogy kezdem feladni.
Akár mit csinálok (18F4620, 18F4550, 16F877) semmi... Egyenlőre azt szeretném látni hogy egyáltalán valami írja olvassa azt a nyavajás kártyát, de eddig ami programot és rajzot találtam mind meghalt már a kártya inicializálásba. Se 74HC125-el se nélküle sesehogy. A PIC 5V-ról megy, a kártya 3,3V-ról, de tesznek rá. Kezd elegem lenni belőle. Három hete képtelen vagyok összerakni valamit ami legalább az init-en túljutna. Ezek legalább a szimulátorba működtek, az előzőek még ott sem, ezért balga módom bíztam benne hogy menni fog, de nem. A DI /DO se felhúzóval (3,3-ra) se anélkül.... Valaki nagyon útál... Azt a mozgássérült FUSES-t a wizard gyártotta le egyem a lekét, de azzal legalább a soros port elindult. |
Bejelentkezés
Hirdetés |