|
|
View previous topic :: View next topic |
Author |
Message |
icesynth
Joined: 03 Sep 2007 Posts: 32 Location: Edmonton, Alberta
|
Cannot write SPI2CON1 Register... |
Posted: Mon Feb 08, 2010 11:03 pm |
|
|
I am trying to write the SPI2CON1 register, and it is not accepting the value written to it:
Code: |
#fuses XT, PR_PLL, NOCOE, NOWRTB, NOPUT, NOWRTSS, NOPROTECT, NORSS, NOWDT, NOWINDIS
#FUSES NOWRT //Program memory not write protected
#FUSES DEBUG //Debug mode for ICD
#FUSES NOWRTB //Boot block not write protected
#FUSES NOSSS //No secure segment
#FUSES NORSS //No secure segment RAM
...
i16_previous = SPI2CON1;// Get previous state.i16_new = 0x0020; // Data we are sending...
SPI2CON1 = i16_new; // Write data to the register
i16_result = SPI2CON1; // Read data from the register
SPI2STAT = 0b1000000000000000; // Enable SPI
// Print out the written and read data.
fprintf( SERIAL2, "\n\r -Previous: %LX, New: %LX, Result: %LX", i16_previous, i16_new, i16_result);
|
Program Output: -Previous: 0061, New: 0020, Result: 0061
List File:
Code: |
.................... i16_previous = SPI2CON1;// Get previous state.
11C2: PUSH 262
11C4: POP 131A
.................... i16_new = 0x0020; // Data we are sending...
11C6: MOV #20,W4
11C8: MOV W4,131C
.................... SPI2CON1 = i16_new; // Write data to the register
11CA: PUSH 131C
11CC: POP 262
.................... i16_result = SPI2CON1; // Read data from the register
11CE: PUSH 262
11D0: POP 131E
....................
.................... SPI2STAT = 0b1000000000000000; // Enable SPI
11D2: MOV #8000,W4
11D4: MOV W4,260
|
Does anyone know if there a "write protect" mode for the SPI register that I need to disable to accomplish this?
Compiler: 4.104
Device: DSPIC33FJ64GP310-I/PT _________________ Programming for the the real world.
--Chris Burchett
Sylver Technologies Inc.
Last edited by icesynth on Tue Feb 09, 2010 12:15 am; edited 6 times in total |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Mon Feb 08, 2010 11:33 pm |
|
|
From your code snippet, I can't see what you are actually doing, particularly if SPI2CON1 is defined correctly.
There is surely no write protect for SPI registers. SPIxCON should be configured, before setting SPIEN.
From your code, the previous state of SPIEN can't be seen. |
|
|
icesynth
Joined: 03 Sep 2007 Posts: 32 Location: Edmonton, Alberta
|
|
Posted: Tue Feb 09, 2010 12:05 am |
|
|
Updated the code and the result to show the value before writing.... _________________ Programming for the the real world.
--Chris Burchett
Sylver Technologies Inc. |
|
|
icesynth
Joined: 03 Sep 2007 Posts: 32 Location: Edmonton, Alberta
|
Solved |
Posted: Tue Feb 09, 2010 12:18 am |
|
|
Thanks for the tip, it turns out that the SPI module must be disabled before the mode is changed. _________________ Programming for the the real world.
--Chris Burchett
Sylver Technologies Inc. |
|
|
|
|
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
|