Pages: [1] 2   Go Down
Author Topic: auto reset during the loop()  (Read 1545 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I am new to programming an Arduino (Mega 2560).
I am on a project that manipulates a file.txt on SD card.
After the execution of a function that searches a number in the file my arduino reset. I don't see why.
Have you any idea what can cause this reset?

thank
Logged

Global Moderator
Boston area, metrowest
Offline Offline
Brattain Member
*****
Karma: 435
Posts: 23611
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ooh, that's a good one.

Have any code we can look at?
Does any file manipulation cause that to happen?
Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

New Hampshire
Offline Offline
God Member
*****
Karma: 13
Posts: 779
There are 10 kinds of people, those who know binary, and those who don't.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

After the execution of a function that searches a number in the file my arduino reset.

Just taking a shot in the dark here, since there's no code to look at, but I'd guess you're reading a large amount of data into SRAM, running out of SRAM, and overwriting the stack.  This is a very common cause of Arduino resets.
Logged


Global Moderator
Offline Offline
Brattain Member
*****
Karma: 452
Posts: 18694
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Have you any idea what can cause this reset?

No, sorry.

Read this before posting a programming question
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is the function that creates me this problem:

int rechercheUtilisateur(char numUtilisateur[TAILLE_NUM_UTI]){
    int i, ligne = 1;
    //declaration des tableaux locaux   
    char numString[TAILLE_NUM_UTI];

    //place le pointeur au debut du fichier
    myFile.seek(0);
    //retrieve the ID number of the line
    for(i=0; i<TAILLE_NUM_UTI-1; i++) numString=myFile.read(); 
    numString='\0';

 
    while(strcmp(numUtilisateur, numString)){
        if(!sautDeLigne()){    //move to the next line
          myFile.seek(0);
          return 0;
        }
     
        ligne++;
        //retrieve the ID number of the line
        for(i=0; i<TAILLE_NUM_UTI-1; i++){
          numString=myFile.read();
        }
        numString='\0';
    }
    //place le pointeur au debut de la ligne
    myFile.seek(myFile.position()-TAILLE_NUM_UTI);
    return ligne;
}

It looks in a text file by a user's ID number.


sample text file:

10000001   Marson   Julien   7654   31678   11/05/2012   enseignant   physique   03/04/2012   Fabre   oui   non
10000002   Zygmaniak   Ghislain   55   21234   10/05/2012   etudiant   physique   02/04/2012   Fabre   oui   non
63802020   Verron   Maxime   234   22222   12/05/2012   etudiant   mathématique   04/04/2012   Fabre   non   oui
63802021   Dumont   Tony   34   22   12/04/2012   etudiant   mathématique   04/04/2012   Fabre   oui   non

After the execution of a function that searches a number in the file my arduino reset.

Just taking a shot in the dark here, since there's no code to look at, but I'd guess you're reading a large amount of data into SRAM, running out of SRAM, and overwriting the stack.  This is a very common cause of Arduino resets.

I think I do not use any memory:
Binary sketch size: 17932 bytes (of a 258048 byte maximum)

Thanks
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 505
Posts: 31343
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I think I do not use any memory:
Yes you do, every variable and print string takes up memory.
Why did you not use the code tags like it said in the link Nick pointed you to?
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 452
Posts: 18694
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Please edit your post, select the code, and put it between [code] ... [/code] tags.

You can do that by hitting the # button above the posting area.

What does TAILLE_NUM_UTI look like? The declaration?
Logged

New Hampshire
Offline Offline
God Member
*****
Karma: 13
Posts: 779
There are 10 kinds of people, those who know binary, and those who don't.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



Code:
char numString[TAILLE_NUM_UTI];

Code:
  numString=myFile.read();
  numString='\0';

numString being an array of chars, the above two are, let's say, inappropriate attempts at assignment.
Logged


Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 547
Posts: 45982
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
numString being an array of chars, the above two are, let's say, inappropriate attempts at assignment.
Perhaps you noticed the switch to italics midway through the (poorly posted) code? The assignment is valid, and would be properly apparent if the code was posted properly.
Logged

New Hampshire
Offline Offline
God Member
*****
Karma: 13
Posts: 779
There are 10 kinds of people, those who know binary, and those who don't.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
numString being an array of chars, the above two are, let's say, inappropriate attempts at assignment.
Perhaps you noticed the switch to italics midway through the (poorly posted) code? The assignment is valid, and would be properly apparent if the code was posted properly.

You are foiling my attempted demonstration of one of the less obvious reasons why code tags are important.  No worries, the point should be made anyways.
Logged


Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 547
Posts: 45982
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
You are foiling my attempted demonstration of one of the less obvious reasons why code tags are important.
Oops. Sorry about that.

I think that subtlety is lost on people that can't even post code properly, though. A clue-by-four would be a better tool.
Logged

New Hampshire
Offline Offline
God Member
*****
Karma: 13
Posts: 779
There are 10 kinds of people, those who know binary, and those who don't.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A clue-by-four would be a better tool.

Haha.  That's a new one to me, wasn't really sure what you meant, though what initially came to mind when I read it was  'four letter words'.  After a quick google, I find I'm not all that far off the mark.  I do like the two-by-four analogy more though.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is the function (with the right tags) that creates me this problem:

Code:
int rechercheUtilisateur(char numUtilisateur[TAILLE_NUM_UTI]){
    int i, ligne = 1;
    //declaration des tableaux locaux   
    char numString[TAILLE_NUM_UTI];

    //place le pointeur au debut du fichier
    myFile.seek(0);
    //retrieve the ID number of the line
    for(i=0; i<TAILLE_NUM_UTI-1; i++) numString=myFile.read();
    numString='\0';

 
    while(strcmp(numUtilisateur, numString)){
        if(!sautDeLigne()){    //move to the next line
          myFile.seek(0);
          return 0;
        }
     
        ligne++;
        //retrieve the ID number of the line
        for(i=0; i<TAILLE_NUM_UTI-1; i++){
          numString=myFile.read();
        }
        numString='\0';
    }
    //place le pointeur au debut de la ligne
    myFile.seek(myFile.position()-TAILLE_NUM_UTI);
    return ligne;
}

It looks in a text file by a user's ID number.

Thanks
Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 547
Posts: 45982
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
int rechercheUtilisateur(char numUtilisateur[TAILLE_NUM_UTI]){
You STILL have not told us how TAILLE_NUM_UTI is defined or what its value is. Now, where did I put that clue-by-four?
Logged

Pennsylvania, USA
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Take a closer look at this section of your code:

Code:
    char numString[TAILLE_NUM_UTI];

    //place le pointeur au debut du fichier
    myFile.seek(0);
    //retrieve the ID number of the line
    for(i=0; i<TAILLE_NUM_UTI-1; i++) numString=myFile.read();
    numString='\0';

Specifically:
Code:

   char numString[TAILLE_NUM_UTI];
   for(i=0; i<TAILLE_NUM_UTI-1; i++) numString=myFile.read();
  numString='\0';

Last I checked, read() doesn't return a pointer, it returns a single byte.  That shouldn't even compile...
Logged

Pages: [1] 2   Go Up
Jump to: