Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   141 / 1319
(#) potyo válasza GTI hozzászólására (») Feb 2, 2008 /
 
Itt alul találod a Downloads rész alatt. Azért nem írok direkt linket, mert regisztrálni kell hozzá, hogy letölthesd. Ez nem teljes verzió, de 60 nap után a csak az egyes chipeknél levő bővített utasításkészlet használatát tiltja le, illetve az optimalizálások közül a "Procedural abstraction"-t. Minden egyéb tekintetben teljesértékű, komoly fejlesztéseket végzők számára is megfelelő az ingyenes verzió.
(#) trudnai válasza VrGakos hozzászólására (») Feb 2, 2008 /
 
Vagy vadaszni kell egy kesz rutingyujtemenyt az lcd-dhez, es akkor nagy valoszinuseggel szabvanyos vagy ahhoz hasonlo fuggvenyekkel lehet ikalni.

Ha ilyet nem talalsz vagy nem megfelelo akkor neked kellene ezt megirni - szerencsere a C-ben eleg konnyu string kezeloket irni, pl egy putstr fuggvenyt ami egy nullaval terminalt stringet kikuld az lcd-re. Ha mar 1 karakter kiirasa sikerult, akkor ennek a fuggvenynek a megirasa sem jelenthet tul nagy problemat.
(#) potyo válasza VrGakos hozzászólására (») Feb 2, 2008 /
 
Én az ilyesmire jobban szeretek saját függvényt írni, akkor tudom, hogy az mit csinál. Egyszer kell megírni, és utána esetleg csak egy kicsit módosítani az alkalmazástól függően.

Nem írod, milyen C-t használsz, CCS esetén a drivers könyvtárban van LCD.C néven egy fájl, abban vannak kész rutinok. De sosem használtam, nemtudom, hogy milyen lcd-hez vannak.
(#) gulasoft hozzászólása Feb 2, 2008 /
 
Hali.
Gondoltam kicsit kipróbálom ezt a c-t egy kicsit, elvégre a diplomamunkámat abban írtam anno.
Mivel ez egy pic24fj64g002-es ezért a microchip oldalról ezt szedtem le:
MPLAB_C30_v3_02-StudentEdition.exe
fel is ment, kérdezte módosítsa e a path-okat mondtam persze, baromi bonyeszos hello.c examlet betöltöttem, kiválasztottam a configure-ban a fenti chipet, megmondtam, a project/select language-ban kiválasztottam a c30-at csináltam egy tök üres linker scriptet, mert ezt írta:
Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=24FJ64GA002 -c -x c "hello.c" -o"hello.o" -g -Wall
Skipping link step. The project contains no linker script.
BUILD FAILED: Sat Feb 02 23:45:00 2008
Ezek után ujra build egymilló sor kijött egyik sor error:
c:\program files\microchip\mplab c30\bin\pic30-coff-ld.exe Error: A heap is required, but has not been specified
végeredmény:
Link step failed.
BUILD FAILED: Sat Feb 02 23:47:46 2008
mi a fenét kell írni a linker file-ba?
(#) gulasoft válasza gulasoft hozzászólására (») Feb 2, 2008 /
 
Végül is találtam egy könyvtárban egy a chip-emnek megfelő linker filet, amitől a helyzet jobb lett sok uga megszűnt de most meg ez jött:
c:\program files\microchip\mplab c30\bin\pic30-coff-ld.exe Error: A heap is required, but has not been specified
Link step failed.
BUILD FAILED: Sat Feb 02 23:53:48 2008

Aztán a project build configban megtaláltam a heap méret beállítást, úgyhogy megoldódott.
(#) speki válasza trudnai hozzászólására (») Feb 3, 2008 /
 
már megtaláltam a hibát nem volt jó a kábel de azért kösszi . de lenne még egy kérdésem,hogy lehet a picből ki olvasni mert véletlenül letöröltem a programot a picben meg még meg van
(#) Norberto válasza speki hozzászólására (») Feb 3, 2008 /
 
Ha nem kódvédett a PIC-ben lévő tartalom, akkor egy PIC-égetővel pillanatok alatt kiolvasható a tartalom. Ezt a tartalmat viszont átlátni elég bonyolult feladat, sőt, majdnem hogy lehetetlen. Ha a PIC kódvédett, akkor nincs esélyed.

Jobban járnál, ha feltennél a gépre (ahol a forrásprogramod volt) egy fájl-visszaállító szoftvert, ami a teljes mértékben törölt fájlokat is sokszor vissza tudja állítani; így megmenekülnél sok szenvedéstől...
(#) speki válasza Norberto hozzászólására (») Feb 3, 2008 /
 
de ha kiolvastam belőle akor eltudom menteni és be tudom égetni másikba váltosás nélkül és legalább valamilyen formában megvan program
(#) Sendi hozzászólása Feb 3, 2008 /
 
Helló Mindenkinek.

Ha egy PIC-ben lévő prg kódvédet, attól én még tudom törölni, és új prg-t betölteni?

Köszönettel
(#) Norberto válasza Sendi hozzászólására (») Feb 3, 2008 /
 
Igen.
(#) trudnai válasza speki hozzászólására (») Feb 3, 2008 /
 
Egy eve vagy talan tobb is elkezdtem egy projectet amivel lehet disassemblalni a PIC HEX file-okat. Ha assemblyben van irva akkor akar eleg eselyes is lehet, hogy egy viszonylag ertelmes forrast kapjal - persze annyira szep sohasem lehet mint az eredeti.

http://unpic.sourceforge.net/

Sok sikert!
Tamas
(#) Sendi válasza Norberto hozzászólására (») Feb 3, 2008 /
 
Hello Noberto


Köszönöm a pontos, és egyértelmű választ.
(#) trudnai válasza Sendi hozzászólására (») Feb 3, 2008 /
 
Ha a PIC-ben levo program kodvedett, akkor kiolvasni azt a PIC-bol nem lehet, de felulirni igen - de csak bulk-erease-zel. Ez nem arra szolgal, hogy a PIC-et ne tudd tobbet hasznalni, hanem arra, hogy a firmware-ed vedve legyen - a konkurrencia ne tudja se masolni se megfejteni hogyan oldottal meg egy-egy problemat.

Ha az kell, hogy a PIC-be ne lehessen mas programot betolteni, akkor lehet hasznalni az OTP-s valtozatokat (one time programming). Ezeket egyszer lehet irni es aztan tobbet nem. C jelzesu PIC-ek ilyenek (pl 12C509).
(#) speki hozzászólása Feb 3, 2008 /
 
én még nagyon az elején vagyok a pic programozásnak de szeretném megtanulni le lehet valahonnan tölteni a pic hez az utasitás készletet
(#) menyus válasza speki hozzászólására (») Feb 3, 2008 /
 
Szia!

Én is teljesen kezdő vagyok ebben a témában, ezt találtam, talán neked is segít majd.



Pic utasításkészlet
(#) MPi-c válasza speki hozzászólására (») Feb 3, 2008 /
 
Az adatlapokban is benne van!
(#) speki válasza menyus hozzászólására (») Feb 3, 2008 /
 
köszönöm
(#) Sendi válasza trudnai hozzászólására (») Feb 3, 2008 /
 
Hello Trudnai.

Köszönöm, minden világos, én a sajátomat szeretném védeni, de ha módósítok, akkor felülírható legyen.

Köszönöm.
(#) potyo válasza Sendi hozzászólására (») Feb 3, 2008 /
 
Így vagyunk ezzel mindannyian...
(#) elektroláma hozzászólása Feb 3, 2008 /
 
Sziasztok!
PIC-et programozgatok egy ideje.
Megszakításokról keresgélek anyagot. Talátam párat, de számomra az összes ködösítettnek tűnt.
Le tudná valaki írni normálisan, hogyan működnek. Addig eljutottam, hogy a timer0-t inkább counterként használjuk.
Ami most kellene, és egyszerűen is hangzik.
Azt kellene kiszámolnom, hogy 2 gombnyomás között mennyi idő telt el, minél pontosabban.
A progi közben mást csinál. Úgy gondoltam, hogy lenyomáskor meghívódik az interrupt, a háttérben kiszámolja, beteszi egy globális változóba, és így tudom a főprogramban az eltelt időt.
Erre tudna írni vki egy példaprogit?
Mikrobasicben írom, de c-ben is jó lenne.
Köszi
(#) AQLMGabor válasza elektroláma hozzászólására (») Feb 3, 2008 /
 
A Cikkek között találsz egy írást, címe "Nulláról a Robotokig".
Ennek a sorozatnak a harmadik része foglalkozik igen nagy részletességgel a megszakításokkal.
Csak meg kell érteni.
Én is azon vagyok
(#) elektroláma válasza AQLMGabor hozzászólására (») Feb 4, 2008 /
 
Köszi!
Megtaláltam. Ha lesz ezzel kapcsolatban még kérdésem, majd írok.
(#) potyo válasza elektroláma hozzászólására (») Feb 4, 2008 /
 
Gombnyomások között eltelt idő esetén a pontosság azért elég relatív fogalom. Mit értesz pontosság alatt?
(#) elektroláma válasza potyo hozzászólására (») Feb 4, 2008 /
 
Minél pontosabban kellene megmondani.
Pl 0.01sec
(#) elektroláma válasza potyo hozzászólására (») Feb 4, 2008 /
 
A két felfutó ág közti idő kellene.
(#) watt válasza elektroláma hozzászólására (») Feb 4, 2008 /
 
És mennyi a max idő amire számítani lehet?
(#) potyo válasza elektroláma hozzászólására (») Feb 4, 2008 /
 
Az a baj a gomboknál, hogy azokat kézzel nyomogatod, így a pontosságot eleve buktad.

Én ezt egy 500us-ra beállított timerrel csinálnám. A 10ms pontosságba belefér némi szoftveres pergésmentesítés is. Minden megszakításban ránéz a gombra, ha mondjuk 10-szer ugyanaz volt, akkor elkönyveli, hogy a gomb stabilan abban az állapotban van, és ezután lehet valamit végrehajtani. Ez kb. 5ms pontosságot fog adni.

Felfutó ágak közötti időt akár lehetne mérni a CCP modullal is (Capture mód), csak akkor kívülről kell pergésmentesíteni a gombot.
(#) szilva válasza elektroláma hozzászólására (») Feb 4, 2008 /
 
Az PIC esetén nem túl nagy "pontosság", néhánytíz mikroszekundum elérhető nem túl nagy macerával. Viszont a megszakítás és a számlálók pont erre valók.

Ha pl. a timer0-t ismert frekvenciával (órajel valahanyad része) számoltatod, akkor csak meg kell jegyezni az állását a gombok lenyomásakor és az értékeket kivonogatni egymásból. Persze ha a számláló csak 1 byteos, akkor a túlcsordulásakor interruptból, szoftveresen kell az esetlegesen szükséges többi számlálóbyteot megnövelni.

(#) szilva válasza potyo hozzászólására (») Feb 4, 2008 /
 
Noigen, erről a részéről (mi a "gomb", mi szolgáltatja a jelet) nem tudunk semmit, a pergésmentesítés nem maradhat el.

Ha valami ipari környezetben lévő jeladóknál kellen mondjuk két jeladó közti időt mérni, akkor lehet, hogy azt mondanám, inkább érdemes hardveres, mondjuk RS tárolós pergésmentesítést és morzekapcsolós érzékelőt használni, így a mérés sokkal pontosabb lehet. Kézi nyomkodásnál ennek nincs jelentősége, ott bőven megfelel pl. az Általad leírt szoftveres megoldás is.
(#) potyo válasza potyo hozzászólására (») Feb 4, 2008 /
 
Ehhez még annyit, hogy a CCP láb úgy nézem, a legtöbbi pic-nél Schmitt-Trigger bemeneti bufferrel rendelkezik, szóval egy RC taggal elég jó eséllyel megoldható a pergésmentesítés.
Következő: »»   141 / 1319
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