Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   783 / 1320
(#) kissi válasza mrobi hozzászólására (») Aug 5, 2010 /
 
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
(#) mrobi válasza kissi hozzászólására (») Aug 5, 2010 /
 
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.
(#) kissi válasza mrobi hozzászólására (») Aug 5, 2010 /
 
Én úgy látom, hogy nincs projekted...ha csak az asm fájl-t akarod nézegetni, az úgy nem megy!

Steve
(#) mrobi válasza kissi hozzászólására (») Aug 5, 2010 /
 
és tudnál segíteni ebben a projektben. Mert én csak 5.7-el dolgoztam idáig. És az kicsit más mint ez.
(#) kissi válasza mrobi hozzászólására (») Aug 5, 2010 /
 
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
(#) icserny hozzászólása Aug 5, 2010 /
 
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ú
  1. #if defined ( ADC_V1 ) || defined ( ADC_V2 ) ... stb.

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.
  1. #define ENABLE_AN3  0x0008
  2.      #define ENABLE_AN4  0x0010
  3.      #define ENABLE_AN5  0x0020
  4.      #define ENABLE_AN6  0x0040
  5.      #define ENABLE_AN7  0x0080
  6.      #define ENABLE_AN8  0x0100
  7.      #define ENABLE_AN9  0x0200
  8.      #define ENABLE_AN10 0x0400
  9.      #define ENABLE_AN11 0x0800


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)
  1. #include "adc.h"
  2.   #define USE_OR_MASKS
  3.   OpenADC(ADC_FOSC_64 | ADC_RIGHT_JUST | ADC_20_TAD,
  4.     ADC_CH10 | ADC_INT_OFF,
  5.     ADC_REF_VDD_VDD | ADC_REF_VDD_VSS,
  6.     ENABLE_AN10 | ENABLE_AN11);


Megjegyzés: az OpenADC() függvény csak az analóg funkciót engedélyezi, a TRIS biteket nem állítja be!
(#) mrobi válasza kissi hozzászólására (») Aug 5, 2010 /
 
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!
(#) kissi válasza mrobi hozzászólására (») Aug 5, 2010 /
 
OK, örülök, hogy sikerült !

Steve
(#) Attila86 hozzászólása Aug 5, 2010 /
 
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.
(#) szilva válasza Attila86 hozzászólására (») Aug 5, 2010 /
 
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?
(#) Attila86 válasza szilva hozzászólására (») Aug 5, 2010 /
 
És honnan tudom hogy hol van a _PGM_0E64 szimbólum?
(#) szilva válasza Attila86 hozzászólására (») Aug 5, 2010 /
 
Megnézed a map vagy lst fileban.
(#) Attila86 válasza szilva hozzászólására (») Aug 5, 2010 /
 
Az lst fájlban 00000E64 van mellé írva a value oszlopba. Ez mit jelent?
(#) icserny válasza icserny hozzászólására (») Aug 5, 2010 /
 
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:
  1. /* ***** Positive Voltage Reference Configuration bits ***** */
  2. #define ADC_REF_VDD_VDD  0b11110011 // ADC voltage source VREF+ = AVDD
  3. #define ADC_REF_VDD_VREFPLUS  0b11110111 // ADC voltage source VREF+ = ext. source at VREF+
  4. #define ADC_REF_VDD_FVREF         0b11111011 // ADC voltage source VREF+ = FVREF+


Eredetileg hibásan, egy helyiértékkel jobbra csúszva vannak definiálva!
(#) icserny válasza mrobi hozzászólására (») Aug 5, 2010 /
 
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!
(#) szilva válasza Attila86 hozzászólására (») Aug 5, 2010 /
 
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?
(#) Attila86 válasza szilva hozzászólására (») Aug 5, 2010 /
 
Nem, egyszerűen csak bemásolgattam a programba az oldal által generált rutinokat. De sajnos nem értem teljesen ezt az idézetet. :no:
(#) Hp41C válasza Attila86 hozzászólására (») Aug 5, 2010 / 2
 
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....
(#) Attila86 válasza Hp41C hozzászólására (») Aug 5, 2010 /
 
Szia!

Köszönöm! Átírtam a goto $+1 -eket goto $+1 -re. Nem fontos hogy halálpontos legyen úgysem.
(#) Hp41C válasza Attila86 hozzászólására (») Aug 5, 2010 / 1
 
Szia!

Copy & Paste ... Talán bra $+2 / goto $+4 ugrik a következő utasításra...
(#) trudnai válasza Attila86 hozzászólására (») Aug 5, 2010 /
 
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...
(#) trudnai válasza Hp41C hozzászólására (») Aug 5, 2010 /
 
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?
(#) Attila86 válasza trudnai hozzászólására (») Aug 6, 2010 /
 
Basszus, észre se vettem! $+2-re írtam egyébként.
(#) Hp41C válasza trudnai hozzászólására (») Aug 6, 2010 /
 
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...
(#) KipKap hozzászólása Aug 6, 2010 /
 
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!
(#) kissi válasza KipKap hozzászólására (») Aug 6, 2010 /
 
Konkrét megoldást nem tudok, de ha másképp nem megy, akkor tegyél le egy könyvjelzőt!

Steve
(#) KipKap válasza kissi hozzászólására (») Aug 6, 2010 /
 
Ez tényleg jó -jobb -megoldás! Inkább mint keresgetni. Köszönöm szépen!
(#) mate_x hozzászólása Aug 6, 2010 /
 
Ü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
(#) icserny hozzászólása Aug 6, 2010 /
 
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ó.
(#) hadnagyakos válasza mate_x hozzászólására (») Aug 6, 2010 / 1
 
Ú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.
Következő: »»   783 / 1320
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