- #define datum "Mon Jul 11 10:56:42 2011"
Fórum témák
» Több friss téma |
Fórum » PIC programozás
Ha valahogyan lehet tudni, hogy melyik programot hivja meg a forditashoz, akkor annak a nevet lelopni, elotte egy sajat progit betenni azon a neven, ami aztan majd utana inditja az eredetit, de elotte csinal egy include file-t, egy sorral, ami a napi datumot teszi be. Az eredeti forditando progiban ott kell lennie egy
#include datumos.inc sornak. Persze, nem egyszeru megcsinalni. De ha nem fejlesztokornyezetet hasznalsz, akkor egyszeru.
Ja, így lehet, de az MPLAB-ban nincs olyan menüpont hogy: "EEPROM adatba aktuális dátum beírása.. "
![]()
Most így működik:
Azt szeretném, ha a dátumot nem kellene mindig beírnom a forrásba, hanem pl. így nézne ki:
Ahaa. Értem. Végülis lehet van valami parancs, ami szól a fordítónak hogy oda valamit rakjon be (esetünkben a dátum..), de én még konkrétan ilyennel nem találkoztam.
A C30 fordító esetén az MPLAB generál __DATE__, __TIME__, __FILE__ nevű makrókat.
Ha olyan fordítót használsz, amelyik nem definiál ilyen makrókat, akkor pedig van egy gyalog módszer: Az MPLAB projekt opciók között meg lehet adni egy Pre-Build Step és/vagy egy Post-Build Step parancssort. Itt elindíthatsz egy olyan scriptet (pl. Perl), ami beírja az aktuális dátumot a neked megfelelő formában egy forrásfájlba, amit be tudsz csatolni. Esetedben természetesen a Pre-Build Step-et kell használni,ami fordítás előtt fut le.
Köszönöm!
PIC16F1823 a tok, így az MPASM-et használom. win7 alatt parancsorból megy a dátum date /t > datum.txt -vel, de a #define datum "ev.ho.nap" formátum egyetlen sorban már meghaladja a képességeimet. Az echo #define " > datum.txt date /t >> datum.txt jó lenne, ha egy sorba lehetne vele írni. Másik dolog, hogy a project mappájában futtatva a hozzáférés megtagadva üzenetet kapom, de ez gondolom valamilyen beállítással megoldható.
Köszönöm ezt a hozzászólást!
Sokat segített, bár részleteit ismertem, de most esett le a tantusz, hogy automatizálni lehet a folyamatot. Én egy .exe fájlt használok, ami létrehoz egy .include fájlt, ezt simán #include-dal beillesztem az assembler forrásba. A projekt beállításai között a pre-build parancsot is ismertem, de mostanáig eszembe se jutott, hogy az include generálásához felhasználjam.
Azt kipróbáltad, hogy létezik-e __TIME__ vagy __DATE__ makró, még mielőtt bonyolítod az életed?
Nemtudom, holnapig nem lesz kéznél mplab. Csak azt tudom, hogy a C18-ban fordítva az Ethernet Stacket ott is léteznek ezen makrók és hátha léteznek asm-ben is.
![]() Az még nagyobb probléma, hogy a Win7 és MPLAB kombó is foggal-körömmel védi az álláspontját, miszerint ilyent nem szabad csinálni... ![]() C-ben nekem is ott van.
Gyalog módszerül a Turbo PASCAL 7 -et választottam, az exe mindössze 4 KByte. A PERL-t másra nem használom, így csak a helyet foglalná. Működik Pre-Build Step-el, de apró szépséghibája, hogy konkrét helyet kell megadnom, ahová a futtatás eredménye kerül.
Létezik még az MPASMWIN- nek egy /d paramétere, ahol röptében lehet hasonló eredményre jutni, de ezt nem sikerült beüzemelni.
Ez egy jó megoldás. Egy ötlet: könnyebb lenne felhasználni, ha a kiírt sor elejére odaírnád, hogy #define .
Elküldés után észrevettem, hogy maradt benne pár baki, de már nem sikerült korrigálni...
Ez is nagyon jó megoldás, amit csináltál.
Én viszont nem szeretek fölöslegesen programokat írni, ezért használom az AWK vagy Perl script nyelveket. Windows XP cmd ablakjában pl. így néz ki az Active Perln-nek szóló parancs (a sok backslash az egymásba ágyazott macskakörmök miatt kell):
Az eredmény pedig: A fájlba írás pedig kacsacsőrrel adható meg...
Ez se rossz...
![]() Az egyetlen probléma, amit én látok (és talán csak az én egyéni szemszögemből probléma), hogy a keletkező dátum formátumát a rendszer szabja meg. Meg az, hogy én nem használok Pearl-t. Az én megoldásom AutoIt-ben íródott...
Az erednény:
Régebben használtam perl -t, de emlékeim szerint 50-100 MByte körül volt a telepítő, így arra nem is gondoltam.
A legegyszerűbb, de célravezető megoldások híve vagyok és úgy sejtem, hogy akár dos -ból is megoldható. (Ha tudnám, hogyan lehet két különböző dolgot egyetlen sorban megjeleníteni ![]()
Nem tudom DOS-bol mukodik-e, de pl Win XP CMD ablakban:
Nem kell tul bonyolitani a helyzetet ![]()
Hali!
Teljesen kezdő vagyok, de ahogy lesz időm szívom magamba a tudást a fórumról. Kérdés: működőképes HEX állományt vissza lehet-e fordítani, hogy tanulmányozni és módosítani lehessen a programot ...kösz
Vissza lehet fordítani, illetve a debuggerben lehet látni egy disassembly listát. Viszont értelmetlen, csak legvégső esetben javallott. Ahhoz, hogy értelmezni tudd, fejből kellene tudni regiszterek címét... Jobban jársz, ha magad írsz meg a programot.
A Microchip honlapjáról le lehet tölteni a demo panelek szoftverét, azt lehet tanulmányozni, módosítani.
Szia, igen, vissza lehet fejteni, jo par evvel ezelott magam is irtam UnPIC nevu disassemblert, ami a regiszter neveket is vissza szedi figyelve a bank valtasokra stb.
Azota lehet mar vannak jobbak is, nekem nem volt idom es energiam tovabb fejleszteni, es csak 12F; 16F sorozatokra jo.
Szia!
A bankváltásokra hogyan lehet figyelni ( adott esetben tudni kellene, honnan ugrik oda ! ) ? Steve
Pontosan! Gyakorlatilag statikusan felterkepezi honnan hova ugrik es ugy szamolja ki -- tulajdonkepp egy kod bejarasi fat epit fel ehhez.
Üdv!
Léenne egy olyan kérdésem, hogy egy 12C508A-típusú picet újra lehet e programozni Pickit 2-vel a hagyományos ICSP-s megoldással? Azért kérdezem mert úgytudom, hogy a C-s típusokat csak egyszer lehet írni, de valahol találkoztam már olyan infóval hogy újra lehet progizni valahogy.... Ha van valami infótok erről azt megköszönném! ![]()
Szia!
Csak egyszer programozható típus. Így sajnos nem lehet újraprogramozni.
Szia!
Tényleg csak egyszer programozható, ráadásul a C típusokat nem kezeli a PICKit2, használj helyette 12F508 -at. De vannak ötletek, amivel néhány verziót ki lehet próbálni egy egyszer programozható típussal is. Az ötlet alapja, hogy egy beprogramozott utasításból lehet még nop - ot (0x0000) -t csinálni. A reset és a megszakítás kiszolgáló (tudom, ezen a típuson nincs megszakítás) ugorjon egy egy hosszabb feltartott programterületre. A területek első utasítása az első verzióban ugorjon a megfelelő rutinra. A második verzióban erre a két utasításra fordítsunk nop-ot, a következőkre a második verzió rutinjaira való ugrást. És így tovább.. A harmadik verzió már 2 - 2 nop után ugorjon a kiszolgálókra. Ha a program rövid, többször belefér a program memóriába, néhány módosítás kipróbálható egy példányon...
Erre nem is gondoltam ( bár nem használok 'C'-s kontrollert!) és korábban hasonlót és is használtam kvarcablakos EPROM-nál !
Steve
Vannak elvetemultek akik pl rontgennel probaljak meg torolni es ujra irhatova tenni (pl megbeszelik ismeros dokival, hogy had hagyjak az IC-ket par napig a keszulek kozeleben). Vagy lecsiszoljak a muanyagot, hogy EEPROM-ot csinaljanak belole. De szerintem minden ilyen kiserlet elvetemult otlet. Helyette vagy ICE-t kellene hasznalni megfelelo debug headerrel vagy F-es IC-ben fejlesztgetni es csak a vegleges kiprobalasra beegetni (nyilvan arra is kell lesz majd egy jo par C-s, hogy tobb valtozatot is leteszteljen az ember). De en mar manapsag nem foglalkoznek C-ssel hacsak nincs valami oka ra pl Microchip-tol lehet rendelni elore beprogramozottan is cuccot (vagy legalabbis regen meg lehetett), es akkor azt ilyen OTP-s eszkozokbe tettek bele.
Köszi az infókat, egyébként csak véletlenül találtam két ilyen C-s pic-et és nem akartam kidobni...Célom nincs velük, de ha lehetett volna progizni akkor valami biciklivillogónak megcsináltam volna őket
![]() |
Bejelentkezés
Hirdetés |