Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Csinálhatnál egy képet is a projektről, hogy lássuk, mi a gondod!
Ha a szimulációt sikerült elindítanod, akkor lépkedhetsz F7-el vagy F8-al ( az F8 a szubrutinokba "láthatóan nem ugrik bele", de természetesen végrehajtásra kerül és nem kell mellette ülni --> ezzel is jó mérni a késleltetést! ) ! Próbáld ki, úgy láthatod a különbségeket! Steve
Csináltam képet. Igazából azzal van bajom hogy nem látom hogy hol tartok. Tehát nyomkodom az F7-et de nem látom hogy hol tartok. Mellékeltem a forráskódot is.
Én úgy látom, hogy nincs projekted...ha csak az asm fájl-t akarod nézegetni, az úgy nem megy!
Steve
és tudnál segíteni ebben a projektben. Mert én csak 5.7-el dolgoztam idáig. És az kicsit más mint ez.
Projekt --> New -> adj meg egy nevet és egy könyvtárat ( abba a könyvtárba másold be az asm fájlt is!
Configure --> Select Device --> válaszd ki a kontrollert! Configuration Bit --> állítsd be a paramétereket ( szimulációhoz ez nem teljesen szükséges, de adott esetben a WatchDog-ot vedd ki! ) View --> Project --> megjelenik egy ablak! Source Files ( az ablakban ) --> jobb gomb --> Add Files --> keresd meg az asm fájlt (ez hozzáadódik az előző ablakhoz, ha szükséges, akkor jobb egérgombbal rákattintva tudsz alapértelmezett számrendszert is változtatni! )! Ezután Ctrl + F10 és ha megjelenik a BUILD SUCCEEDED felirat, akkor kezdheted a szimulációt! Steve
Sajnálattal értesítem a PIC18F13K50 és PIC18F14K50 felhasználókat, hogy a régebbi kiadású MCC18 fordítóban (pl. az általam használt C18 v3.22-ben) hibás a PIC18 perifériakönyvtárhoz tartozó adc.h állomány, a fent nevezett (ADV_V10-es típusba sorolható) mikrovezérlőkhöz nem definiálták a konverziós időalapot és az adatgyűjtési időt konfiguráló makrókat.
Javítás: Szerencsére egyszerűen megoldható. Az adc.h fájl elején az első hosszú
litániába vegyük fel a defined(ADC_V10) tagot is! Kiegészítés: A PIC18F14K50 analóg csatornái egymástól függetlenül engedélyezhetők. Ehhez nincs jó gyári makró, ezért definiáltam néhányat az OpenADC() függvény negyedik paraméterének (az ANSEL és ANSELH registerekbe írt érték) kényelmes összeállításához.
Példa: A fenti makrókkal és a PIC18 perifériakönyvtár alkalmazásával így inicializálhatjuk az ADC-t (itt most az AN10 és AN11 csatornákat engedélyezzük)
Megjegyzés: az OpenADC() függvény csak az analóg funkciót engedélyezi, a TRIS biteket nem állítja be!
Köszönök szépen mindent. Neked is meg annak még aki segített. Sikerült rávezetnetek hogy hogyan lehet beállítani.
Köszönöm még egyszer!
Ezen az oldalon (Bővebben: Link) generáltam magamnak néhány időzítő szubrutint és azóta nem tudom lefordítani a programomat. Nincs egy darab error sem az Output ablak Build fülénél, de ezt írja a végén:
Idézet: „Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe" /p18F2523 "PIC-es panelmero II.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"PIC-es panelmero II.cof" /M"PIC-es panelmero II.map" /W MPLINK 4.30.01, Linker Copyright (c) 2009 Microchip Technology Inc. Error - file './PIC-es panelmero II.o', section 'PGM', Symbol '_PGM_0E64' is not word-aligned. It can not be used as the target of a call or goto instruction. Errors : 1 Link step failed. ”
A _PGM_0E64 szimbólumod nem szóhatáron van, ezért nem lehet rá ugrani GOTO-val vagy CALL-lal. A kérdéses címke előtt nincs véletlenül egy konstans adatdefiníciód (pl. tömb), ami miatt elcsúszotak az utasítások a szóhatárról?
És honnan tudom hogy hol van a _PGM_0E64 szimbólum?
Az lst fájlban 00000E64 van mellé írva a value oszlopba. Ez mit jelent?
Mégegy hiba az előbb említett adc.h állományban:
Az ADC_V10 típusnál hibás néhány AND típusú maszk definíciója. Helyesen így nézne ki:
Eredetileg hibásan, egy helyiértékkel jobbra csúszva vannak definiálva!
További hasznos információkkal szolgál az MPLAB magyar nyelvű leírása (Varga László munkája).
Ha első kattintásra nem jön le, akkor újra kell próbálni!
Ha jól tévedek, az a relatív címe lenne a szimbólumnak a section-ön belül. Az viszont páros. Ellenben a kódgeneráló oldalon van egy ilyen:
Idézet: „For PIC18, this delay routine will need a little modification to work properly.. the goto $+1 within the delay loops that sometimes appears needs to be changed to goto $+6, since each program word is 2 bytes, and goto is a 4 byte instruction. Also, at the end sometimes goto $+1 is used as a 2 cycle delay, need to use goto $+4 to skip over the whole goto. ” Azaz PIC18 esetén kicsit bele kell nyúlni a generált kódba, a $-relatív ugrásoknál lévő kifejezésekbe. Ezt figyelembe vetted?
Nem, egyszerűen csak bemásolgattam a programba az oldal által generált rutinokat. De sajnos nem értem teljesen ezt az idézetet. :no:
Szia!
A kód, ami a késleltetést legenerálta, (hogy elkerülje a cimkeegyezést) a goto $+k alakú ugrásokat használja. Ez kifogástalanul működik 16F-en, abszolut kód esetén. Relokálható kódnál már lehetnek problémái... 18F-en NEM működnek, mert az utasítások címzése byte-os, egy utasítás pedig 2 illetve 4 byte. Az ilyen alakú ugrásokat át kell írni rendes címkékre... De ha átírod egyben megváltozik a futási idő is....
Szia!
Köszönöm! Átírtam a goto $+1 -eket goto $+1 -re. Nem fontos hogy halálpontos legyen úgysem.
Szia!
Copy & Paste ... Talán bra $+2 / goto $+4 ugrik a következő utasításra... Idézet: „Átírtam a goto $+1 -eket goto $+1 -re” Hmm, nem rossz, nekem eszembe sem jutott volna Amugy epp ilyenek miatt szokas kerulni az ilyen relativ hivatkozasokat: Ugyanilyen hibakat az ember kodolas kozben is elkovet, mig cimkezve nem lenne gond... Idézet: „A kód, ami a késleltetést legenerálta, (hogy elkerülje a cimkeegyezést) a goto $+k alakú ugrásokat használja.” En szerintem emiatt erdemes makroba letenni es lokalis cimkeket hasznalni... Idézet: „Ez kifogástalanul működik 16F-en, abszolut kód esetén. Relokálható kódnál már lehetnek problémái...” Ha a kodlapokra gondolsz (PAGESEL makro es tsai), akkor az szerintem ugyanugy problema lehet abszolutban is mint relokativban. Vagy rosszul latom?
Basszus, észre se vettem! $+2-re írtam egyébként.
Szia!
A makrók hosszát előre nem tudja számolni sem relokálható sem abszolut kódban a fordító (a PAGESEL -ét könnyebb, mert mindig két utasításban állítja be a PCLATH 4..3 bitjeit - ha kell és ha nem kellene, akkor is). Az egyszerűség végett hagytam ki...
Sziasztok!
Van arra valami megoldás, hogy amikor MPLAB alatt nyomok egy MAKE vagy BUILD ALL gombot, a fordítást követően ne a forráskód elejére állítsa a kurzort, hanem hagyja ott nekem az utolsó pozícióban, ahol volt. Apró dolog, de roppant bosszantó, mikor keresgetem, hogy hol is tartottam... Köszönöm!
Konkrét megoldást nem tudok, de ha másképp nem megy, akkor tegyél le egy könyvjelzőt!
Steve
Ez tényleg jó -jobb -megoldás! Inkább mint keresgetni. Köszönöm szépen!
Üdv!
Megint egy égetővel "szerencsétlenkedek". Az an589 nem működött, így hát kipróbáltam ezt: Bővebben: Link Itt már tényleg minden szükséges jelszint megvan, de mégsem működik . A data és clock vonalon 4,8 V, tápfesz, programozófesz is megvan, rendesen lehet őket kapcsolgatni, vdd-nél és vppnél még a LED is jelez(elalszik vagy világít). Rádugom a PIC-et, akkor is jó minden jelszint. Elindítom az égetést, a vpp és vdd led össze-vissza villog, majd a program kiírja, hogy chip programmed (mellesleg olvasásnál mindkét led elalszik és csak az olvasás befejezésénél villannak párat, majd égve maradnak) . Rámegyek az olvasásra és kijön a nagy semmi. És ez így is igaz, mert a PIC nem csinálja azt, amit kéne(konkrétan azt, hogy a 10-es lába logikai magas szintet adjon ki, ha külső resetet kap+4 MHz-es kristály). Már kezdem azt hinni, hogy ezek a párhuzamos égetők sohasem fognak működni, fogalmam sincs mi lehet a baja.(Ezzel az égetővel PicKit2-höz szeretném beprogramzni a PIC-et). Ha van valami tippetek mi lehet a baja, akkor kérlek osszátok meg velem. A választ előre is köszönöm. Üdv: mate_x
Már a ChipCAD-nél is hirdetik az új Microstick fejlesztőkártyát, ami olcsó megoldást kínál a Microchip 16 bites PIC24H mikrovezérő és dsPIC33F digitális jelvezérlő áramköreinek fejlesztéséhez. A kompakt kivitelű (20 x 76 mm) Microstick dugaszolós próbapanelbe vagy saját készítésű fejlesztői/prototípus kártyába dugható. A kártyára integrálva van egy USB programozó/hibavadász egység is, így nem kell hozzá külön programozó.
A Memoriastick for dsPIC33F and PIC24H (DM330013) fejlesztőeszköz tartalmaz egy dsPIC33FJ64MC802 és egy PIC24HJ64GP502 mikrovezérlőt is. Előnyös tulajdonsága, hogy foglaltban van a mikrovezérlő, tehát könnyen cserélhető. Ára: 5.805 Ft+áfa Az alapkapcsolás hasonló ahhoz, amit a "Mesterkedések PIC24 és dsPIC33 mikrovezérlőkkel" c. cikkemben ismertettem, bónuszként rajta van a programozó/debugger is. A Mikrostick jól használható a Microcontrollers: From Assembly Language to C Using the PIC24 Family tankönyv (vagy magyar ferdítése, a PIC-kwik project) példaprogramjainak kipróbálásához. Amit hiányolok belőle: rátehették/megoldhatták volna a kommunkikációt egy USB-UART konverterrel. Így azt külön kell megvenni/elkészíteni, ha a példaprogramok interaktivitását is ki akarjuk használni. Erre legelengánsabb megoldás az TTL-232R-3V3 FTDI kábel (fontos, hogy 3,3 V-os jelszintű legyen!), az olcsóbbik pedig egy MCP2200-zal (vagy PIC18F14K50-nel) házilag megépített átalakító.
Úgy látom, hogy itt az invertálás beállításával lesz a baj. Mindent úgy kell beállítani, hogy alap esetben 0-ás szintje legyen, bekapcsolva pedig 1-es. A hozzászólásod alapján neked a VDD és a VPP pont fordítva működik.
Én mióta elkezdtem PIC-ekkel foglalkozni, ezt az égetőt használom és tökéletesen működik. |
Bejelentkezés
Hirdetés |