Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   236 / 1319
(#) potyo válasza AMD hozzászólására (») Jún 30, 2008 /
 
Írásjelek?
(#) watt válasza AMD hozzászólására (») Jún 30, 2008 /
 
Még mi volt ráadva a feszen kívűl?

Egyébként akkor, ha csak a fesz volt ráadva, akkor világíthat. Dugd rá az LPT-re és indítsd el a programot, majd csekkold le a vonalakat. HA rendben ,akkor teheted rá a PIC-et. (korábban többször leírtuk, hogy hogyan kell csekkolni, kérlek keress rá itt a topicban!)
(#) Elektroman hozzászólása Jún 30, 2008 /
 
Hello mindenki. Az a "gondom" hogy nem tudom hogyan lehet a microchip C fordítóiban ASMben megírt függvényt hívni.Egy ideig gugliztam de nem találtam rá választ, keresővel itt sem találtam.

Előre is köszi a választ Üdv: Marcell
(#) watt válasza Elektroman hozzászólására (») Jún 30, 2008 /
 
Hogy néz ki az asm-ban megírt függvény? Benne van a C18 forrásában? pl. így:

  1. C előtte......
  2. _asm
  3. MOVLW 0x30
  4. MOVWF változó
  5. _endasm
  6. ......C utána

?

Addig is egy dokumentáció. A 43. oldaltól írnak a C és ASM keveréséről...
C18 kezelői kézikönyv
(#) Elektroman válasza watt hozzászólására (») Jún 30, 2008 /
 
Köszi, a linkelt dokumentációban megtaláltam.Még most kezdek átállni Cre és eddig nem sikerült ilyen dokumentumokat összeszednem,végigbogarásznom.

További szép napot!
(#) watt válasza Elektroman hozzászólására (») Jún 30, 2008 /
 
Szívesen! Azért kérdeztem, hogy hogyan akarod az ASM részt rutinban elhelyezni, mert a doksival ellentétben és más megoldást is jónak látok, és használok. Írok egy C rutint, és abban _asm ... _endasm közé az ASM betétet. Így végül is ASM rutint hívok meg. Kicsit sántít a dolog abban, hogy ekkor a függvény meghívásához szükséges tárolások miatt több időbe telik, mint ha direkt hívná meg a doksi szerinti módon. Bár ebben nem vagyok teljesen biztos, össze kéne hasonlítani a két megoldást.
Naszóval az én megoldásom:

  1. void asm_rutin(void);
  2. .....
  3.  
  4. asm_rutin();  //rutin hívása
  5. .......
  6.  
  7. void asm_rutin(void)
  8. {
  9. _asm
  10. MOVLW 0xFD
  11. XORWF global_C_változó
  12. _endasm
  13. }

trudnai biztosan tudja a feltett probléma mögötti dolgokat is, talán...
(#) Elektroman válasza watt hozzászólására (») Jún 30, 2008 /
 
Tényleg ez így elég áttekinthetőnek tűnik, és valószínűleg annyira "nem bonyolítja el" a fordító sem
(#) watt válasza Elektroman hozzászólására (») Jún 30, 2008 /
 
Lehet vele játszani ésa lefordított kódot disassemblálni. Érdekes megoldásokat vonultat fel a fordító sok esetben... Van mikor ez számít, van mikor meg nem.
(#) trudnai válasza watt hozzászólására (») Jún 30, 2008 /
 
Legotbb esetben ha valaki C nyelvet valaszt a leforditott kod hatekonysaga mellek szerepet jatszik es eloterbe kerul a gyorsabb fejlesztesi ido valamit a kod hordozhatosaga - persze ezeken is lehet vitatkozni, hogy valoban gyorsabb-e egy C-ben fejleszteni, mindenesetre nem kell eltoprengeni ket 32 bites szam osszeadasan, hogy hogy is megy az. Hozzatennem sajnalatos, hogy Microchipek nem ajanlanak egy nagy asm rutingyujtemenyt amivel a mindennapi munka megkonnyulne es ilyen alapveto dolgok mint matematikai vagy logikai muveletek, LCD kezeles, belso periferiak kezelese stb ezek siman mehetnenek ugyanugy konyvtarakbol mint a C eseteben.

(remelem nem inditok tuzparbajt itt, tavol alljon tolem)
(#) AMD válasza watt hozzászólására (») Júl 1, 2008 /
 
Rádugtam a portra majd elindítottam az oshonsoft programot. A hardware/check -ben bepipálom a vdd-t akkor a vdd led világít ha a vpp-t akkor a vpp led. A többi vonalat hogy tudom ellenőrizni? Voltmérővel, leddel? Bocs a kérdésért de hiába használtam a keresőt nem kaptam meg a kérdésemre a választ, de lehet hogy én nem értek a keresőhöz.
(#) watt válasza trudnai hozzászólására (») Júl 1, 2008 /
 
Mivel igazad van, így nem indítasz párbajt. Én is vegyesen használom a C-t, mert vannak előnyös tulajdonságai, viszont sokszor nem hatékony. Ilyenkor jön az _asm.
(#) watt válasza AMD hozzászólására (») Júl 1, 2008 /
 
Idézet:
„A többi vonalat hogy tudom ellenőrizni? Voltmérővel, leddel?”

Természetesen. A LED is megoldás, csak akkor a katódja menjen a kimenetre, és az anódja egy 1K-n keresztül az 5V-ra. (mivel OPC-s a kimenete a 7406-nak.) Akkor fog világítani a LED, amikor nincs becsekkolva a vonal!!!
Az is egy megoldás, hogy a LED katódját testre teszed, az anódján a kimenetre. Így már akkor fog világítani, amikor a pipa be van téve a checkboxba. Azt hiszem ez a verzió egyszerűbb is, ezért ezt ajánlom inkább...
(#) trudnai válasza watt hozzászólására (») Júl 1, 2008 /
 
De ha open collectoros a kimenet akkor nem biztos, hogy a volt mero igy onmagaban jo otlet. Ahhoz akkor kellene egy felhuzo ellenallas minimum a kimenetre.
(#) watt válasza trudnai hozzászólására (») Júl 1, 2008 /
 
Van felhúzó ellenállás(nézz rá az oshon kapcsolására). A Vdd-t be kell kapcsolni mikor a kimeneteket mérjük, hogy a felhúzók feszt kapjanak. A sima LED-es mérés is csak Vdd bekapcsolása után mehet..
(#) szilva hozzászólása Júl 1, 2008 /
 
Üdv!

Az elmúlt napokban összeütöttem egy IEEE754 kompatibilis lebegőpontos számolást a 4 alapművelettel 12F683-ra (tulajdonképpen bármelyik midrange-re jó). Ez ahhoz kell, mert építettem egy hőmérsékletfüggő ventiszabályozást, amiben a hőérzékelő egy LM335Z, azaz a hőmérsékletértékek A/D-zve jönnek.

A munkapadon a mintapéldány nagyon szépen viselkedett, de egy PC-s tápba beépítve azt tapasztaltam, hogy időnként felugrik, időnként le a vent fordulatszáma - valahonnan zajt szed össze. Ennek a zajnak a kiszűrésére egy digitális szűrőt programoznék bele, ehhez is kell a floating point aritmetika.

Viszont jó lenne ezt az egészet tesztelni, akár csak MPLAB szimulátorban. Kellene előállítani valami zajjal terhelt bemenetet, amit a szimulátor megkapna, aztán a kiszámolt kimeneti értékeket jó lenne lelogolni, hogy utólag ki lehessen elemeztni a szűrő működését.

Erre tud-e valaki útmutatást, hogy hogy lehetne ezt a szimulációt megoldani?
(#) watt válasza szilva hozzászólására (») Júl 1, 2008 /
 
Nem tudok róla, hogy zajt lehet szimulálni, de ha tévednék, az nagyon meg fog lepni, és örülni is fogok, mert sokszor jól jött volna ilyesmi...
(#) szilva válasza watt hozzászólására (») Júl 1, 2008 /
 
Nekem még az sem teljesen világos, hogy analóg bemenetet hogy tudnék szimulálni. Tegnap olvasgattam az MPLAB pdf diksiját, de ilyenre nem láttam utalást, ma meg annyira ki vagyok pukkadva, hogy még el sem indítottam az MPLAB-ot

Amúgy lehet, hogy valami külső megoldást kellene találni, mondjuk excelben legyártani az analóg értékeket egy oszlopba, meg a zajt egy másikba, és a kettő összegéből csinálni valahogy kimenetet, amit be lehetne adagolni az MPLAB-nak - de ez mind csak elmélkedés, nem tudom, hogyan álljak neki, azért is kérdeztem, hogy hátha valaki már legalább hasonlót csinált, és van rá ötlete.
(#) watt válasza szilva hozzászólására (») Júl 1, 2008 /
 
Mondjuk én nem a jel zajmodellezésére gondoltam, hanem a tápon beszűrődőre. Nem is biztos, hogy a jelen jön be neked a zavar...
(#) trudnai válasza szilva hozzászólására (») Júl 1, 2008 /
 
En ugy tudom az SCL-bol lehet regisztre injekciot csinalni. Ha van ilyen tablad abbol csak generalni kell egy SCL filet es kesz is van a trukk. Digitalis jellel ezt csinaltam, WAV-ot alakitottam at SCL-e, es persze a WAV a szgep audio bemenete volt mint scope Az a bajom meg mindig szivok a virtualis gep belovesen, ha tul vagyok ezeken akkor lesz MPLAB meg minden es akkor tudok ilyenekkel foglalkozni. Addig ha a Microchip foruman rakeresel biztosan megtalalod az SCL-rol szolo anyagokat, VHDL meg SCL kulcsszavakra rakeresve.
(#) szilva válasza watt hozzászólására (») Júl 1, 2008 /
 
Végülis mindegy, hogy hol jön be, azt a jelre is áttranszformálhatjuk.

Amúgy a tápot egy lokális 78L05 állítja elő a 12V-ból, persze megfelelő szűrőkondikkal, szóval azt nem hinném, hogy a tápon jelentkezik a zaj. Az érzékelő amikor közel került a hűtőbordához, akkor keletkezett a zavar - ezen a bordán vannak a nagyfeszültségű rész kapcsolótranzisztorai.

A program úgy működik, hogy vesz egy A/D értéket, az alapján kiszámolja a kitöltési tényezőt a PWM kimenetre, aztán várakozik jópár tized másodpercet, majd kezdi elölről. A jelenség pedig úgy néz ki, hogy hogy időnként a hőmérséklettől hallhatóan eltérő fordulatszám áll be. Mivel a ciklus jópár tizedmásodpercenként kezdődik újra, ez a fordulatszámváltozás jól hallható. Ezt akarom "kisimítani" a szűrővel.
(#) watt válasza szilva hozzászólására (») Júl 1, 2008 /
 
Vedd néhány előző kiszámolt érték átlagát, és akkor egy ilyen kiugrás nem fog bezavarni.
Ferritgyűrű a mérővezetéken?
(#) kobold válasza szilva hozzászólására (») Júl 1, 2008 /
 
Ahogy eddig láttam, az ilyenre a legjobb módszer a Proteus és az MPLAB házassága, csak az alkalmazott kontroller nem biztos, hogy megvan a Proteus-ban...
Egyébként csak a regiszter-betöltés marad, triggerként pl. egy PC-értékkel (mielőtt beolvasná a konverzió eredményét), és készíteni kell hozzá egy zavarjellel ellátott adatfile-t, erre talán leggyorsabb egy Excel makró, véletlenszám-generálással két határérték között.
(#) szilva válasza watt hozzászólására (») Júl 1, 2008 /
 
Igen, ez egyfajta digitális szűrő, de én szeretnék egy korrektet és hangolhatót építeni - lehet, hogy itt most nincs túl nagy értelme, de talán a megszerzett tudás és tapasztalat felhasználható majd később máshol is.
(#) trudnai hozzászólása Júl 1, 2008 /
 
Aki meg nem hallott volna rola, a Microchip hivatalosan bejelentette, hogy elkeszult a PicKit2 parancssori valtozata Linuxra es MacOS X -re...

Letoltheto innen.
(#) szilva válasza kobold hozzászólására (») Júl 1, 2008 /
 
Igen, most olvasgattam még kicsit a dolgokat, tegyük fel, hogy valami táblázatkezelőből vagy akár vbscript-ből elkészítek egy olyan stimulust, amit be tudok adagolni a programomnak. Ez lehet regiszter injekció is, de nem feltétlenül az ADRES-be, mert azt a normál futás mellett állandóan felülcsapja az A/D használata.

A programot a szimuláció idejére simán átírhatom annyira, hogy ne az ADRES-ből, hanem egy másik regiszterből dolgozzon, amit a stimulus feltölt bizonyos időpillanatokban.

Tehát tételezzük fel, hogy a bemenet megoldódik.

Ám jön a másik kérdés, hogy kimenetet hogyan tudnék logolni MPLAB-ban? Akár csak annyi, hogy egy erre a célra bevezetett regiszter értékét bizonyos szimulált időpillanatokban vagy a program bizonyos pontjára lépve a szimulációban letegye egy log-ba, Ilyet, vagy ehhez hasonlót tud egyáltalán az MPLAB sim?
(#) kobold válasza szilva hozzászólására (») Júl 1, 2008 /
 
Még nem próbáltam, de a Register Trace elvileg erre való, file-ba menti (adott esemény hatására) a kívánt regiszter tartalmát.
(#) szilva válasza kobold hozzászólására (») Júl 2, 2008 /
 
Hát, roppant fapados, de a register trace-t sikerült életre keltenem egy minimál tesztprogival. Úgyhogy még lehet, hogy lesz is ebből a szimulációból valami
(#) AMD hozzászólása Júl 2, 2008 /
 
Lecsekkoltam a vonalakat. Már csak egy valamit nem értek. A Vpp-t a MCLR lábra, a Vss-t a gnd, a Vdd-t a pic Vdd lábára kell kötni. Az Lvp, Data és a Clock kimenetet a pic melyik lábára kell kötni? 16F84A-t akarok programozni. Az adatlapját hiába nézem nem leszek tőle okosabb.
(#) kobold válasza AMD hozzászólására (») Júl 2, 2008 /
 
Az RB6 az órajel (Clock), az RB7 az adat (Data), ezeket pedig leírták az adatlapban. Az Lvp akkor kellene, ha alacsony feszültségű programozást csinálsz, vagyis ha a 13 V-os Vpp helyett az 5 V-os, normál táppal akarnád felprogramozni, de ezt a 84A nem is támogatja, vagyis nem kell bekötni.
(#) AMD válasza kobold hozzászólására (») Júl 2, 2008 /
 
Köszi.
Következő: »»   236 / 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