ICD2 - breakpoints
andrej jancura
hw_aj@zoznam.sk
Úterý Prosinec 2 17:36:26 CET 2008
Vdaka za prakticke info. Aspon trochu mi to pomohlo vyjasnit si moj
matny technicko-filozoficky obraz o tom, ako to vyriesil Microchip.
A.
On Tue, 2 Dec 2008 12:11:35 +0100
"Michal HW" <michalgregor@centrum.cz> wrote:
> Takze jsem udelal hokus pokus. (Vypis programu je na konci mailu.)
>Advanced Breakpoint jsem nastavil na Promenna_B, zapis hodnoty 0x55.
> Program se zastavil, ale probehly dalsi instrukce:
>
> movwf Promenna_B
> retfi FAST
> nop ; tady je uklazatel v MPLABU
>
> Takze ICDII advanced breakpoin funguje i v preruseni. Normalni
>breakpoint funguje jak ma.
> Zpozdeni je ruzne:
> Program breakpoint: zastavuje na dalsi instrukci
> Advanced break point - zapis hodnoty: zastavuje na treti instrukci
> Advanced break point - cteni hodnoty: zastavuje na dalsi instrukci
>(nejake zmatene - po resetu na druhe instrukci)
>
> Advanced break point - pouze zapis: zastavuje na dalsi instrukci
> Preruseni: Advanced break point - pouze zapis: zastavuje na treti
>instrukci
> Advanced break point - pouze cteni: zastavuje na dalsi instrukci
>
> Skoda ze neni nekde detailni popis ICDII. Kolik je toho reseno
>pomoci HW/ SW.
>
> Michal Gregor
> PS: Program taky zkousi chybu Fast Stack register, ale u 8723 se
>nastesti neprojevuje
>
>
> ;***********************************************************************
> ;
> ; Test breakpointu v ICD II
> ; 18F8723
> ;
> ;**********************************************************************
> ;**********************************************************************
> ;**********************************************************************
>
> list p=18F8723
> #include <p18F8723.inc>
>
>
> CONFIG OSC = HS
> CONFIG FCMEN = OFF
> CONFIG IESO = OFF
> CONFIG PWRT = OFF
> CONFIG BOREN = OFF
> CONFIG WDT = OFF
> CONFIG MODE = MC
> CONFIG WAIT = OFF
>
> CONFIG MCLRE = ON
> CONFIG STVREN = OFF
> CONFIG LVP = OFF
> CONFIG XINST = OFF
> CONFIG DEBUG = ON
> CONFIG CP0 = OFF
> CONFIG CP1 = OFF
> CONFIG CP2 = OFF
> CONFIG CP3 = OFF
> CONFIG CP4 = OFF
> CONFIG CP5 = OFF
> CONFIG CP6 = OFF
> CONFIG CP7 = OFF
>
> CONFIG CPB = OFF
> CONFIG CPD = OFF
>
> CONFIG WRT0 = OFF
> CONFIG WRT1 = OFF
> CONFIG WRT2 = OFF
> CONFIG WRT3 = OFF
> CONFIG WRT4 = OFF
> CONFIG WRT5 = OFF
> CONFIG WRT6 = OFF
> CONFIG WRT7 = OFF
> ;**********************************************************************
>
>
> Promenna_A equ 0
> Promenna_B equ 1
> Promenna_C equ 2
> Promenna_D equ 3
>
> W_Temp equ 4
> STATUS_Temp equ 5
> ;*********************************************************
> org 0
>
> nop
> bcf INTCON,GIE
> goto Start
> ;*********************************************************
> ;Přerušení jen CCP1
>
> org 0x16
>
> ; movwf W_Temp
> ; movff STATUS,STATUS_Temp
>
> ;---------------------------------------------------------------------
> ;Ukončení přerušení
>
> Navrat bcf PIR1,CCP1IF
> clrf T1CON
>
> movlw 0x55
> movwf Promenna_B
>
> ; movff W_Temp,WREG
> ; movff STATUS_Temp,STATUS
>
> retfie FAST
> ;**********************************************************************
> ;**********************************************************************
> Start clrf INTCON
>
>
> clrf STATUS
>
> setf TRISA
> setf TRISB
> setf TRISC
> setf TRISD
> setf TRISE
> setf TRISF
> setf TRISG
> setf TRISH
>
> movlw b'00000100' ; CCP1
> movwf PIE1
> movlw b'01000000' ;pouze periferie
> movwf INTCON
> clrf PIR1 ;Vynulovat
>
> movlw 0x4
> movwf CCPR1L
> movlw 0x00
> movwf CCPR1H
> movlw b'00001011'
> movwf CCP1CON
>
>
> bsf INTCON,GIE
> ;**********************************************************************
> ;Hlavní smyčka
>
> Cykluj
> clrf Promenna_B
> clrf TMR1L
> clrf TMR1H
> movlw b'00000001'
> movwf T1CON
>
> movlw 6
> movwf Promenna_A
> movlw 5
> movff Promenna_A,WREG
> nop
> nop
> nop
>
> movlw 7
> movwf Promenna_A
> movlw 8
> movff Promenna_A,WREG
>
> movlw 9
> movwf Promenna_A
> movlw 10
> movff Promenna_A,WREG
>
>
> goto Cykluj
> end
>
>
>
>
> ----- Original Message -----
> From: andrej jancura
> To: HW-news
> Sent: Monday, December 01, 2008 5:43 PM
> Subject: Re: ICD2 - breakpoints
>
>
> To je prave podla mna ten omyl. Myslim si, ze to je riesene tak, ze
>to
> pozera len opkod zapis do pamati a ma to registre kde su ulozene
> adresy. Aspon takto by som to riesil v HW emulatore. ICD je na
> podobny druh dbg nevhodne, pretoze ma len jeden register na stop, a
>to
> tiez len pre konkretne adresy. Uz si to presne nepamatam, ale
>myslim
> si, to advanced znamena len to, ze tie stop-registre su styri.
>
> Pokial potrebujes naozaj nieco slusne robit, musis si pozriet
>nejaky
> HW emulator. Asix mal pre PIC16, ale len 8-pinove. ICD je len low
>cost
> pre bastlicov, ale na profi pracu sa nehodi. Mimochodom to co
> poskytuje robila uz stara HC11 a vsetky novsie HC08. Tam sa da
>pouzit
> dbg monitor bud ten v eprom, alebo si ho natiahnut do RAM a mal
>presne
> take iste obmedzenia ako ICD. Realne prerusenia sa tym nedali
> debugovat tiez.
>
> A.
>
>
> On Mon, 1 Dec 2008 13:32:28 +0100
> "Michal HW" <michalgregor@centrum.cz> wrote:
> > Je to psane v C - vypis pameti. Prvni radek zapisuje
>hodnotu(0x272 -
> >0x00) do WREG,
> > ICDII neni nikde popsan. Rada 16 ma specielni registr pro adresu
> >breakpointu. Ale jak je to delane na 18xxxx jsem nezjistil. Podle
>mne
> >tam ale pro breakpointy v RAMce musi byt nejaka HW podpora.
> >
> > Michal Gregor
> >
> >
> > ----- Original Message -----
> > From: andrej jancura
> > To: HW-news
> > Sent: Monday, December 01, 2008 12:56 PM
> > Subject: Re: ICD2 - breakpoints
> >
> >
> > No len jedna poznamka, WREG ma na prvom riadku hodnotu >254 ?
>Skus
> >si
> > tam napisat MOVLW...
> >
> > Na dbg interrupt rutiny by som ICD nepouzil, nakolko sa jedna o
>sw
> > emulovanie a to hold v isr moc dobre nemusi nechodi.
> >
> > A.
> >
> >
> >
> > On Mon, 1 Dec 2008 12:35:20 +0100
> > "Michal HW" <michalgregor@centrum.cz> wrote:
> > > Zkousim najit chybu v programu:
> > >
> > > Line Address Opcode Label Disassembly
> > >
> > > 8546 042C2 C272 MOVFF 0x272, WREG
> > > 8547 042C4 FFE8 NOP
> > > 8548 042C6 0F07 ADDLW 0x7
> > > 8549 042C8 CFE8 MOVFF WREG, Pocet_B
> > > 8550 042CA FD3D NOP
> > > 8551 042CC C0B7 MOVFF Ukazatel, Vstup_P
> > > 8552 042CE F0BB NOP
> > > 8553 042D0 C0B8 MOVFF Vstup_K, 0xbc
> > > 8554 042D2 F0BC NOP
> > > 8555 042D4 C0B9 MOVFF Vstup, 0xbd
> > > 8556 042D6 F0BD NOP
> > > 8557 042D8 EC08 CALL Sloz_Konec, 0
> > > 8558 042DA F029 NOP
> > > 8559 042DC 6E00 MOVWF 0, ACCESS
> > > 8560 042DE CD3D MOVFF Pocet_B, 0x1
> > >
> > > Promenna Pocet_B ma chybnou hodnotu 0x05. Nastavil jsem si
> >Advanced
> > > breakpoint na zapis hodnoty 0x05 do Pocet_B.
> > >
> > > ICDII se zastavi na radku 8553, ktery vubec s Pocet_B
>nepracuje.
> > >
> > > 0x272 obsahuje 0. Pocet_B ma 0x05. (Vysledek mel byt 7)
> > >
> > > Vypada to ze z preruseni se vrati spatny obsah WREG. Kdyby se
>v
> > >preruseni
> > > zapisovala hodnota 0x05 do Pocet_B, tak to ICDII zachyti, Nebo
> >ne?
> > > Procesor je 18F8723. ERRATA jsou prazdne, takze chybu s Fast
> >Stack
> > >Registrem
> > > by nemel mit.
> > >
> > > Michal Gregor
> > >
> > _______________________________________________
> > HW-list mailing list - sponsored by www.HW.cz
> > Hw-list@list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list