CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

EEPROM read/write problem
Goto page Previous  1, 2
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
samus111



Joined: 28 Aug 2014
Posts: 29
Location: Colombia

View user's profile Send private message AIM Address

PostPosted: Thu Sep 11, 2014 7:36 am     Reply with quote

Ok guys, I have finally found what's the root of the problem, but I don't why or how to solve it. The problem is that when I try to read from the EEPROM in addresses higher than 128, the read_memory line simply is ignored, so, when I try to print, the PIC gives a empty word, even, if before to store the data from the EEPROM in the string,I write a word like "hello" in it, when I print, in the places that before only appeared empty spaces, now appears the word hello. i wonder if there is a special reference to read in a memory location higher than 128, because, with the PICKIT 2, when I read the PIC once I have stored the coordinates,in the option EEPROM DATA, appears all the coordinates stored, so that the problem is when I try to read from these positions. some advise?
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Thu Sep 11, 2014 7:37 am     Reply with quote

Hi,

Taking a step back a bit. You show a bunch of NMEA strings derived from a "log file from the serial port monitoring". What exactly does this mean? I assume you've got the GPS connected to your PC, and that is what you are seeing, right? A much better thing to show us would be what you MGPS() function is actually receiving. Also, you mention that you need to send 'GPS coordinates' to the satellite modem. What does that mean, Lat. & Long.? If so, you can get this information (for example) from a single NMEA sentence such a GPRMC. You can turn off all the other NMEA sentences that the GPS is sending, and make your life a bit simpler. It seems to me that job #1 is to receive the GPS data correctly first, and then worry about how you'll temporarily buffer it for upload to the satellite modem.

I also agree that too much focus on 'miniaturization' at the outset can hobble your development efforts. Get it working first, and then make it small, while never forgetting your size goals throughout the process.

John
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Thu Sep 11, 2014 7:41 am     Reply with quote

Hi,

Yeah, write a simple test program to loop thru all the available EEPROM addresses, writing a known value in each location. Then follow this up by reading the same locations back. This should take you 5 minutes, and will prove/disprove that you can/cannot write to all EEPROM memory locations.

John
gpsmikey



Joined: 16 Nov 2010
Posts: 588
Location: Kirkland, WA

View user's profile Send private message

PostPosted: Thu Sep 11, 2014 7:52 am     Reply with quote

Sort of what John said - but use a DIFFERENT known value for each location so you don't wrap around and fool yourself as to which location you are reading.

mikey
_________________
mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Thu Sep 11, 2014 7:57 am     Reply with quote

Hi,

I should have been more explicit. I was thinking of something like address 0 gets a value of 0, address 1 gets a value of 1, or some thing similar.

John
samus111



Joined: 28 Aug 2014
Posts: 29
Location: Colombia

View user's profile Send private message AIM Address

PostPosted: Thu Sep 11, 2014 7:59 am     Reply with quote

Well I know, I can send a order to avoid 5 of the six NMEA sentences, because really I only use one of these and I only need the hour, day, Latitude and longitude. but to add this feature, would have to make a connection more between the Tx's PIC and the RX's module, and also, I would have to make a coupling to avoid impedance problems between the Rx's iridium module, Rx's GPS module and Tx's PIC, so that the easy way was to make the program only searching for the NMEA sentence I need (In this case $GPRMC, and was very easy).
I tested the EEPROM memory before in various memory locations, and worked well, I am going to change the logic in the code, for to start from the last byte and finish in the first bytes, I hope this time works, I believe there is a bug in the burned or the CCS compiles.
samus111



Joined: 28 Aug 2014
Posts: 29
Location: Colombia

View user's profile Send private message AIM Address

PostPosted: Thu Sep 11, 2014 8:16 am     Reply with quote

Ttelmah wrote:
If you need to go really small, then just get a core.
Bond this directly to the board.

I've built devices significantly smaller than this, and used much larger PIC's.

Talk to somebody who is a specialist in such things. Your approach is going the wrong way. You need to start with the external stuff. How small each part of this can be made, then 'work back' towards the processor, miniaturising at each step. You will undoubtedly find that simple things like power supply capacitors, will be larger than your processor and all it's connections.....


I didn't understand what exactly do you mean with "core"? It is a special microcontroller or something so? where can I obtain more information?
Ttelmah



Joined: 11 Mar 2010
Posts: 19568

View user's profile Send private message

PostPosted: Thu Sep 11, 2014 9:44 am     Reply with quote

Microchip will sell you (in large quantities), the processor die, cut to just give a core component. If you look at many modern boards, where IC's traditionally sat, instead there is a black blob of epoxy, with no number etc.. These are chip cores, directly bonded to the board. You can nearly double the component density when working this way. Look inside a modern USB memory stick, the 'odds are' that it'll be just a tiny board with four or five such blobs.
samus111



Joined: 28 Aug 2014
Posts: 29
Location: Colombia

View user's profile Send private message AIM Address

PostPosted: Thu Sep 11, 2014 10:50 am     Reply with quote

Thanks to my GOD, I have finally discovered the error and I have been able to solve it. There were a inconsistent with the variable "ms" that currently has the job to indicate the memory address from the EEPROM, I had declared it like long int, but when I changed to int16, it works perfectly, I don't know why there is a incompatibility with the long int in numbers higher than 128 that points a memory address, but well, at least I can now to resume, thanks to everybody, I will post other question if I have troubles more later.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
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