Fórum témák

» Több friss téma
Fórum » PIC programozás
 
Témaindító: G-Lex, idő: Okt 24, 2005
Lapozás: OK   41 / 66
(#) bbalazs_ válasza zenetom hozzászólására (») Júl 9, 2011 /
 
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.
(#) zenetom válasza bbalazs_ hozzászólására (») Júl 9, 2011 /
 
Ja, így lehet, de az MPLAB-ban nincs olyan menüpont hogy: "EEPROM adatba aktuális dátum beírása.. "
(#) Bell válasza zenetom hozzászólására (») Júl 9, 2011 /
 
Most így működik:

  1. #define datum "2011-07-09"
  2. #define vegallaskapcsolok igen
  3. ...
  4. DATAEE    ORG  0xF000
  5.         de      datum,vegallaskapcsolok,frekik...

Azt szeretném, ha a dátumot nem kellene mindig beírnom a forrásba, hanem pl. így nézne ki:
  1. DATAEE    ORG  0xF000
  2.         de      __DATE,vegallaskapcsolok,frekik...
(#) zenetom válasza Bell hozzászólására (») Júl 9, 2011 /
 
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.
(#) icserny válasza Bell hozzászólására (») Júl 9, 2011 / 2
 
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.
(#) Bell válasza icserny hozzászólására (») Júl 9, 2011 /
 
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ó.
(#) nedudgi válasza icserny hozzászólására (») Júl 10, 2011 /
 
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.
(#) potyo válasza nedudgi hozzászólására (») Júl 10, 2011 /
 
Azt kipróbáltad, hogy létezik-e __TIME__ vagy __DATE__ makró, még mielőtt bonyolítod az életed?
(#) nedudgi válasza potyo hozzászólására (») Júl 10, 2011 /
 
Igen. Szerinted van ilyesmi?
(#) potyo válasza nedudgi hozzászólására (») Júl 10, 2011 /
 
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.
(#) nedudgi válasza potyo hozzászólására (») Júl 10, 2011 /
 
, hát igen, ott illene lenni. De az assembler esetén nincs ott.
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.
(#) Bell válasza icserny hozzászólására (») Júl 11, 2011 /
 
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.
  1. Program Intro_to_Files (input, output);
  2. uses Dos;
  3.  
  4. {This program opens a file }
  5.  {and writes some text to it}
  6.  
  7. var
  8.   My_File : text;
  9. var
  10.   Hour,Min,Sec,HSec,ev,ho,nap,hetnapja : word;
  11.  
  12. Function L0(w:word):string;
  13. var
  14.   s : string;
  15. begin
  16.   Str(w,s);
  17.   if w<10 then
  18.    L0:='0'+s
  19.   else
  20.    L0:=s;
  21. end;
  22.  
  23.  
  24. Begin
  25.  
  26.   {associate data.txt to the}
  27.   { variable My_File}
  28.  GetTime(Hour,Min,Sec,HSec);
  29.  GetDate(ev,ho,nap, hetnapja);
  30.   WriteLn('Current time');
  31.   WriteLn(L0(Hour),':',L0(Min),':',L0(Sec));
  32.  
  33.   Assign(My_File, 'c:\users\admin\inc\datum.inc');
  34.  
  35.   Rewrite(My_File);       {open the file}
  36.  
  37.   {write to My_File}
  38.   Write(My_File, '#define datum "');
  39.   Writeln(My_File,ev,'-',L0(ho),'-',L0(nap),' ',L0(Hour),':',L0(Min),':',L0(Sec),'"');
  40.  
  41.   Close(My_File);
  42.  
  43. End.

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.
(#) nedudgi válasza Bell hozzászólására (») Júl 11, 2011 /
 
Ez egy jó megoldás. Egy ötlet: könnyebb lenne felhasználni, ha a kiírt sor elejére odaírnád, hogy #define .
(#) Bell válasza nedudgi hozzászólására (») Júl 11, 2011 /
 
Elküldés után észrevettem, hogy maradt benne pár baki, de már nem sikerült korrigálni...
(#) icserny válasza Bell hozzászólására (») Júl 11, 2011 /
 
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):

  1. perl -E "$td=localtime; print \"#define datum \\\"$td\\\"\" ;"


Az eredmény pedig:
  1. #define datum "Mon Jul 11 10:56:42 2011"


A fájlba írás pedig kacsacsőrrel adható meg...
(#) nedudgi válasza icserny hozzászólására (») Júl 11, 2011 /
 
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...
  1. $fo=FileOpen('C:\Users\nedudgi\Documents\Projektek\buildtime.h',2)
  2. $ft=FileGetTime('C:\Users\nedudgi\Documents\Projektek\buildtime.h',2,0)
  3. FileWriteLine($fo,'#define      _buildtime      "'&$ft[0]&'-'&$ft[1]&'-'&$ft[2]&'/'&$ft[3]&':'&$ft[4]&':'&$ft[5]&'"')
  4. FileClose($fo)
  5. Exit

Az erednény:
  1. #define _buildtime      "2011-07-11/15:09:55"
(#) Bell válasza icserny hozzászólására (») Júl 11, 2011 /
 
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 )
(#) trudnai válasza Bell hozzászólására (») Júl 12, 2011 / 1
 
Nem tudom DOS-bol mukodik-e, de pl Win XP CMD ablakban:

  1. C:\> echo #define datum "%date% %time%" > datum.h


Nem kell tul bonyolitani a helyzetet
(#) Bell válasza trudnai hozzászólására (») Júl 12, 2011 /
 
Tökéletes!
(#) Kovács Tibor hozzászólása Júl 13, 2011 /
 
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
(#) nedudgi válasza Kovács Tibor hozzászólására (») Júl 13, 2011 /
 
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.
(#) trudnai válasza Kovács Tibor hozzászólására (») Júl 13, 2011 /
 
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.
(#) kissi válasza trudnai hozzászólására (») Júl 13, 2011 /
 
Szia!
A bankváltásokra hogyan lehet figyelni ( adott esetben tudni kellene, honnan ugrik oda ! ) ?

Steve
(#) trudnai válasza kissi hozzászólására (») Júl 13, 2011 /
 
Pontosan! Gyakorlatilag statikusan felterkepezi honnan hova ugrik es ugy szamolja ki -- tulajdonkepp egy kod bejarasi fat epit fel ehhez.
(#) Balagemann2031 hozzászólása Júl 25, 2011 /
 
Ü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!
(#) El_Pinyo válasza Balagemann2031 hozzászólására (») Júl 25, 2011 /
 
Szia!
Csak egyszer programozható típus. Így sajnos nem lehet újraprogramozni.
(#) Hp41C válasza Balagemann2031 hozzászólására (») Júl 26, 2011 /
 
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...
(#) kissi válasza Hp41C hozzászólására (») Júl 26, 2011 /
 
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
(#) trudnai válasza Balagemann2031 hozzászólására (») Júl 26, 2011 /
 
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.
(#) Balagemann2031 válasza trudnai hozzászólására (») Júl 26, 2011 /
 
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 Üdv!
Következő: »»   41 / 66
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem