Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   35 / 1319
(#) Topi válasza Blint hozzászólására (») Máj 29, 2007 /
 
Minden PIC-nél használható ahol engedi a fordító... De szerintem mindegyiknél.
(#) maestro válasza Norberto hozzászólására (») Máj 29, 2007 /
 
Ok. Köszi a kimerítő választ.
Idézet:
„Azért tovább is mesélem, hátha érdekel”

Persze, hogy érdekel ha az elektronikával kapcsolatos!
(#) Prinner válasza watt hozzászólására (») Máj 30, 2007 /
 
Üdv.
Egy 32bit bináris--> 10 BCD konvertáló függvényre lenne szükségem. Sajnos nem találtam ilyent, a michrochip-nél csak 16 bites van. Viszont a Kónya L. oldalán Link
a Programozás/16bit bináris 5 jegyű BCD/C algoritmus-nál azt írta, hogy át lehet alakítani a függvényt tetszőleges számjegyűre. Csak nem értem a függvény végét
A válaszokat előre megköszönöm
(#) watt válasza Prinner hozzászólására (») Máj 30, 2007 /
 
(#) Prinner válasza watt hozzászólására (») Máj 30, 2007 /
 
Ok kösz, pont egy ilyent kerestem
Bemásoltam a saját programomba, de sajnos nincs elég hely a bank0-ban, ezért átraktam a függvény összes reg-jét bank1-be, de nem működött, még próbálkozok vele, mert jónak tűnik.
(#) imbra hozzászólása Máj 30, 2007 /
 
Üdv! Építettem egy Pic programozót. Találtam a neten egy pic-es led villogtatót, ki szeretném próbálni. Nekem 16F871-em van itthon, de a kapcsolás18F252-re van. Azt kérdezném a 16-ost felprogramozva működik az áramkör? A Pic-ek között van kompatibilitás? Bocsi, ha nagyon hülyeséget kérdeztem... Zoli
(#) watt válasza imbra hozzászólására (») Máj 30, 2007 /
 
Sajnos nem fog működni. Átírni sem egyszerű.
(#) Prinner válasza watt hozzászólására (») Máj 30, 2007 /
 
Sajna nem boldogulok a 32bit->10 digit BCD rutinnal {(#89449). hozzászólásban linkelve}. A fordító (MPASM Toolsuite) mindíg hibát ír ki, az oldalon van egy link is, ami speckó beállításokról írkál:

The dialog box is reached from the MPLAB main window by clicking on Project then on Add/Modify Compiler
erről van szó

Ilyen nincs is. Igaz MPLAB 3.akárhányas verziójával készült a rutin, tehát nem is olyan meglepő.
Az lenne a kérdésem, át lehetne-e írni normálissá ezt a függvényt?
Elég érdekes megoldások vannak benne pl.:

CBLOCK 0x0c
bin:4
Ez azt jelenti négy regiszternek van egy azonosítója. Nem is tudtam, hogy ilyent is lehet vele csinálni.

Na mindegy, az eredeti asm-et befordítva ezt kapom hibaüzenetként:
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "D:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84 "BCD2A.ASM" /l"BCD2A.lst" /e"BCD2A.err"
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 56 : Symbol not previously defined (fsr)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 58 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 61 : Symbol not previously defined (fsr)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 67 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 68 : Symbol not previously defined (fsr)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 72 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 92 : Symbol not previously defined (fsr)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 99 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 100 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 102 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 104 : Symbol not previously defined (indf)
Error[113] D:\MPLAB PROJEKTEK\32BITBCDORIGINAL\BCD2A.ASM 105 : Symbol not previously defined (fsr)
Halting build on first failure as requested.
BUILD FAILED: Wed May 30 21:59:11 2007
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Első körben próbáld átírni nagybetűsre az fsr-t és a indf-et. Ha ez nem jönne be, akkor az fsr helyére írj 4-et, az indf helyére 0-t(ezek a címei az említett regeknek a 16F84-ben, és ezeket a szimbólumokat nem ismeri fel a fordító.)
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Ezt a bin:4-et én sem ismertem, lehet a bővítés része. Én nem vagyok híve ezeknek a bővítéses dogoknak, szeretem a gyári dolgokat használni, nem ér meglepetés. Persze lehet, hogy csak én vagyok lemaradva és lehet ilyet az újabb MPLAB-okban csinálni, de ezt csak délután tudom kipróbálni, kíváncsi vagyok...
A fenti megoldás kiváltása:
A
bin:4
bcd:10
helyére kell írni:

bin
bin1
bin2
bin3
bcd
bcd1
bcd2
.......
bcd9

Érted miért ugyanaz a kettő eredménye? Szerinted számít a bin1-től ill. bcd1-től milyen nevet adunk?
(#) Prinner válasza watt hozzászólására (») Máj 31, 2007 /
 
Így sem sikerült befordítani :rinya:
Ha átírom az fsr-t és az indf-et nagy betűre akkor "Duplicate label" és "Missing argument(s)" hibaüzeneteket kapok helyette. Ha nullát és 4-et írok be helyettük akkor "Illegal label (0)" és "Missing argument(s)" hibaüzeneteket kapok.
A BCD:10-et szerintem inkább így értelmezi:
bcd+0
bcd+1
...
bcd+9

Az asm-ben valami ilyenek vannak.
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Idézet:
„A BCD:10-et szerintem inkább így értelmezi: bcd+0 bcd+1 ... bcd+9 Az asm-ben valami ilyenek vannak.”

Kérdeztem, hogy érted e, hogy miért jó úgy, ahogy írtam. Nyugodtan válaszolhatod, hogy nem, nem szégyen valamit nem tudni, én se tudok mindent!

A bcd:10 lefoglal 10 memória helyet, és az első lefoglalt hely címe a bcd lesz, az-az az a cím, amin éppen a CBLOCK ban a bcd áll(0x0C+4 az-az 0x10) . Mivel ez egy cím, ezért hozzá lehet adni számokat, ezért lesz bcd+1 értelmezhető a fordítónak, ami ebben az esetben a bcd utáni rekeszre fog mutatni(0x11). Ezért nem érdekes, hogy milyen nevet adsz a bcd utáni változóknak, mert nem név szerint hivatkozik rá a programozó a programban.

Az fsr, indf kérdést délután megnézem, mert már engem is érdekel, miért nem képes lefordítani ezeket a szimbólumokat, főleg úgy nem, ha számokkal hivatkozol a regiszterekre! Remélem lesz időm rá!
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Még egy kérdés, így írtad át őket?

movlw 0x20 ;initialize pointer
movwf FSR ; to RAM
NEXT clrf INDF ;clear INDF register
incf FSR ;inc pointer
btfss FSR,4 ;all done?
goto NEXT ;NO, clear next
CONTINUE
: ;YES, continue

A 16F84 adatlapjából az indirekt címzési mód rész példáját másoltam ide.
A fordítónak kötelesége ismernie az FSR és az INDF szimbólumokat, feltéve ha a programban be van include-olva a megfelelő fájl, eredeti esetben ez:
#include
ill. az a PIC amire át szeretnéd írni a progit...

(#) watt válasza watt hozzászólására (») Máj 31, 2007 /
 
lemaradt...
#include "<"P16F84.INC">"

nem szereti a fórummotor a kisebb nagyobb jelet!
A macskakörmök nem kellenek....
(#) bbatka válasza watt hozzászólására (») Máj 31, 2007 /
 
Nekem is ez ugrott be. Én is volt hogy megszívtam vele, mert lemaradt az Include sor. A hibaüzenet már nekem is ismerős.
(#) elko2 válasza watt hozzászólására (») Máj 31, 2007 /
 
Hali
valaki meg tudná nézni mi gond lehet ezzel a programmal sehogy sem akar müködni,basicben van
(#) Prinner válasza watt hozzászólására (») Máj 31, 2007 /
 
Igen, bent van az include, miután beírtam rendesen. Az eredeti asm-ben kettőskereszt (#) nélkül volt beírva, de ezt észrevette a fordító, ezt még sikerült tegnap kijavítani.

Szerintem nagy betűkkel felismeri az FSR-t és az INDF-et, mert csak "Missing argument(s)"-et ír ki. Ha nem ismerné fel (kisbetűkel) akkor illegal charactert, vagy valami hasonlót írna ki.
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
A movwf FSR elvileg azonos a movwf 4 formával, ha a fordító értelmezi az FSR-t ami a P16F84.inc-ben 4-nek van deklarálva.
Nem értem milyen érték hiányzik akkor neki? No mindegy, nem sokára otthon leszek, már nagyon kíváncsi vagyok mi a megoldás!
(#) pet hozzászólása Máj 31, 2007 /
 
Sziasztok!
Első PIC-es áramkörömet szereném megépíteni. Ti milyen programot, fordítót, égetőt és PICet ajánlotok?
Egyik barátom a PICBasic-et használ. Nem tudjátok, hogy ezt honnan tudom letölteni és mik kellenek még hozzá, hogy tudjam használni?
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Na itt vagyok, mellékeltem a lefordítható fájlt, legalább is nekem lefordult.
Én nem tettem semmi más, mint az fsr és az indf szimbólumokat nagybetűvel írtam be(ez egy szabály az MPLAB-ban, nem is értem miért ilyen a példa kód.).
Még nem teszteltem, de azt is megnézem. Egyelőre annyi is eredmény, hogy simán lefordult. Az MPLAB-om 7.5-ös.

BCD2A.ASM
    
(#) watt válasza pet hozzászólására (») Máj 31, 2007 /
 
Három csomagot ajánlok:
1.
-PIC16F627A-I/P PDIP 310 Ft +fa
-oshon program, vagy IC-Prog
-oshon, vagy WPB égető áramkör
-MPLAB 7.5 fejlesztő környezet
- Assemler

2.
- PIC18F1320-I/P PDIP 540 Ft +fa
- WPB_F18 (wattmep.tvn.hu)
- oshon, vagy WPB égető áramkör
- MPLAB 7.5 fejlesztő környezet
- Assemler és ha már megy esetleg C18

3.
- PIC18F2550-I/SP SPDIP 1200 Ft+fa
- WPB_F18 (wattmep.tvn.hu)
- oshon, vagy WPB égető áramkör
- MPLAB 7.5 fejlesztő környezet
- Assemler és ha már megy esetleg C18

A basic nem PIC-hez illő program, de már a C-is túlzás egy sokkal inkább elektromos áramkörhöz, mint programozható eszközhöz!
A PIC működését, csak assemleren keresztül értheti meg az ember, a fejlettebb nyelvek elfedik a lényeget és ha valami nem működik, soha nem jön rá az ember mi az oka. Ezért legyen a második nyelv a C vagy a Basic, ha már ismerjük a PIC lényegét.


(#) Prinner válasza watt hozzászólására (») Máj 31, 2007 /
 
Kösz megvan miért nem ment nekem: amikor tegnap kis betűkkel voltak az indf és az fsr, megpróbáltam az elején #define fsr-el, és indf-el. Aztán valahogy bent felejtettem Bocs a hülyeségért

Most pedig át kellene írnom 16f877a-ra, és belemásolni a meglévő progiba. Kiíváncsi vagyok, hogy müxik-e.
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Mennie kell, elvileg minden stimmel oda is, változtatni sem kell a kódon.

Jut eszembe, megint tanultam valamit, mert ezt a bin:4 megoldást nem ismertem. Tetszik!
(#) Prinner válasza watt hozzászólására (») Máj 31, 2007 /
 
Megnéztem, hogy fordítja le, a bin:4-et: az aktuális címet elnevezi bin-nek, majd utána 3 reget nem nevez el. Azt akarom még kérdezni, ha a bin:4-nek egyesével be akarom írni az értékeit, akkor az el nem nevezett reg-ek hexáját írjam be, vagy lehet másképpen is?
(#) potyo válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Idézet:
„Azt akarom még kérdezni, ha a bin:4-nek egyesével be akarom írni az értékeit, akkor az el nem nevezett reg-ek hexáját írjam be, vagy lehet másképpen is?”


Pl. MOVWF bin+2

A számolgatást meg hagy a fordítóra, azért van...
(#) watt válasza Prinner hozzászólására (») Máj 31, 2007 /
 
Kérlek olvass kicsit vissza, nemrég részletesen taglatam a változó nevek hogyan kapnak értéket, hogyan értelmezi a fordító a neveket és hogyan deklarálhatjuk sokféleképpen őket!

Idézet:
„Megnéztem, hogy fordítja le, a bin:4-et: az aktuális címet elnevezi bin-nek, majd utána 3 reget nem nevez el.”

De hiszen ezt az imént írtam le! :miaz:

Idézet:
„Azt akarom még kérdezni, ha a bin:4-nek egyesével be akarom írni az értékeit, akkor az el nem nevezett reg-ek hexáját írjam be, vagy lehet másképpen is?”

Lehet a hexával is, de ha nem akarsz +1-ezni, meg nem akarsz hexázni, akkor úgy deklaráld a változóneveket, ahogy már írtam: bin, bin1, bin2 stb, és akkor a nevükön lehet őket szólítani. Ennek még van egy előnye, hogy a Watch ablakban ki tudod választani a debuggoláskor a regeket, hogy lástd mi történik velük. bin:4 megoldásnál nem lesz mit kiválasztani, mert a rekeszeknek igazából nincs nevük, csak az első jelenik meg a listában.
Indirekt címzéshez viszont ideális megoldás, főleg, ha több 100 rekeszt kell lefoglalni.

(#) Prinner válasza watt hozzászólására (») Máj 31, 2007 /
 
Az a probléma, hogy mindíg 9953364825-öt ír ki végeredményül, függetlenül attól, hogy milyen értékű a bemeneti adat. A bemeneti bináris adatot mindenképpen megkapja, ezt is kiíratom lcd-re.
Az eredetihez képest annyit változtattam, hogy a reg-eket átírtam bin, bin1 bin2... re az összeset, ahogy mondtad
(#) Prinner hozzászólása Jún 1, 2007 /
 
Már működik!
Az volt a gond, hogy bemásoltam a makrót is, ami egy fix értéket rak be a bin:4-be, és a bin...bin4 is fordítva van számozva: bin3 az LSB és bin0 az MSB. Úgyanez a bcd regeknél is...

Ez jó példa arra, amikor az ember előbb kérdez, mielőtt gondolkodna...
(#) watt válasza Prinner hozzászólására (») Jún 1, 2007 /
 
Ez jó hír, szuper! Gratulálok!
(#) kristalycuki hozzászólása Jún 1, 2007 /
 
Hello mindenki!

Olyan problémám akadt, hogy:
Van egy programom, a számítógépes szimulátoron kitűnően működik, azt csinálja amit kell.De ha beégetem a PIC-be el se indul!
A program az LCD inicializálásával kezdődik és a beégetett program már ezt se hajtja végre!
Leegyszerűsítettem a programot, az eleje maradt ugyan az csak a SUB-okat vettem ki belőle, így elindul csinálja ügyesen. Kibővítettem 1-2 SUB-bal, még mindíg műkszik, bár néha nem jól indul be és nem pont azt csinálja amit kell!
Ezek után hozzá írok még 1-2 sort és beégetve nem hajlandó beindulni.
Mi lehet a gond? Az égető progi szerint az égetés minden esetben jól zajlott le és az ellenőrzés során se talál hibát.

Várom az okosok válaszát, ötleteit, segítségét!
Előre is köszi!
Következő: »»   35 / 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