|
|
View previous topic :: View next topic |
Author |
Message |
YASU
Joined: 18 Mar 2010 Posts: 7
|
HELP Problem of "set_tris_e" at 16LF1937 |
Posted: Thu Mar 18, 2010 6:29 am |
|
|
Now I have trouble at compiling "set_tris_e".
I can compile set_tris_a, set_tris_b, set_tris_c, and set_tris_d.
But I cannot compile set_tris_e.
After compiling set_tris_e, Disassembly list at MPLAB SIM is following.
Code: |
24: set_tris_a( 0x02 );
001F 3002 MOVLW 0x2
0020 008C MOVWF 0xc
25: set_tris_b( 0xFF );
0021 30FF MOVLW 0xff
0022 008D MOVWF 0xd
26: set_tris_c( 0x04 );
0023 3004 MOVLW 0x4
0024 008E MOVWF 0xe
27: set_tris_d( 0x00 );
0025 3000 MOVLW 0
0026 008F MOVWF 0xf
28: set_tris_e( 0x0C);
0027 1009 BCF 0x9, 0
0028 1089 BCF 0x9, 0x1
0029 1489 BSF 0x9, 0x1
002A 1489 BSF 0x9, 0x1
|
No resistor settings are occurred at trise.
Please show me how to fix it, or some alternatives.
Current source file is following (test version).
Code: |
#include "include.h"
#fuses INTRC_IO,NOWDT,PUT,NOMCLR,NOPROTECT,NOCPD,NOBROWNOUT,NOCLKOUT,NOIESO,NOFCMEN,NOWRT,PLL,NOSTVREN,BORV19,LVP
#use delay(clock=8000000)
void main( void )
{
set_tris_a( 0x02 );
set_tris_b( 0xFF );
set_tris_c( 0x04 );
set_tris_d( 0x00 );
set_tris_e( 0x0C);
while( 1 )
{
}
}
|
using environment is as follows.
Device:
16LF1937
Version:
CCS PCM 4.104
MPLAB IDE 8.46
regard. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Mar 18, 2010 12:41 pm |
|
|
I tested your program with vs. 4.105 and it failed in the same way.
As a work-around, you can write directly to the TRISE register, as
shown below in bold:
Quote: |
#byte TrisE = 0x90 // Tell compiler the address of TRISE
void main( void )
{
set_tris_a( 0x02 );
set_tris_b( 0xFF );
set_tris_c( 0x04 );
set_tris_d( 0x00 );
set_tris_e( 0x0C );
TrisE = 0x0C; // Write directly to TRISE register
while(1)
{
}
} |
Note the correct code generated for the work-around statement below:
Code: |
.................... set_tris_a( 0x02 );
001F: MOVLW 02
0020: MOVWF 0C
.................... set_tris_b( 0xFF );
0021: MOVLW FF
0022: MOVWF 0D
.................... set_tris_c( 0x04 );
0023: MOVLW 04
0024: MOVWF 0E
.................... set_tris_d( 0x00 );
0025: MOVLW 00
0026: MOVWF 0F
.................... set_tris_e( 0x0C );
0027: BCF 09.0
0028: BCF 09.1
0029: BSF 09.2
002A: BSF 09.3
....................
.................... TrisE = 0x0C; // Work-around fix
002B: MOVLW 0C
002C: MOVWF 10
....................
|
This bug needs to be reported to CCS support. Tell them the PIC,
the version (and that it fails in vs. 4.105), and show them the test
program and the .LST file. Then they can fix it quickly. |
|
|
Charlie U
Joined: 09 Sep 2003 Posts: 183 Location: Somewhere under water in the Great Lakes
|
|
|
YASU
Joined: 18 Mar 2010 Posts: 7
|
Thanks |
Posted: Tue Mar 23, 2010 11:49 am |
|
|
I could manage this problem by using alternative shown.
Thanks. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|