[elektro] Pickit 2
hg12345
hg12345 at freemail.hu
Mon May 26 08:27:45 CEST 2008
A minta programokban mindig az a baj, hogy olyan "Mint ha program"
lenne :-) E legtöbb nehezen használható igen hibás....
Bocs hogy beleszolok, de a minta program több sebből vérzik, ha
PIC18-re irtad ! A minta példa a 2xW nélkül jól müködik egy 16F/C
rendszeren, de nem egy 18F/C/J/K rendszeren. (Sajnos nem
kompatibilis a két rendszer, és nehezen de megtalálható a leírásban!)
1, A PCLATH és PCLATU nem frissül a program léptetésekor, ezek
önnáló regiszterek nincs sok közük a valós PC-hez! Igy akarmi lehet e
két regiszterben, akárhová ugorhatsz. A fenti két regiszter frisssiteni
kell. Sajnos a (addwf PCL,f) "R/M/W" utasitás nem frissíti,pedig logikus
lenne. A firssitést egy olvasással lehet megoldani.
movff PCL,dummy
sajnos ez se oldja meg teljesen a problémádat, mert a laphatárra
illesztést kézből kell megoldani, itt szükebbek a laphatárok a mert más
PC számláló
2, Ha már 18-ról van szó akkor inkább a felesleges memória foglalás
helyett, használnám
addwf WREG,w ;2x és a carryel se kell foglalkozni
3, a laphatár váltás megoldható, az add után
SKIP(c)
incf PCLATH,f
egy 32K laphatár megtalálása már nagyobb kunszt :-().
4, a fenti problémákat még az IT is nehezítheti..........
Egy univerzális macro a fenti probléma megoldására, ez nekem
müködött: Már rég nem foglalkoztam vele, ha valaki talál benne hibát
szoljon, elöre is köszönöm
;==================================================
==================================================
===============================
; Inteligens memoria takareskos ADDWF PCL,w utasitas hasznalata
; MCASE_PCLw type, tableend
;tablestart bra ;type = 0 (4) (rovid
lapon beluli cimzes) (max 7F cim lehet)
; bra ;type = 1 (11/14) hosszu
lapon keresztul atnyulo cimzes (max FF cim lehet)
; bra ;Type = 2 (13/17) (hosszu
C,W cimzes, maximalisan 1ff cim generalhato)
; bra ;type = 3 (11/13)
(konstanscim + W) MCASE_PCLw 3,tablestart
; goto ;type = 4 (12/14)
(konstanscim + C,W) MCASE_PCLw 4,tablestart
;tableend
;(megjegyeznem a teljes programtar cimzest a MICROCHIP nagyon
elrontotta, a PC szavas cimzesu es a TBLPTR meg bytes-is lehetne,
nem kevesebb problemat okozni mint igy!)
;
;
; Fontos a beolvasast a WDTCON regiszterre vegzem, ezt a regisztert
alkalmazas elott ellenorizni kell, hogy csak olvashato
;
MCASE_IncTOSH MACRO
IF __MAXROM>0xFFFF
infsnz TOSH,f
incf TOSU,f
ELSE
incf TOSH,f
ENDIF
ENDM
;
MCASE_PCLw MACRO Type,TableEnd
LOCAL TstPage = (TableEnd>>8)-($>>8) ,
TstPageStart=$
IF Type==0 ;----------------------Rovid max 0x7F
cimzesu ugras
addwf WREG,f ;2x a
WORD szervezesu a memoria
movff PCL,WDTCON ;(0xF9B) ;PCLATH/U
frissitese
addwf PCL,f
IF TstPage
ERROR Lapvaltas szerepel a CASE_PCLw
utasitason belul, hasznald a: MCASE_PCLw 1,xxxx, Address S/E: #V
(TstPageStart)/#V(TableEnd)
ENDIF
ENDIF
;
IF (Type<3) & (Type>0) ;-----------------
Relativ Stack-en keresztuli teljese cimzes
LOCAL
MCASE_PCLw_0s,MCASE_PCLw_0e,MCASE_PCLw_00,MCASE_
PCLw_01,MCASE_PCLw_02,MCASE_PCLw_0c
push
MCASE_PCLw_0s
IF Type==2 ;--------- Extra
hosszu ADDWF PCL,w utasitas (C,W) maximalisan cimezheto memoria
atfogas 0x1FF
bnc MCASE_PCLw_0x
MCASE_IncTOSH
MCASE_PCLw_0c
ENDIF
addwf WREG,w ;2x a WORD
szervezesu a memoria
bnc MCASE_PCLw_00
MCASE_IncTOSH
MCASE_PCLw_00 addlw MCASE_PCLw_0e-MCASE_PCLw_0s
bnc MCASE_PCLw_01
MCASE_IncTOSH
MCASE_PCLw_01 addwf TOSL,f
bnc MCASE_PCLw_02
MCASE_IncTOSH
MCASE_PCLw_02 return ;>>>> elugras a
kivalasztott cimre
MCASE_PCLw_0e
IF (!TstPage) & (Type<2) ;ha a cim tartomany
1FF akkor nem lehet roviditeni
MESSG Nem kell hosszu CASE utasitas, hasznald
a : MCASE_PCLw 0,xxxx Address S/E: #V(TstPageStart)/#V(TableEnd)
ENDIF
ENDIF
;
IF Type>=3 ;----------------
Konstans + displacement(w) cimzesek kovetkeznek
push ;stack felszabaditasa
clrf TOSH ;csak ezt kell torolni,
itt szamolom az atvitelt
IF Type==4
rlcf TOSH,f ;Carry elhelyezese a
memoriaban, igy 0x1FF cimzes cimezheto
ENDIF
addwf WREG,w ;2x
SKPNC
incf TOSH,f ;atvitel bejegyzese
addlw Low(TableEnd) ;FIGYELEM ilyenkor a
TableEnd = TableStart!!!!!!!!!!
movwf TOSL
movlw High(TableEnd)
addwfc TOSH,f
clrf TOSU
IF __MAXROM>0xFFFF
movlw Low((TableEnd)>>0x10)
addwfc TOSL,f
ENDIF
return ;>>>> elugras a
kivalasztott cimre
ENDIF
IF Type>4
ERROR MCASE_PCLw Type,Cim -ben a Type>4
ertekek nincsenek implementalva
ENDIF
ENDM
;==================================================
==================================================
============================
Skandar Graun <sgraun at gmail.com> írta:
> Keress egy szubrutint. (esetleg az érdekesség kedvéért egy olyat,
ami
> a pcl-t is mozgatja, pl:
>
> cur_out:
> movwf htemp
> addwf htemp,w
> addwf pcl,f
> dt 0,0,1,2,3,3,2,2,2,4, 5, 2, 6, 7, 8, 8, 8,
8, 9, 2,0ah, 3,
> 3, 3, 3,0bh, 2,0ch, 2, 2,0dh,0eh,0fh,10h,0,0
>
> Nyiss egy watch ablakot.
> Tedd bele a wreg és a htemp regisztereket. (Ebből a példából, de ha
> van saját, akkor azt.)
> A szubrutin kezdő sorára mondd azt a jobb egérgombbal, hogy "set
PC to cursor"
> Adj kezdő értéket a W-nek.
> Majd próbáld lépésenként (step into) végrehajtani.
> Nekem most a legelső utasítást (movwf htemp) már nem hajtotta
végre,
> ellenben a következőket igen és utána úgy elugrott a pcába, hogy
csak
> lestem.
>
> 8.10-es mplab, 18f458 -as proci
>
> Ne keresd az értékellenőrzést, az nem ebben a rutinban van, de van.
>
> Torok Imre <ha8lls at mystic-sound.hu> írta, 2008.05.25.:
> > Szia Istvan, Sziasztok!
> >
> > Koszonom a hozzaszolasokat, letiltottam minden mas egyebet a
portc-n,
> > es jo lett a szimulatorban is.
> >
> > DE!
> >
> > Mivel ez a PK2-hoz adott peldaprogram volt, ami ugye a kezdoknek
> > bemutat egy-ket fogast, lehetoseget, akkor miert nincs normalisan
> > megoldva a feladat??? Gondoltam, nem csak beletoltom a pic-be a
> > progit, hanem esetleg belenyulok, atirom, szimulalom, meg ilyenek,
> > hisz eleg regen hasznaltam mar az 5-os mplab-ot. Engem is
megfogott a
> > dolog, akkor egy teljesen kezdo, akinek tenyleg ez az elso
> > probalkozasa, es esetleg meg nem is tagja olyan listanak vagy
> > csoportnak, amely tudna neki segiteni, 5 perc utan bevagja a
sarokba,
> > hogy sz at r az egesz... azert, mert a kedves mernokur, aki irja a
> > sample-kat, meg lesson-oket az tojik a dolog korrektsegere....
> >
> > Koszonom a segitseget megegyszer es a ravilagitast a dolgokra!
> >
> > Udv!
> > Imre
> >
> > --
> > Best regards,
> > Torok mailto:ha8lls at mystic-sound.hu
> >
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
> -----------------------------------------
> elektro[-flame|-etc]
>
_______________________________________________________
Magányos vagy? Társat keresel? Vár Rád a Dual’s Társkereső Iroda A tartós párkapcsolatok közvetítője!
http://ad.adverticum.net/b/cl,1,6022,259322,318619/click.prm
More information about the Elektro
mailing list