ICD2 - breakpoints
Michal HW
michalgregor@centrum.cz
Úterý Prosinec 2 12:11:35 CET 2008
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ší část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20081202/efc67883/attachment.htm
Další informace o konferenci Hw-list