gnupic: pic18f4455 - ACCESS flag on the device working or not?


Previous by date: 3 Jun 2011 14:27:16 -0000 Re: pic18f4455 - ACCESS flag on the device working or not?, Marko Kohtala
Next by date: 3 Jun 2011 14:27:16 -0000 pic18f4455 - call graph, Sivaram Gowkanapalli
Previous in thread: 3 Jun 2011 14:27:16 -0000 Re: pic18f4455 - ACCESS flag on the device working or not?, Marko Kohtala
Next in thread:

Subject: RE: pic18f4455 - ACCESS flag on the device working or not?
From: Sivaram Gowkanapalli ####@####.####
Date: 3 Jun 2011 14:27:16 -0000
Message-Id: <SNT125-W1254E90FFB6353451E5630D27F0@phx.gbl>

Hello Marko,
Thanks. Your observation was spot-on. Enabling the extended instruction set breaks instructions using the access ram opcode.
Thanks again,Siva

> Date: Fri, 3 Jun 2011 11:20:10 +0300
> Subject: Re: pic18f4455 - ACCESS flag on the device working or not?
> From: ####@####.####
> To: ####@####.####
> 
> When in extended mode, the memory access with access bit 0 is made
> based on FSR2. gpsim may have FSR2 initially at value 0 so it works
> much the same as standard non-extended mode.
> 
> The config bit XINST does not do much else but define the bit that
> goes to the .hex file and causes the processor to run in extended
> mode. The assembler parses and compiles instructions for extended mode
> based on the --extended command line flag or LIST PE directive.
> 
> Marko
> 
> On Fri, Jun 3, 2011 at 9:42 AM, Sivaram Gowkanapalli
> ####@####.#### wrote:
> >
> > Hello,
> >
> > Please excuse the earlier email. The formatting ended up being a mess.
> >
> > This piece of code is not working on the pic18F4455. It has been
> > compiled withXINST = ON and with the --extended flag of gpasm.
> >
> > The expected result of _temp is 0xf+1+1+1, but it stays at 0xff, the
> > value from the instruction at address 180. As you can see that _temp
> > has anaddress of 0x3 and it should not be affected by the BSR.
> >
> > I am not sure if this has to do with the extended instruction set or if
> > it could be something else. It seems to be something simple that I am
> > missing as the below case is toostraightforward to be a bug.
> >
> > Is this how the instructions would be, with XINST= ON?
> >
> > It works perfectly fine on gpsim. I see the value of _temp = 0xf+1+1+1.
> > It is only on the device that it is not working.
> >
> >
> > from the .lst file:
> >
> > 00017e   0eff     movlw    0xff                  movlw 0xff
> > 000180   cfe8     movff    0xfe8, 0x3            movff WREG,_temp
> > 000182   f003
> > 000184   0e0f     movlw    0xf                   movlw 0x0f
> > 000186   6e03     movwf    0x3, 0                movwf _temp,ACCESS
> > 000188   2a03     incf    0x3, 0x1, 0            incf _temp,F,ACCESS
> > 00018a   2a03     incf    0x3, 0x1, 0            incf _temp,F,ACCESS
> > 00018c   2a03     incf    0x3, 0x1, 0            incf _temp,F,ACCESS
> >
> >
> > from the hex file which was downloaded from the pic (to confirm that
> > the hexfile was written to the pic correctly,
> > fromgpdasm -y -p p18f4455 from-pic.hex | less) :
> >
> > 000180:  cfe8  movff    0xfe8, 0x3
> > 000182:  f003
> > 000184:  0e0f  movlw    0xf
> > 000186:  6e03  movwf    0x3, 0
> > 000188:  2a03  incf     0x3, 0x1, 0
> > 00018a:  2a03  incf     0x3, 0x1, 0
> > 00018c:  2a03  incf     0x3, 0x1, 0
> >
> > output from gpsim when stepping through the code:
> >
> > 0x0000000000002FE9 p18f4455 0x017E 0x0EFF movlw 0xff
> >   Wrote: 0x00FF to W(0x0FE8) was 0x0008
> > 0x0000000000002FEB p18f4455 0x0180 0xCFE8 movff W,REG003
> >   Read: 0x00FF from W(0x0FE8)
> >   Wrote: 0x00FF to REG003(0x0003) was 0x0000
> > 0x0000000000002FEC p18f4455 0x0184 0x0E0F movlw 0x0f
> >   Wrote: 0x000F to W(0x0FE8) was 0x00FF
> > 0x0000000000002FED p18f4455 0x0186 0x6E03 movwf REG003
> >   Read: 0x000F from W(0x0FE8)
> >   Wrote: 0x000F to REG003(0x0003) was 0x00FF
> > 0x0000000000002FEE p18f4455 0x0188 0x2A03 incf REG003,f,0
> >   Read: 0x000F from REG003(0x0003)
> >   Wrote: 0x0010 to REG003(0x0003) was 0x000F
> >   Wrote: 0x0002 to status(0x0FD8) was 0x0004
> > 0x0000000000002FEF p18f4455 0x018A 0x2A03 incf REG003,f,0
> >   Read: 0x0010 from REG003(0x0003)
> >   Wrote: 0x0011 to REG003(0x0003) was 0x0010
> >   Wrote: 0x0000 to status(0x0FD8) was 0x0002
> > 0x0000000000002FF0 p18f4455 0x018C 0x2A03 incf REG003,f,0
> >   Read: 0x0011 from REG003(0x0003)
> >   Wrote: 0x0012 to REG003(0x0003) was 0x0011
> >   Wrote: 0x0000 to status(0x0FD8) was 0x0000
> >
> > Any thoughts, please?
> > Thanks
> > Siva
> >
> >
> >
> >
> >> From: ####@####.####
> >> To: ####@####.####
> >> Subject: pic18f4455 - ACCESS flag on the device working or not?
> >> Date: Fri, 3 Jun 2011 02:28:11 -0400
> >>
> >>
> >> Hello,
> >> This piece of code is not working on the pic18F4455. It has been compiled withXINST = ON and with the --extended flag of gpasm.
> >> The expected result of _temp is 0xf+1+1+1, but it stays at 0xff, the valuefrom the instruction at address 180.  As you can see that _temp has anaddress of 0x3 and it should not be affected by the BSR. I am not sure if thishas to do with the extended instruction set or if it could be something else.It seems to be something simple that I am missing as the below case is toostraightforward to be a bug. Is this how the instructions would be, with XINST= ON?
> >> It works perfectly fine on gpsim. I see the value of _temp = 0xf+1+1+1. It is only on the device that it is not working.
> >> from the .lst file:
> >> 00017e   0eff     movlw       0xff                  movlw 0xff000180   cfe8     movff 0xfe8, 0x3            movff WREG,_temp000182   f003000184   0e0f     movlw      0xf                   movlw 0x0f000186   6e03     movwf 0x3, 0                movwf _temp,ACCESS000188   2a03     incf  0x3, 0x1, 0            incf _temp,F,ACCESS00018a   2a03     incf        0x3, 0x1, 0            incf _temp,F,ACCESS00018c   2a03     incf        0x3, 0x1, 0            incf _temp,F,ACCESS
> >> from the hex file which was downloaded from the pic (to confirm that the hexfile was written to the pic correctly, fromgpdasm -y -p p18f4455 from-pic.hex | less) :
> >> 000180:  cfe8  movff    0xfe8, 0x3000182:  f003000184:  0e0f  movlw    0xf000186:  6e03  movwf    0x3, 0000188:  2a03  incf     0x3, 0x1, 000018a:  2a03  incf     0x3, 0x1, 000018c:  2a03  incf     0x3, 0x1, 0
> >> output from gpsim when stepping through the code:
> >> 0x0000000000002FE9 p18f4455 0x017E 0x0EFF movlw       0xff  Wrote: 0x00FF to W(0x0FE8) was 0x00080x0000000000002FEB p18f4455 0x0180 0xCFE8 movff      W,REG003  Read: 0x00FF from W(0x0FE8)  Wrote: 0x00FF to REG003(0x0003) was 0x00000x0000000000002FEC p18f4455 0x0184 0x0E0F movlw        0x0f  Wrote: 0x000F to W(0x0FE8) was 0x00FF0x0000000000002FED p18f4455 0x0186 0x6E03 movwf      REG003  Read: 0x000F from W(0x0FE8)  Wrote: 0x000F to REG003(0x0003) was 0x00FF0x0000000000002FEE p18f4455 0x0188 0x2A03 incf   REG003,f,0  Read: 0x000F from REG003(0x0003)  Wrote: 0x0010 to REG003(0x0003) was 0x000F  Wrote: 0x0002 to status(0x0FD8) was 0x00040x0000000000002FEF p18f4455 0x018A 0x2A03 incf      REG003,f,0  Read: 0x0010 from REG003(0x0003)  Wrote: 0x0011 to REG003(0x0003) was 0x0010  Wrote: 0x0000 to status(0x0FD8) was 0x00020x0000000000002FF0 p18f4455 0x018C 0x2A03 incf      REG003,f,0  Read: 0x0011 from REG003(0x0003)  Wrote: 0x0012 to REG003(0x0003) was 0x0011  Wrote: 0x0000 to status(0x0FD8) was 0x0000
> >> Any thoughts, please?
> >> ThanksSiva
> >>
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ####@####.####
> For additional commands, e-mail: ####@####.####
> 
 		 	   		  

Previous by date: 3 Jun 2011 14:27:16 -0000 Re: pic18f4455 - ACCESS flag on the device working or not?, Marko Kohtala
Next by date: 3 Jun 2011 14:27:16 -0000 pic18f4455 - call graph, Sivaram Gowkanapalli
Previous in thread: 3 Jun 2011 14:27:16 -0000 Re: pic18f4455 - ACCESS flag on the device working or not?, Marko Kohtala
Next in thread:


Powered by ezmlm-browse 0.20.