Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem mondtam, hogy dobd ki! Csupan annyit, hogy nem javaslom... Ettol fuggetlenul miert ne jatszadozhatnal vele vagy hasznalnad valami ertlemes dologra is.
50MHz jo dolog, meg jobb, hogy nincs benne a 4-es osztas mint a PIC-ben, tehat elmeletileg 50MIPS-et tud ekkora orajelnel -- azonban ahogy mondtam nincs benne HW modul egy csomo mindenre igy mindent a CPU izzad ki magabol, tehat az orajel tobblet el is megy szepen ezekre a feladatokra. A masik, hogy a BASIC interpreter sebessege nem fogja megkozeliteni a C es foleg nem az Assembly futasi sebesseget. Tehat akkor lesz egy 50MHz-es ketyered ami egy PIC 4MHz-nek fog megfelelni kb. De nem akarom a kedved szegni, mert ettol fuggetlenul robotikara pl jol lehet hasznalni ilyeneket, meg arra, hogy kedvet kapj a mikrokontrollerekkel torteno butykolesekhez.
Köszi Na mostmár csak abban kell segítség, hogyan mivel tudom letölteni a programot.
Esetleg rákattintasz a Download oszlopban lévő mappa ikonra?
Szia!
A hex -ben, amit belinkeltél a MCLR le van tiltva, belső oszcillátoros a konfiguráció, valószínű, hogy a PGC és/vagy a PGD kimenet. A pic a Vdd bekapcsolásakor azonnal indul, kimenetnek állítja be a programozáshoz használt vonalakat. Ekkor már csak a "Vpp first programming entry" metódus segít...
Remélem nem ennyire nehéz a "felfogása" az értelmezőnek. Csak gyorsabb mint egy 4 MHz-s Pic.
Le lehet merni mondjuk, ha nagyon erdekel. De amugy az osszes interpreter (beleertve a Java es .NET kornyezetet is) nagysagrendekkel lassabb, mint akarmilyen native kodra forditott program.
Ez a kulcs tartalmaz valami aktív eszközt? Hasonló mint a PIC programozó? Vagyis megkérdezi a program, hogy ott van és valami elelnörzőkódot küld vissza amivel jelzi a jelenlétét? Bocsi ha sokat kérdezek, de itt jobban eltudjátok mondani, mintha csak olvasnám, a Chipcad oldalán. Ott nincs semmi értékelhető infó erröl.
Annyira lelassítja, hogy pl ha 25.75 MHZ impulzusokat akarok kiküldeni az egyik lábon akkor nemfogja megcsinálni annak ellenére, hogy dupla sebeséggel megy a proci? Vagy 75 MHz -l?
De akkor miért ki hibát amikor leellenőriztetem mielőtt beégetném?(égetés végén is kiírja mielőtt végezne)
És a "Vpp first programming entry" hol lehet beállítani? Bocsi,hogy ennyit kérdezek,de a programozásban még zöldfülű vagyok.
Attol fugg hogyan csinalod meg. Ha siman bitbillegteteses modszerrel probalkozol akkor egy ekkore frakinel mar ASM-ben is vakarni kell a fejed -- interpreteres BASIC-kel nem hinnem, hogy meg tudnad csinalni, foleg, hogy csak akkor mukodne ez igy, ha a kivant freki tobbszorosevel jarna az MCU 2*25.75 vagy 3* 4* stb...
Szerintem egy ilyen dologhoz jobban jarnal egy VCO-val amit a PIC vezerel, es itt a hardveres timer es CCP modulokat lehetne felhasznalni meresre/vezerlesre. A PIC az ideje nagy reszeben pedig malmozik...
Sziasztok!
Segítségre lenne szükségem. Egy lcd-s programot akarok életre kelteni egy pic16f87xx gyakorló panel v2.2-n. Mplab-ot használok, bevittem az új projektbe a beallit.inc, P18F452, és az lcd18.asm-et. Build all, és ezt kaptam: -- Debug build of project `C:\Documents and Settings\Fekete Attila\Asztal\Projekt1\bzzz.mcp' started. Language tool versions: MPASMWIN.exe v5.39, mplink.exe v4.38, mplib.exe v4.38 Preprocessor symbol `__DEBUG' is defined. Mon Jan 24 18:50:28 2011 -- Clean: Deleting intermediary and output files. Clean: Deleted file "C:\Documents and Settings\Fekete Attila\Asztal\Projekt1\bzzz.mcs". Clean: Done. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F452 "LCD1_18.ASM" /l"LCD1_18.lst" /e"LCD1_18.err" /o"LCD1_18.o" /d__DEBUG=1 Warning[230] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\BEALLIT.INC 14 : __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. Error[113] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\BEALLIT.INC 16 : Symbol not previously defined (space0x200) Message[313] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\LCD1_18.ASM 64 : CBLOCK constants will start with a value of 0. Error[113] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\LCD1_18.ASM 80 : Symbol not previously defined (KezdVect) Error[151] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\LCD1_18.ASM 274 : Operand contains unresolvable labels or is too complex Halting build on first failure as requested. -- Debug build of project `C:\Documents and Settings\Fekete Attila\Asztal\Projekt1\bzzz.mcp' failed. Language tool versions: MPASMWIN.exe v5.39, mplink.exe v4.38, mplib.exe v4.38 Preprocessor symbol `__DEBUG' is defined. Mon Jan 24 18:50:29 2011 -- BUILD FAILED Csatoltam a három file-t iis. Mi lehet a hiba? Annyit tudok, hogy 0x200 után kezdődjön a program, mert ugrik a bootloader. Ha valaki tud segíteni, köszönöm!!!
Ez csak figyelmeztetés. Azt jelenti, hogy azáltalad használt __CONFIG kifejezés elavult. Cseréld le az új formátumú CONFIG-ra
Ez tájékoztatás, miszerint a CBLOCK-od 0-s címen fog kezdődni
Ez a két hiba ugyanaz. Szerintem nem állítottad be a fordítói direktrívákat. Olvass utána, vagy a Beallít.inc-ben a "#define LdrKey" sor után definiáld ezt a két változót! A space0x200 értéke 0x200, a KezdVect értéke 0 legyen. A szintaktikáját sajna nem tudom, mert én 'c'-s vagyok.
Nemjó a VCO mert ez az órajele az LCD-nek. Ebből állítja elő a szinkronjeleket. szigorúan ehez a frekihez van kötve.. Szóval a procinak ezt frekit kell előállítani., hogy tudjam kezelni, mert késleltétések vannak. Ami tulajdonképpen párszáz órajel, ebből, van a sor és képjel stb.
Most mar kivancsiva tettel mit butykolsz Milyen LCD ez?
Idézet: „Mi lehet a hiba? Annyit tudok, hogy 0x200 után kezdődjön a program, mert ugrik a bootloader.” A BEALLIT.INC állomány végén az org space0x200 szintaktikailag hibás. Helyette írd ezt:
;bizonytalan vagyok, mert lehet, ;hogy ennek is 0x200-nak kell lennie. A #define sorral definiáljuk az áthelyezett interrupt vektor címét (ezt a szimbólumot hiányolta a fordító).
Sziasztok!
A demoboarddal eljutottam oda, hogy egy óra programot lefordít, de ezekkel a hibaüzenetekkel: Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F452 "ORAIC_18.ASM" /l"ORAIC_18.lst" /e"ORAIC_18.err" /o"ORAIC_18.o" /d__DEBUG=1 /rDEC Warning[216] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\BEALLIT.INC 33 : Radix superseded by command line. Warning[230] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\BEALLIT.INC 41 : __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. Message[313] C:\DOCUMENTS AND SETTINGS\FEKETE ATTILA\ASZTAL\PROJEKT1\ORAIC_18.ASM 40 : CBLOCK constants will start with a value of 0. Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p18F452 "ORAIC_18.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /m"aa.map" /o"aa.cof" MPLINK 4.38, Linker Letöltőbe teszem a panelt, villan is 2-t a led, letöltés, de a lednek ilyenkor is 2 villanással kellene jeleznie a sikeres letöltést. Ehelyett folyamatosan világít a led, ami hibát jelez. Segítsetek! Most kezdem tanulni a dolgot, ha működne, mégiscsak szívesebben bújnám a könyveket. Köszönöm
Igazad van az égetővel kapcsolatban, csak a problémám vele hogy égetett pic kell az égetőbe. Amit nem tudok égető nélkül égetni Bővebben: Link .
ugyan ez az áramkör csak a panelterv és a foglalat más. Ott akadtam el vele hogy nem tudom hogy a pic-et hogy rakjam bele a foglalatba.Mármint a pic lábait tudom de az égetőn pl: melyik láb a data, clock vpp. stb.. Csak annyi van hogy D1,D2 ..? Vagy csak úgy tudom megállapítani hogy a programban egyesével kapcsolom be vonalakat és mérem?
Szia!
- A programozóban cseréld le a 7405 -öt 7406 -ra. A 7405 kimenetén a megengedett feszültség 5.5V, a 7406 kimenetén 30V. A Vpp jel kapcsolása a kritikus, itt 13V -ra megy fel a kimenet. - A különböző tokozású kontrollereket más-más helyre kell tenni a foglalatban. A MCLR, a Vdd , a Vss, a PGD és a PGC (valamint a PGM - ha az alacsony feszültségű programozás engedélyezett) kell a típus programozási leírásáben szereplő kivezetésekre kapcsolódnia. - A programozó kiosztása az ICSP-nek nevezett csatlakozó lábszámaival. Figyelem nem a Microchip által használt ICSP csatlakozó bekötést alkalmazza ez a programozó: 1. PGD, 2. PGC, 3. Vpp, 4. nincs bekötve, 5. Vdd, 6. GND. Az LPT jeleivel: PGD kifelé a D0, visszafelé az ACK, PGC kifelé a D1, Vdd kapcsolása a D2, A Vpp kapcsolása a D3 illetve a D4. - A program két jellel is tudja kapcsolni a Vpp -t: A D3 vagy a D4 LPT adatbittel, a kontroller típusának megfelelőt kell aktivizálni. Az ICSP -nek nevezett csatlakozó használatánál a JP jumpert a megfelelő állásba kell állítani.
A hibaüzenetek úgy kezdődnek, hogy Error:, s akkor nem is fordul le a program, nem keletkezik HEX állomány sem. Ezek tehát nem hibaüzenetek, hanem figyelmeztetés (warning), illetve üzenet (message).
Az óraprogram lefordításánál a linker program (MPLINK) is futott. De vajon milyen linker állományt használt, s hova tette a programot (bootloader esetében általában módosított linker állományra van szükség, ami nem pakol a bootloader területére semmit). A programot pedig a linkeléshez (relatív módú programfordítás) MÁSKÉPP kel írni, mint a korábban mutatott (abszolút módú) programodnál. Ezt is meg kell tanulni. Ha most kezdesz, akkor tedd szépen le a panelt (egy darabig ne is vedd a kezedbe!), s kezdj el olvasni, utána olvasgass egy kicsit, azután meg olvass! (A jelek szerint eddig még nem olvastad el az MPLAB, az MPASM és MPlink leírását sem). Ha már készen állsz a programozásra, akkor pedig az MPLAB szimulátorában próbálkozz, s addig ne is vedd elő a panelt, amíg ott nem sikerül működésbe hozni a programot, s a logikai analizátor ablakában nem azt a jelalakot látod, amit vártál. (A bootloadert úgy lehet szimulálni, hogy a memória 0x0000, 0x0008, 0x0018 címeire beraksz egy-egy GOTO 0x0200, GOTO0x00208, 0x02018 utasítást). Ha a tanácsomat megfogadva elkezded olvasgatni a PICula projektet, akkor az első öt fejezethez nem kell semmilyen hardver, mindent a szimulátorban kell próbálgatni.
Örülök neki. Minden jó, ha jó a vége!
Egyébként mi lesz ebből, s miért assembly-vel gyötröd magad?
Szia!
A "Vpp first programming entry" annyit tesz, hogy a Vpp -t kapcsolja előbb és egy kis várakozás után a Vdd-t. Elvileg ez a programozó képes rá. Nem tudom melyik program képes erre, azok közül, amikkel ez a programozó működtethető. A PICKit2 is csak a saját kezelőprogramjában ad lehetőséget, az MpLab -ban nem...
Lézerblokkolót építek.
A kültéri vevőből rádiós úton (IA4420) küldöm át a bytokat.a beltéribe. 32 bites számlálóval (kért 16 bites sorba kötött számláló) mér két bejövő impulzus közötti időt. A számláló alapján dönti el, hogy milyen lézerrel lőttek, majd ennek megfelelő kódot küldi át a rádiós IC-vel a beltéribe, A beltéri ennek alapján a megfelelő hangüzenetet (ISD17240) indítja Pl "FAMA III lézer, kérem lassítson". A 32 bites számláló a pontos mérés miatt kell, mert a zavaróimpulzust 200-250nS-mal a bejövő jel elé kell ellőnöm. Ezzel 25nS pontosságú felbontást tudok elérni Azért Assemblerben, mert ezt tanultam meg. A programozásban nagyon sokat segített az általad leírt anygag., amiért külön köszönet.
Üdv.
Az lenne a kérdésem, hogy egy logaritmikus skálán, melynek a maximuma 1024 a minimuma 0 és a skála 34 értékre van felosztva, hogyan tudom ezeket az értékeket kiszámolni?
C-ben léteznek ilye nfüggvények, de nem takarékoskodnak a programmemóriával. Esetleg egy C fordítás ASM kódját érdemes lenne megnézni, hogyan csinálják...
Ha egyszerűen csak a matematikai része érdekel, és az adatokat egy táblázatba akarod beírni, akkor az eljárás a következő:
A legnagyobb érték 1024, ez a 34. tömbelem A következő az a 10^(log(1024)*33/34) =835.14477 Az után értelemszerűen 10^(log(1024)*32/34)=681.11 A csúnya a vége lesz az első 3 elem nem éri el a kettőt
Kezdetnek megteszi a táblázat is, mert ahogy a képletet elnézem kemény lenne programmal kiszámoltatni.
Köszi a segítséget!
Nem tudom, hogy jól érttetem-e, de ha pl. az a kérdés, hogy egy 0-1024 közé eső mért érték (y) esetén a 34 ledet tartalmazó LED soron hányadik (n) LED-et kell kigyújtani, akkor az alábbi összefüggésből lehet kiindulni:
y = 1024 ^(n / 34) azaz ln y = ln 1024 * (n / 34) Ebből: n = ln y * 34 / ln 1024 A 34/ln 1024 egy konstans, megközelítő értéke = 4.9051631390224755850237439154064, ezt nyilván nem kell újra és újra kiszámítani. Az ln y pedig vagy egy sorfejtésen alapuló közelítő formulával, vagy beépített táblázatból vehető. De legegyszerűbb az n = 1..34-hez tartozó y értékekekt táblázatba foglalni, mert akkor csak 34 sora lesz a táblázatnak - csupán a kereseés lesz bonyolultab egy kicsit. De bináris kereséssel érzésem szerint így is gyorsabb lesz, mint bármilyen sorfejtés, ráadásul a keresésénél csak egész számokkal kell dolgozni. |
Bejelentkezés
Hirdetés |