RE: pic18f4455 - ACCESS flag on the device working or not?
Sivaram Gowkanapalli <[email protected]> Fri, 3 Jun 2011 10:27:10 -0400
| Newsgroups | gmane.comp.hardware.microcontrollers.gnupic |
|---|---|
| Message-ID | <[email protected]> |
--_39092b6f-6f90-4c10-b150-60b7813687b0_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello Marko=2C Thanks. Your observation was spot-on. Enabling the extended instruction set= breaks instructions using the access ram opcode. Thanks again=2CSiva > Date: Fri=2C 3 Jun 2011 11:20:10 +0300 > Subject: Re: pic18f4455 - ACCESS flag on the device working or not? > From: [email protected] > To: [email protected] >=20 > When in extended mode=2C 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. >=20 > 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. >=20 > Marko >=20 > On Fri=2C Jun 3=2C 2011 at 9:42 AM=2C Sivaram Gowkanapalli > <[email protected]> wrote: > > > > Hello=2C > > > > 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 =3D ON and with the --extended flag of gpasm. > > > > The expected result of _temp is 0xf+1+1+1=2C but it stays at 0xff=2C th= e > > 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=2C with XINST=3D ON? > > > > It works perfectly fine on gpsim. I see the value of _temp =3D 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=2C 0x3 movff WREG=2C_temp > > 000182 f003 > > 000184 0e0f movlw 0xf movlw 0x0f > > 000186 6e03 movwf 0x3=2C 0 movwf _temp=2CACCESS > > 000188 2a03 incf 0x3=2C 0x1=2C 0 incf _temp=2CF=2CA= CCESS > > 00018a 2a03 incf 0x3=2C 0x1=2C 0 incf _temp=2CF=2CA= CCESS > > 00018c 2a03 incf 0x3=2C 0x1=2C 0 incf _temp=2CF=2CA= CCESS > > > > > > from the hex file which was downloaded from the pic (to confirm that > > the hexfile was written to the pic correctly=2C > > fromgpdasm -y -p p18f4455 from-pic.hex | less) : > > > > 000180: cfe8 movff 0xfe8=2C 0x3 > > 000182: f003 > > 000184: 0e0f movlw 0xf > > 000186: 6e03 movwf 0x3=2C 0 > > 000188: 2a03 incf 0x3=2C 0x1=2C 0 > > 00018a: 2a03 incf 0x3=2C 0x1=2C 0 > > 00018c: 2a03 incf 0x3=2C 0x1=2C 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=2CREG003 > > 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=2Cf=2C0 > > 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=2Cf=2C0 > > 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=2Cf=2C0 > > Read: 0x0011 from REG003(0x0003) > > Wrote: 0x0012 to REG003(0x0003) was 0x0011 > > Wrote: 0x0000 to status(0x0FD8) was 0x0000 > > > > Any thoughts=2C please? > > Thanks > > Siva > > > > > > > > > >> From: [email protected] > >> To: [email protected] > >> Subject: pic18f4455 - ACCESS flag on the device working or not? > >> Date: Fri=2C 3 Jun 2011 02:28:11 -0400 > >> > >> > >> Hello=2C > >> This piece of code is not working on the pic18F4455. It has been compi= led withXINST =3D ON and with the --extended flag of gpasm. > >> The expected result of _temp is 0xf+1+1+1=2C but it stays at 0xff=2C t= he 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 i= f thishas to do with the extended instruction set or if it could be somethi= ng 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= =2C with XINST=3D ON? > >> It works perfectly fine on gpsim. I see the value of _temp =3D 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=2C 0x3 movff WREG=2C_temp000182 f0030001= 84 0e0f movlw 0xf movlw 0x0f000186 6e03 = movwf 0x3=2C 0 movwf _temp=2CACCESS000188 2a03 incf 0= x3=2C 0x1=2C 0 incf _temp=2CF=2CACCESS00018a 2a03 incf = 0x3=2C 0x1=2C 0 incf _temp=2CF=2CACCESS00018c 2a03 inc= f 0x3=2C 0x1=2C 0 incf _temp=2CF=2CACCESS > >> from the hex file which was downloaded from the pic (to confirm that t= he hexfile was written to the pic correctly=2C fromgpdasm -y -p p18f4455 fr= om-pic.hex | less) : > >> 000180: cfe8 movff 0xfe8=2C 0x3000182: f003000184: 0e0f movlw = 0xf000186: 6e03 movwf 0x3=2C 0000188: 2a03 incf 0x3=2C 0x1=2C= 000018a: 2a03 incf 0x3=2C 0x1=2C 000018c: 2a03 incf 0x3=2C 0x1= =2C 0 > >> output from gpsim when stepping through the code: > >> 0x0000000000002FE9 p18f4455 0x017E 0x0EFF movlw 0xff Wrote: 0x0= 0FF to W(0x0FE8) was 0x00080x0000000000002FEB p18f4455 0x0180 0xCFE8 movff = W=2CREG003 Read: 0x00FF from W(0x0FE8) Wrote: 0x00FF to REG003(0x000= 3) was 0x00000x0000000000002FEC p18f4455 0x0184 0x0E0F movlw 0x0f W= rote: 0x000F to W(0x0FE8) was 0x00FF0x0000000000002FED p18f4455 0x0186 0x6E= 03 movwf REG003 Read: 0x000F from W(0x0FE8) Wrote: 0x000F to REG003(= 0x0003) was 0x00FF0x0000000000002FEE p18f4455 0x0188 0x2A03 incf REG003= =2Cf=2C0 Read: 0x000F from REG003(0x0003) Wrote: 0x0010 to REG003(0x0003)= was 0x000F Wrote: 0x0002 to status(0x0FD8) was 0x00040x0000000000002FEF p= 18f4455 0x018A 0x2A03 incf REG003=2Cf=2C0 Read: 0x0010 from REG003(0x= 0003) Wrote: 0x0011 to REG003(0x0003) was 0x0010 Wrote: 0x0000 to status(= 0x0FD8) was 0x00020x0000000000002FF0 p18f4455 0x018C 0x2A03 incf REG00= 3=2Cf=2C0 Read: 0x0011 from REG003(0x0003) Wrote: 0x0012 to REG003(0x0003= ) was 0x0011 Wrote: 0x0000 to status(0x0FD8) was 0x0000 > >> Any thoughts=2C please? > >> ThanksSiva > >> > > >=20 > --------------------------------------------------------------------- > To unsubscribe=2C e-mail: [email protected] > For additional commands=2C e-mail: [email protected] >=20 = --_39092b6f-6f90-4c10-b150-60b7813687b0_--