Fórum témák
» Több friss téma |
Oké. Ebben egyetértek veled, igazad van. De olyan programozási részletekre gondolok, ami a a pc-s programozásban nincs.
Van, persze. Minden compilernek megvan a maga metódusa. Javaslom, hogy ha megy a C általános dolgai, akkor töltsd le az adott cégek reference manual-jait.
Pl.: CCS C Bővebben: Link vagy HI-tech PICC : Bővebben: Link
Hello.
Köszönöm a linket. Átnéztem CCS C referenciát. Nagyon jó bemutatót kaptam a C-s pic programokról.A parancsok eléggé logikusak, jól érthetőek számomra. Programoztam Pascalban és PHP ben.A C szintaxisa nagyon hasonló szerintem a PHP hoz, csak ebben vannak + dolgok.No szerintem elkezdek egyszerű pic-es villogókat tervezni, meg hasonló. Akkor van ez CCS-C, ez ami leforditja nekem a C fajlt hex-re.Akkor még kell az ami beégeti nekem a picbe?És kell egy égető áramkör.
Pontosan így van.
Sziasztok!
Fejembe vettem, hogy írok egy saját szoftveres I2C rutint mcc18-ban. Nincs gondom a programmal, sokkal inkább a fordítóval. Azt szeretném, ha lenne egy OPEN_S_I2C rutinom, amit paraméterezni tudnék, benne a kiválasztott portlábakkal, sebességgel, stb. Az usart.h példájából próbáltam ötletet nyerni, de kevés sikerrel. Kiragadtam a következő részt:
Próbáltam keresni, hogy miképpen és főleg hol dolgozza fel a kapott paramétereket a fordító, de nem találtam. Az én problémám, hogy miként tudok átadni egy függvénynek #define szintű paramétereket. Nyílván ezt csak az előfordítás ütemében lehet. Örömmel vennék egy kis útbaigazítást! Köszi!
Közben megnéztem a gyári I2C rutinokat, és rájöttem ,hogy ott sem oldották meg ezt a problámát, inkább rábízták a felhasználóra, hogy állítsa be a header fájlban. Ezek szerint ez túl macerás lenne, ha ők sem álltak neki...
Sziasztok! Tudna valaki segíteni nekem. Én nem értek a programozáshoz de szernék módosítani, egy már meglévő progit.Arra lenne szökségem, hogy az első relé(vagy a második, mindegy)riasztás ideje alatt bekapcsoljon. ez lenne a fontosabb, de ha meg lehet oldani ,hogy a másik relé pedig a riasztó áram alá helyezésekor, vagy resetkor 2mp-ig behúzzon, ez a telefon bekapcsolását oldaná meg.
A segítséget előre is köszönöm. Mellékelem a progit hex-ben és asm-ben és a hardver rajzát is.
HI
Bekötési gondokkal küzdök! Vettem egy 202A /DISPLAYTECH/ tipusu LCD-t és nem nagyon akar működni nem tudom, hogy a progival van gond vagy a bekötés nem ok. Aki jártas lcd vezérlésben annak nem jelent nagy gondot, de én most próbálom először (ccs-ben) köszi a segítséget! Idézet: „Aki jártas lcd vezérlésben annak nem jelent nagy gondot” Az ilyen jellegű megjegyzések sértőek, mert úgy tűnik, hogy nem sokat ér az a tudás, mert gond nélküli. Ezt el kéne felejteni. Ami időbe telik, az gondot jelent. És nem egyszerű annak sem, aki már csinált ilyet, mert nem biztos, hogy ugyanúgy kell vezérelni minden LCD-t és a feladat is lehet más a megjelenítésben. Az sem kis nyűg, hogy egy olyan programot kell megérteni, amit nem a saját logikánk szerint építettek fel. A kérdésedre pedig két kérdéssel válaszolnék: A kontrasztot beállítottad, biztosan jól? Az adatlap szerinti inicializálási lépéseket és időket biztosan betartod? Idézet: „...nem tudom, hogy a progival van gond vagy a bekötés nem ok.” Mind a kettővel gond lesz, bár az utóbbiról nem tettél fel rajzot vagy leírást. Az hogy először próbálod, még nem mentesít attól, hogy elővedd az LCD adatlapját. Úgy látom nem tetted meg. Ahhoz, hogy kiderítsd mi a hiba, jó pár dolgot meg kell tudnod válaszolni. Csak rávezetés képpen: - Milyen üzemmódokban működtethető az LCD? - Ez a forrás szerint nálad hogy van beállítva? A PIC és az LCD összekötése ennek megfelelő? - Az LCD iniciáló része a forrásban a kiválasztott üzemmódnak (na meg az adatlapban megadottak szerint) megfelelően van megírva? - Mi a különbség az adat és a parancsküldés között? Ezt a forrás megfelelően végzi? A fentiek alapján ki fog derülni, hogy az összehuzalozás és a forrás is hibás. Elárulom, hogy javítás után szimulátorban működik... Vannak a kódban humoros részek:
Sziasztok!
Neki kezdtem C-t tanulgatni, és elakadtam a megszakításoknál. A nullához közeli angol tudásommal, és egy szótárral, a helpből azt sikerült kihámozni, hogy egy interrupt nevű függvényt hív meg a megszakítás, és a regiszterek mentésével nem kell foglalkozni. Gondolom valamit rosszul értelmeztem, de nem megy. Egy ledet szeretnék villogtatni. A microc-ről van szó, és pic18f4550-ről. Előre is köszi a válaszokat!
ADCON1-et nem nullába kell állítani, de nem mondom meg, hogy hová, nézd ki az adatlapból. Ez most épp nem okozza a problémát, de korrekt munkához kell ez is.
T1CON = 199; Ezzel a következőt éred el: kiválasztod, hogy a Timer1 a külső oszcillátoráról működjön, viszont a külső oszcillátort meg letiltod. Így a Timer1-nek nincs órajele, nemis okozhat megszakítást. Tehát ha van Timer1 külső oszcillátor, akkor azt kell engedélyezni, ha nincs, akkor meg úgy beállítani, hogy a belső órajelről járjon a Timer1. Szintén jelenleg nem okoz problémát, de meg kell kérdezzem, azt hol láttad, hogy a GIE bitet macerálni kell a megszakítási rutinban? Nem kell sok angol tudás az adatlapok megértéséhez, de az a kevés az nélkülözhetetlen. Illetve ha már most tanulod a C-t, akkor miért nem a C18-at használod? Bár mondjuk az egy picit bonyolultabb, de ha a ledvillogtatáson túljutsz, akkor szerintem állj át arra.
Köszi a segítséget!
A 199 jó volt, viszont a timer 0-át akartam használni, nem tudom, hogy kavartam be az egyet. De ha nem írod, néztem volna napokig! Az adcont megnézem. Azért ezt a fordítót néztem ki, mert szimpi a helpje. De még képlékeny a dolog, legalább már C és nem Pascal A GIE bitet a Kónya könyv első részéből szedtem, azt írja, hogy a megszakítás kezelése alatt tiltani kell a megszakításokat. Köszi még egyszer!
Akkor legalább mostmár tudom, hogy honnan származik ez a GIE bit macerálás. Na akkor ezt felejtsd el, mert ez úgy hülyeség, ahogy van. A hardver tiltja a GIE bitet, amikor a megszakítási rutinra ugrik, mert ha nem tiltaná, akkor végtelen ciklusban ugrálna a megszakítási rutin kezdőcímén, amíg túl nem csordul a return stack (nemtudom, ennek mi a magyar neve, ebben tárolódik el az aktuális utasítás címe, amikor bejött a megszakítás). Engedélyezni szintén nem szabad kézzel, hanem a megszakítási rutin végén levő RETFIE utasítás állítja vissza. A kézzel nullázás valószínűleg semmi problémát nem okozna, csak felesleges, mert már úgyis nullán van, viszont a kézzel engedélyezés már további problémákat tud felvetni, ha az engedélyezés és a regiszterek visszaállítása között beesik egy másik megszakítás.
Szia!
Melyik könyvéről beszélsz ( 1,2 vagy 3. kiadás melyik oldal ) és hol láttad, mert én korrektnek tudom a leírt dolgait és a könyvében sem ismerek ilyen hibát ( sőt a harmadik kötetet megnézve kifejezetten azt írja, hogy a hardver állítja a bitet!!) ?! Steve
Köszi, elfelejtem!
Kissi: Az elsőben, csak azt olvastam, de már nem tudom az oldalt (már nincs nálam a könyv, rég volt, és persze nálam, az sem zárható ki, hogy rosszul emlékszem), harmadik kiadás meg van, de még nem jutottam a végére.
Szia!
Akkor olvasd el a 3.kötet megszakításra vonatkozó részét, hasznos lesz! Steve
Megnéztem, de ilyet nem ír, hogy kézzel kellene állítani.
"A megszakítások globális engedélyezésére/tiltására a GIE bit szolgál. A megszakítás kiszolgálásának kezdetekor a hardver törli a GIE bitet és a visszatérési címet a verembe rakja. .... A RETFIE utasítás GIE-t 1-be állítja és a verem tetején levő címet a PC-be tölti..."
Nos, azt hiszem ezzel többet nem lesz gondom, szerintem egy életre a fejembe vertétek!
Sziasztok......Segítségeteket kérném! Feltettem a CCS compilert es mindig "Error: The selected compiler: "PCM" is not installed on this PC
Halting build on first failure as requested. " ezt irja ki....mi lehet a baj? feltettem a crg-ket és akkor se megy....akkor valami "adress" hibát jelez..
naa valamivel előbre jutottam.... most mar csak valami dll fáljt kér tőlem plss!!!
Feltételezem, hogy nem a demó változatot telepítetted (mert az nem működik helyesen bemásolt CRG állományokkal).
Ha a PCM modult akarod használni, akkor a telepítési konyvtárban (.../PICC) lenni kell egy pcm.crg állománynak. A .../PICC/DLL könyvtárban pedig lenni kell egy pcm.dll állománynak. Ha nincs ott, akkor nem jó változatot telepítettél. Bővebb információ a CCS PIC Compiler topikban található.
Köszi szépen. Már megy minden. Mégegy utolsó kérés. Nem tudsz egy olyan oldalat ahol fent vannak a pices ccs parancsok meg az is hogy mi mire van???... mert pár parancsot nem annyira ismerek...
A Help (.chm) állományokat érdemes olvasgatni. Ezen kívül
a CCS C Referencia kézikönyvei is hasznos olvasmányok. Bővebben: Link
Sziasztok! Megint én.
Most egy lcd problémám van: nem megy. A forrás a help-ből van átmásolva, csak egy ledet tettem bele, hogy lássam beindul e a pic. Létezhet, hogy a help rossz? Bár inkább arra gyanakszom, hogy valamit rosszul módosítottam a proci miatt, ott egy 16f887 volt, nekem pedig 18f4550 van. Az lcd jó, kettővel is próbáltam, az egyik egy másik kütyüben működik. Előre is köszi a segítséget!
Nos, kicsit előrébb jutottam: ledeket raktam a kijelző helyére, és miután az adcon1-et átírtam 15-ről 14-re, már villogtak is.
De a kijelzőn továbbra is semmi. ( Bár a ledek az elején össze vissza villódznak, pár másodperc után beáll úgy, hogy a d0-át 1-ben tartja, a d1-et kapcsolgatja, viszont az en meg sem mozdul, nézve a kijelző adatlapját azért valami halovány fényt kellene látnom, persze lehet hülyeséget írok. Végülis nem vagyok én olyan "gyorslátó" ) Szóval még mindig elkelne egy kis segítség.
Hali!
Nemrég kezdtem pic-et programozni és az alábbi problémába ütköztem. Grafikus kijelzőre való karaktereket (8x6-os) deklaráltam tömbben (mind a 256-ot). A fordítás után ezt a hibaüzenetet kaptam: C18 fordítót használok: MPLINK 4.33, Linker Copyright (c) 2009 Microchip Technology Inc. Error - section '.idata_GLCD.o' can not fit the section. Section '.idata_GLCD.o' length=0x00000600 Errors : 1 Tudna valaki segíteni? Idézet: Biztosan tudnánk, ha megírnád, hogy hogyan deklaráltad! „Tudna valaki segíteni?” |
Bejelentkezés
Hirdetés |